Programmering av inbyggda system



Relevanta dokument
Demonstration och konsultation Arbetsbokens avsnitt 5 och 6 LCD Grafisk display Introduktion till laboration 3

Programmering av grafisk display

Programmering av grafisk display

GPIO - General Purpose Input Output

Structs och funktionspekare

Ulf Assarsson. Grafisk display + seriekommunika3on (USART) Läromoment: USART Grundläggande C-programmering del 2

GPIO - General Purpose Input Output

Demonstration och konsultation Arbetsbokens avsnitt 7 Händelsestyrt processbyte Förberedande inför laboration 4

Övning 7. Timer, serieport

Enkla datatyper minne

Tentamen med lösningsförslag

Digitala Projekt (EITF11) Hemlarm

Tentamen med lösningsförslag

Demonstration och konsultation Arbetsbokens avsnitt 8 Ett exempel på spelprogrammering Kan vara till hjälp inför laboration 5

#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;

Växtviskaren EITF11 Digitala projekt VT15, I12

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Maskinorienterad programmering

Digitala Projekt(EITF40) - Larm

Exempelsamling Assemblerprogrammering

Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan.

Tentamen med lösningsförslag

Maskinorienterad programmering

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Övning 6. Parallellport, timer

Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

Digitala Projekt(EITF40) - Larm

Maskinorienterad programmering

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

Feeding Daisy. EITF11 Lunds Tekniska Högskola. Grupp 12: Pontus Akervall Louise Landare Anton Schölin. En automatisk blomvattnare

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Maskinorienterad programmering

Tentamen PC-teknik 5 p Lösningar och kommentarer

Maskinorienterad Programmering LP3-2017/2018

Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs Verónica Gaspes. IDE-sektionen.

Grundläggande C-programmering

6 Lågnivåprogrammering

Maskinorienterad programmering

#include <pic.h> #include <sys.h> char LEFT,RIGHT,MOTORHASTIGHET;

Assemblerprogrammering för ARM del 2

Digitala Projekt. Chip Quiz. Projektmedlemmar: Olov Nordenstam och Linus Hägerbrand. Grupp 9

Programmeringsteknik med C och Matlab

lex källkod lex.l lexkompilator lex.yy.c C- kompilator lex.yy.c a.out sekvens av tokens a.out input specifikation av tokens mha reguljära uttryck

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

(Lösningsförslag finns sist i denna fil.)

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Programmering av inbyggda system 2014/2015

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

IS1500 Lösningar övning CE_O CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io.

Hantering av textsträngar och talsträngar. William Sandqvist

Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Tentamen med lösningsförslag

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

Grundläggande C-programmering del 4 Mer programstruktur samt Dynamisk minnesallokering Ulf Assarsson

Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

The Phenomenal Doorbell Bilaga 2. Källkod

En kort text om programmering i C.

Och!efter!ca!20!omgångar!hamnade!den!på!en!stabil!konfiguration!enligt!nedan! där!den!stannar!kvar.!

Kla ggvisarskylt. -med en underton av rassel. av Jonathan So nnerup & Gabriel Jo nsson

Modbus Seriell Kommunikation

Utkast. Programmering. Signals. Olika typer av program. Sommarkurs Avbrott i mjukvara.

Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00

Användning av stack: evaluera uttryck i RPN

EITF40 - RFID-terminal. Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6)

printenv sort pager printenv grep args sort pager

OOP Objekt-orienterad programmering

Projektrapport - RoboWalter

Lathund. C för inbyggda system

Datorteknik 2 (AVR 2)

Systemnära programmering Tentamen. Systemnära programmering, 7.5hp 5 november 2012

Effektpedal för elgitarr

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:

DIGITALA PROJEKT (EITF40) Fartmätare

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Maskinorienterad Programmering IT2, LP2-2016/2017

Tentamen PC-teknik 5 p

F4. programmeringsteknik och Matlab

Rapport i Digitala Projekt (EDI021)

Variabler och konstanter

Lösningar till övning CE_O CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io.

Tentamen med lösningsförslag

Maskinorienterad programmering

Datorprojekt, del 1. Digitala system 15 p

Raspberry Pi och Tellstick, ett program i C.

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

AVR 5. Styrning av trafikljus. Digitala system 15 p

Varför behövs det? I Allegro finns t.ex. stöd för:

C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories.

Lathund. C för inbyggda system

Kontrollskrivning Mikrodatorteknik CDT S2-704

Seriekommunikation. Ur innehållet: Nätverkstopologier Nätverksprotokoll Asynkron/synkron seriell överföring Programmering av USART-krets

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

SMD 134 Objektorienterad programmering

Ulf Assarsson. Grundläggande C-programmering del 3. Läromoment: Grundläggande C-programmering del 3

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Drivrutiner för att hantera teckenfönster.

Transkript:

GPIO, In- och utmatning Demonstration och konsultation ST407 GPIO konfigurering och användning Arbetsbokens avsnitt 4 och 5 LCD ASCII-display Keyboard Introduktion till laboration 2 Demonstrationsövning 3 1

Dessa OH bilder listar den kod som konstruerades på DEMO 3 (Och nära relaterad kringkod). Demonstrationsövning 3 2

Keyboard kopplad till Port D. Demonstrationsövning 3 3

Definitioner: Namnger de olika minnes mappade kontroll registren för portkontroll. #define PORT_D_BASE 0x40020C00 #define portd_moder ((volatile uint32_t *) (PORT_D_BASE)) #define portd_otyper ((volatile unsigned short *) (PORT_D_BASE+0x4)) #define portd_ospeedr ((volatile unsigned int *) (PORT_D_BASE+0x8)) #define portd_pupdr ((volatile unsigned int *) (PORT_D_BASE+0xC)) #define portd_idrlow ((volatile unsigned char *) (PORT_D_BASE+0x10)) #define portd_idrhigh ((volatile unsigned char *) (PORT_D_BASE+0x11)) #define portd_odrlow ((volatile unsigned char *) (PORT_D_BASE+0x14)) #define portd_odrhigh ((volatile unsigned char *) (PORT_D_BASE+0x15)) Demonstrationsövning 3 4

Konfigurering av port Moder: 0x55005555 Pupdr: 0x00AA0000 Otyper: 0x00000000 (in/ut) (input pull-down) (ut push-pull) Demonstrationsövning 3 5

I C ser denna konfigurering ut såhär: *portd_moder = 0x55005555; *portd_pupdr = 0x00AA0000; /* Input, pull down */ *portd_otyper = 0x00000000; /* outputs are push/pull */ Detta är del av init_app funktionen. Demonstrationsövning 3 6

Översättning av (rad,col) till knappvärde unsigned char keyb(void) { unsigned char key[]={1,2,3,0xa,4,5,6,0xb,7,8,9,0xc,0xe,0,0xf,0xd; int row, col; for (row=1; row <=4 ; row++ ) { kbdactivate( row ); if( (col = kbdgetcol () ) ){ return key [4*(row-1)+(col-1) ]; *portd_odrhigh = 0; return 0xFF; Demonstrationsövning 3 7

void kbdactivate( unsigned int row ){ switch( row ) { case 1: *portd_odrhigh = 0x10 ; break; case 2: *portd_odrhigh = 0x20 ; break; case 3: *portd_odrhigh = 0x40 ; break; case 4: *portd_odrhigh = 0x80 ; break; case 0: *portd_odrhigh = 0x00; break; int kbdgetcol ( void ){ unsigned short c; c = *portd_idrhigh; if ( c & 0x8 ) return 4; if ( c & 0x4 ) return 3; if ( c & 0x2 ) return 2; if ( c & 0x1 ) return 1; return 0; Demonstrationsövning 3 8

Output på 7-segment display Demonstrationsövning 3 9

void out7seg( unsigned char c ){ static unsigned char segcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7F,0x67,0x77,0x7C,0x39,0x5E,0x79,0x71 ; if( c > 15){ *portd_odrlow = 0; return; *portd_odrlow = segcode[c]; Demonstrationsövning 3 10

ASCII Display Demonstrationsövning 3 11

#define PORT_DISPLAY_BASE 0x40021000 /* MD407 port E */ #define portmoder ((volatile unsigned int *) (PORT_DISPLAY_BASE)) #define portotyper ((volatile unsigned short *)(PORT_DISPLAY_BASE+0x4)) #define portospeedr ((volatile unsigned int *) (PORT_DISPLAY_BASE+0x8)) #define portpupdr ((volatile unsigned int *)(PORT_DISPLAY_BASE+0xC)) #define portidr ((volatile unsigned short *)(PORT_DISPLAY_BASE+0x10)) #define portidrlow ((volatile unsigned char *)(PORT_DISPLAY_BASE+0x10)) #define portidrhigh ((volatile unsigned char *)(PORT_DISPLAY_BASE+0x10+1)) #define portodrlow ((volatile unsigned char *)(PORT_DISPLAY_BASE+0x14)) #define portodrhigh ((volatile unsigned char *)(PORT_DISPLAY_BASE+0x14+1)) Demonstrationsövning 3 12

Intressanta bit-positioner #define B_E 0x40 /* enable */ #define B_SELECT 4 /* välj ascii/lcd */ #define B_RW 2 /* read/write */ #define B_RS 1 /* register select */ Demonstrationsövning 3 13

Sätta/rensa bit void ascii_ctrl_bit_set( unsigned char x ){ unsigned char c; c = *portodrlow; c = ( B_SELECT x ); *portodrlow = c; void ascii_ctrl_bit_clear( unsigned char x ){ unsigned char c; c = *portodrlow; c &= ( B_SELECT ~x ); *portodrlow = c; Demonstrationsövning 3 14

ASCII wait ready void ascii_wait_ready(void){ while( ( ascii_read_status() & 0x80)== 0x80 ); delay_micro( 8 ); Demonstrationsövning 3 15

Skriv tecken på ASCII display void ascii_write_char( unsigned char c){ ascii_wait_ready(); ascii_write_data( c ); delay_micro( 39 ); Demonstrationsövning 3 16

ASCII gotoxy void ascii_gotoxy( unsigned char x, unsigned char y) { unsigned char address; if(y!=1) address=0x40 (x-1); else address=x-1; ascii_write_cmd( 0x80 address); Demonstrationsövning 3 17

Initiera display void ascii_init(){ ascii_wait_ready(); ascii_write_cmd( 0x38 ); /* Function set */ delay_micro( 39 ); ascii_wait_ready(); ascii_write_cmd( 0x0C ); /* Display on */ delay_micro( 39 ); ascii_wait_ready(); ascii_write_cmd( 1 ); /* Clear display */ delay_milli( 2 ); ascii_wait_ready(); ascii_write_cmd( 6 ); /* Entry mode set */ delay_micro( 39 ); Demonstrationsövning 3 18

Main int main(int argc, char **argv){ unsigned char *s ; unsigned char test1[] = "Alfanumerisk "; unsigned char test2[] = "Display - test"; // unsigned char test1[] = "xxxxxxxxxxxxxxxxxxxx"; // unsigned char test2[] = "iiiiiiiiiiiiiiiiiiii"; init_app(); ascii_init(); ascii_gotoxy(1,1); s = test1; while( *s ) ascii_write_char( *s++ ); /* skriv tecken tills tecken är 0 */ ascii_gotoxy(1,2); s = test2; while( *s ) ascii_write_char( *s++ ); return 0; Demonstrationsövning 3 19