Laboration 5 C-programmering på AVR TSEA57 Datorteknik I
|
|
- Daniel Månsson
- för 6 år sedan
- Visningar:
Transkript
1 Laboration 5 C-programmering på AVR TSEA57 Datorteknik I Anders Nilsson 2018 version 0.22
2
3 Innehåll 1 Introduktion Syfte Förkunskaper Material Förberedelser Programspråket C Programbibliotek <avr/io.h> <util/delay.h> <avr/interrupt.h> <avr/pgmspace.h> Datatyper Register och RAM Kommentarer Timers Pre-scaler och jämförelseregister Timeravbrott Generell struktur för C-program Digitalur Uppgift 1 : Digitalur med externa avbrott Uppgift 2 : Digitalur med interna timers Uppgift 3 : Skenbar parallellism
4
5 1 Introduktion 1.1 Syfte Avsikten med den här laborationen är att du ska bekanta dig med C-programmering för AVR-processorn, och använda tabeller i programminnet, avbrott och interna timers. 1.2 Förkunskaper För att på ett bra sätt tillgodogöra sig laborationen behöver man ha essensen av dom tidigare laborationerna i datorteknikkursen. 1.3 Material Allt material som behövs till laborationen finns i labsalen, även labinstruktionen (denna skrift), fast bara då i elektronisk form som PDF-fil från kursen websida. Vill man ha en tryckt kopia så får man skriva ut den själv. Detta är dock inte nödvändigt för att kunna utföra själva laborationen. 1.4 Förberedelser Som förberedelse behöver du ha läst igenom denna laboration. Det är också bra att bekanta sig med programspråket C ur ett generellt perspektiv. En bra källa för detta kan vara följande web-resurs: 5
6
7 2 Programspråket C C är egentligen ett ganska litet språk, med avseende på mängden grundläggande konstruktionsprimitiver, och vid C-programmering för AVR så använder man typiskt begränsade delar av själva C-språket. Dock finns vissa specifika programbibliotek, som man behöver känna till, avsedda enbart för just C-programmering med AVR. Man bör även vara medveten om att AVR-processorn har en tämligen begränsad mängd med arbetsminne (RAM) varför vissa språkkonstruktioner såsom rekursivitet eller dynamisk minnesallokering bör undvikas då det blir svårt att ha koll på mängden arbetsminne som då går åt. AVR-processorn är en enkel 8-bitars processor, som jobbar med relativt låg klockfrekvens, och saknar hårdvarustöd för flyttal. Detta gör att den inte är någon mästare på tyngre beräkningar. Man kan dock göra flyttalsberäkningar på den, men dessa kommer att implementeras i mjukvara och tar då förstås relativt lång tid att utföra. 2.1 Programbibliotek Här visas endast programbibliotek specifika för denna laboration <avr/io.h> Programbiblioteket io.h innehåller definitioner av processorns alla I/O-register och namn på tillhörande bitar i dessa register. Detta bibliotek kan inkluderas i programmet med följande programrad: # include <avr /io.h> Det medför att man i sitt program direkt kan använda sig av namn på register och dess bitar, och dessa namn stämmer överens med de namn på I/O-register som finns beskrivna i AVR-processorns manual. # include <avr /io.h> void main () DDRB = (1 < < PB0 ); // PB0 as output, PB1 - PB7 as input while (1) PORTB = PIND ; // Copy PIND to PORTB 7
8 2 Programspråket C <util/delay.h> Programbiblioteket delay.h deklarerar funktioner för så kallade busy-wait-loopar, dvs tomma programloopar som går runt-runt bara för att det ska förflyta en viss definierad tid. Dessa funktioner är: void _ delay_ ms ( double ms ) void _ delay_ us ( double us ) Funktionen _delay_ms(x ) väntar (loopar runt) programmet i x millisekunder, och med _delay_us(y ) väntar programmet i y mikrosekunder. Eftersom funktionerna använder sig av programloopar där varje resulterande assemblerinstruktion tar en viss tid att utföra så måste C-kompilatorn känna till vilken klockfrekvens som processorn använder, för att kunna konstruera en delay-funktion som väntar den angivna tiden. Dvs, klockfrekvensen måste deklareras som en konstant på följande sätt: # define F_ CPU UL // 16 MHz clock # define F_ CPU UL // Processor is clocked with 16 MHz # include <avr /io.h> # include <util / delay.h> void main () DDRB = (1 < < PB0 ); // PB0 as output, PB1 - PB7 as input while (1) PORTB = 1; // Generate an output... _delay_ms (500); //... on PB0 with... PORTB = 0; //... a frequency of... _delay_ms (500); //... 1 Hz <avr/interrupt.h> Programbiblioteket interrupt.h deklarerar funktionalitet för avbrott. Bland annat så definieras namn på alla avbrottsvektorer. Dessa är: 8
9 Vektornamn Betydelse ADC_vect ADC Conversion Complete ANA_COMP_vect Analog Comparator EE_RDY_vect EEPROM Ready INT0_vect External Interrupt 0 INT1_vect External Interrupt 1 INT2_vect External Interrupt 2 SPI_STC_vect SPI Serial Transfer Complete SPM_RDY_vect Store Program Memory Ready TIMER0_COMP_vect Timer/Counter0 Compare Match TIMER0_OVF_vect Timer/Counter0 Overflow TIMER1_CAPT_vect Timer/Counter1 Capture Event TIMER1_COMPA_vect Timer/Counter1 Compare Match A TIMER1_COMPB_vect Timer/Counter1 Compare Match B TIMER1_OVF_vect Timer/Counter1 Overflow Timer2_COMP_vect Timer/Counter2 Compare Match Timer2_OVF_vect Timer/Counter2 Overflow TWI_vect 2-wire Serial Interface USART_RXC_vect USART, Rx Complete USART_TXC_vect USART, Tx Complete 2.1 Programbibliotek Dessa avbrottvektorer används sedan för att deklarera avbrottsrutiner med funktionen ISR (Interrupt Service Routine). # include <avr / interrupt.h> ISR ( ADC_vect ) // Execute when ADC complete and interrupts enabled // code to read A/ D converted value void main () // code for initialising A/ D converter // code for activating interrupts ; // code for starting A/ D conversion while (1) // code for waiting for interrupt / conversion result Dessutom deklareras funktioner för att 1:ställa respektive 0:ställa I-flaggan i processorns statusregister SREG. Dvs, aktivera respektive inaktivera möjligheten för avbrott globalt i processorn. sei (); // Activate interrupts globally cli (); // Deactivate interrupts globally 9
10 2 Programspråket C <avr/pgmspace.h> Programbiblioteket pgmspace.h deklarerar ett antal funktioner för att läsa data från programminnet (FLASH-minnet). T ex följande funktioner: uint8_ t pgm_ read_ byte ( address ) // Read byte at address in FLASH - memory uint16_t pgm_read_word ( address ) // Read word at address in FLASH - memory Det blir också möjligt att lägga in tabeller i programminnet med en konstant-deklaration tillsammans med ordet PROGMEM på följande sätt: const uint8_ t TABLE [] PROGMEM = 0, 1, 4, 9, 16, 25, 36; // TABLE data include <avr / pgmspace.h> const uint8_ t SQUARE [] PROGMEM = 0, 1, 4, 9, 16, 25, 36; // Square data void main () uint8_ t result ; uint8_ t data = 5; result = pgm_read_byte (& SQUARE [ data ]); // result will be 25 while (1); 2.2 Datatyper Följande datatyper är relevanta vid C-programmering för AVR. Datatyp Storlek Talområde AVR Likvärdig char 8 bitar [0, 255] uint8_t signed char 8 bitar [-128, 127] int8_t unsigned int 16 bitar [0, 65535] uint16_t int 16 bitar [-32768, 32767] int16_t unsigned long 32 bitar [0, ] uint32_t long 32 bitar [-2 31, ] int32_t unsigned long long 64 bitar [0, ] uint64_t long long 64 bitar [-2 63, ] int64_t float 32 bitar [ e-38, e+38] double 32 bitar [ e-38, e+38] float Datatypernas namn är standardiserade i C. Däremot är deras motsvarande storlek och talområde implementations- och plattformsberoende. Dvs, t ex en int på en AVR är inte lika stor som en int på en PC. Ett flyttal (en float) är samma sak som ett flyttal med dubbel precision (en double) på en AVR, medan dessa skiljer sig åt på en PC. 10
11 2.3 Register och RAM Skälen till att storleken på olika datatyper skiljer sig åt är att datatypen anpassats till vad som lämpar sig bäst för plattformen och dess typiska användningsområde. En AVRprocessor är relativt simpel, har låg klockfrekvens och saknar hårdvarustöd för flyttal. Den är helt enkelt inte gjord för att utföra tunga beräkningar med precision. Därav finns egentligen inte heller behovet av flyttal med dubbel precision (double), men av kompatibilitetsskäl kan man ändå använda double fast det kommer att fungera precis som en float. Som programmerare behöver man känna till storleken på olika datatyper för att veta vilka begränsningar som gäller. I en AVR kan det av det skälet vara tydligare att använda sig av den likvärdiga benämningen för heltal, t ex att skriva uint8_t istället för char eller int16_t istället för int. Med t ex uint8_t framgår det att det är ett heltal (int) utan tecken (u för unsigned) med 8 bitars storlek. Utöver datatyperna i tabellen ovan förekommer vanligen datatypen void som är en obestämd datatyp, vilket också kan innebära ingen datatyp. Den används när en funktion inte returnerar eller tar något argument, eller då argumentet är av obestämd typ vilken kan bestämmas senare. 2.3 Register och RAM AVR-processorns uppsättning med generella register (R0 till R31) används inte vid C- programmering. Eller rättare sagt, de används inte av programmeraren, men likväl av C-kompilatorn för att sköta flytt av data mellan minnen och I/O-register m m. Dvs allt som behöver vara variabler får istället deklareras med en datatyp och kommer sålunda att beredas plats i processorns RAM-minne. include <avr /io.h> uint8_ t data ; uint16_t result ; PORTB = data ;... Vilket i assembler skulle kunna motsvaras av:. dseg data :. byte 1 result :. byte 2. cseg lds r16, data out PORTB, r
12 2 Programspråket C Som C-programmerare behöver man alltså inte bekymra sig om hur vilka generella register som kommer att användas eller om och när de behöver sparas på stacken. Detta sköter C-kompilatorn. 2.4 Kommentarer Kommentarer i C-kod kan skrivas på två sätt. Dels som ett stycke då kommentaren inleds med /* och avslutas med */, och dels som avslutning på en rad då kommentaren inleds med // och fortsätter till slutet av raden. /* The following two lines of code will set data direction PB3-0 as outputs and the value 12 to PORTB */ DDRB = 0 x0f ; PORTB = 12; DDRA = 0 xff ; // Data direction for PORTA is all outputs PORTA = 0 xa3 ; // Value to PORTA is 0 xa3 2.5 Timers Pre-scaler och jämförelseregister Processorn ATmega16 har tre inbyggda timers (timer 0, 1 och 2), vilka egentligen bara är räknare som kan fås att fungera på lite olika sätt. Dessa timers kan räkna tiden (egentligen klockcykler) i olika takt via något som kallas pre-scalers. En pre-scaler tar processorns grundfrekvens och delar den med ett av flera fasta värden (t ex 8, 64, 256 eller 1024) och låter den resulterande frekvensen klocka själva timern. På så sätt kan en timer fås att gå i en viss takt, och alla timers kan dessutom gå i olika takt. Timerns räknarvärde kan jämföras med innehållet i ett visst jämförelseregister och när de är lika så kan man få timern att starta om vid 0 och samtidigt orsaka ett avbrott. Detta kallas för att timern jobbar i CTC mode (Clear Timer on Compare match). För att få detta att hända måste en timers relevanta I/O-register konfigureras på rätt sätt. För mer information om detta hänvisas till processorns datablad, avsnitten Timer/Counter0, Timer/Counter1 samt Timer/Counter2. Timer 0 och Timer 2 är 8 bitar stora, dvs de kan räkna mellan Timer 1 är 16 bitar stor och kan således räkna mellan Antag följande scenario. Processorn klockas med en frekvens av 16 MHz, och vi vill få någon timer att orsaka ett avbrott 100 gånger per sekund. Vilken timer ska användas (8 eller 16 bitar), hur ska timerns pre-scaler konfigureras och vilket jämförelsevärde behöver användas för att avbrottet ska komma exakt 100 gånger per sekund? I alla fall så exakt det går att åstadkomma. 12
13 2.6 Generell struktur för C-program I princip behöver man ta grundfrekvensen (16 MHz), dela med önskad avbrottsfrekvens (100 Hz) och sedan dela med något pre-scalervärde (8, 64, 256, eller 1024) och resultatet ska då (helst) bli ett heltal. Om det blir ett heltal så blir det exakt rätt resulterande avbrottsfrekvens. Om det inte med någon kombination går att få exakt, så får man ta bästa närmevärde. Resultatet (minus ett) är alltså det som ska placeras i jämförelseregistret. Alltså: / 100 / 1024 = (inte heltal) / 100 / 256 = 625 (heltal!) Heltalet 625 ryms dock inte inom 8 bitar, så därför måste en 16-bitars timer användas. Dvs, 625-1=624 placeras i timerns jämförelseregister, och pre-scalerinställningen sätts till 256. Om man hade nöjt sig med ungefär 100 Hz så hade värdet 155 (156-1) kunnat placeras i jämförelseregistret till en 8-bitars timer med pre-scalerinställningen Timerns mode (t ex CTC) och pre-scalerinställing görs i ett (eller flera) register som heter TCCR* (Timer Counter Control Register), där * byts ut mot något annat beroende på vilken timer som används. Timerns jämförelsevärde sätts i ett register som heter OCR* (Output Compare Register), där * byts ut mot något annat beroende på vilken timer som används. För mer information om detta hänvisas till processorns datablad, avsnitten Timer/Counter0, Timer/Counter1 samt Timer/Counter2 /* Timer2, CTC mode, pre - scaler =1024 */ TCCR2 = (1<< WGM21 ) (0 < < WGM20 ) (1 < < CS22 ) (1 < < CS21 ) (1 < < CS20 ); /* Timer2 compare value : 155 */ OCR2 = 155; Timeravbrott En timer kan orsaka avbrott vid olika händelser. T ex då timern uppnått ett visst jämförelsevärde eller då timern nått sitt maximala värde och slår om till noll. Typiskt så är bara den ena av dessa händelser aktuell. För att det ska bli ett avbrott vid önskad händelse så måste vissa bitar 1-ställas i ett register som heter TIMSK (Timer/Counter Interrupt Mask Register). För mer information om detta hänvisas till processorns datablad, avsnitten Timer/Counter0, Timer/Counter1 samt Timer/Counter2. /* Timer2, enable interrupt on compare match */ TIMSK = (1<< OCIE2 ); 2.6 Generell struktur för C-program Den generella strukturen för ett C-program skulle kunna göras enligt följande: 13
14 2 Programspråket C /* include necessary libraries */ # include <... > # include <... > /* define variables and constants */ uint8_t... const uint8_t... /* declare functions and interrupt service routines */ int function1 (...)... ISR ( INTERRUPT_vect )... /* main program */ int main ( void )... while (1)... 14
15 3 Digitalur 3.1 Uppgift 1 : Digitalur med externa avbrott Konstruera ett digitalur som visar minuter och sekunder, och som använder externa avbrott via INT0 och INT1 för att räkna upp tiden och att multiplexa sifferindikatorerna i displayen. Använd tidbasmodulens frekvenser 1 Hz och 1000 Hz som insignaler till INT0 och INT1. Låt PORTD (bit 0 och bit 1) styra multiplexningen av sifferindikator, och PORTB själva siffermönstret. Uppräkningen av tiden ska göras med en loop. 3.2 Uppgift 2 : Digitalur med interna timers Konstruera ett digitalur som visar minuter och sekunder, och som använder interna timers med avbrott för att räkna upp tiden och multiplexa sifferindikatorerna i displayen. Låt PORTD (bit 0 och bit 1) styra multiplexningen av sifferindikator, och PORTB själva siffermönstret. Uppräkningen av tiden ska göras med en loop. 3.3 Uppgift 3 : Skenbar parallellism Använd lösningen i uppgift 2 och utöka huvudprogrammet med en loop som kontinuerligt växlar mönster (valfritt mönster) på lysdioderna för PORTA med en frekvens av ca 2 Hz. Till detta ska inte timers användas utan en delay-funktion från programbiblioteket delay.h. När det är färdigt ska digitaluret fungera samtidigt som lysdioderna växlar mönster på PORTA. På detta sätt uppnås en form av skenbar parallellism. Metoden med avbrott och huvudloop brukar även kallas för background-foreground-lösning. o-o-o 15
AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser
Namn: Laborationen godkänd: Digitala system 15 hp AVR 3 - datorteknik LTH Ingenjörshögskolan vid Campus Helsingborg Avbrott. Syften med den här laborationen är att introducera avbrott. Avbrott som uppkommer
Digitala Projekt(EITF40) - Larm
Digitala Projekt(EITF40) - Larm Handledare: Bertil Lindvall Kristoffer Sätermark, dt08ks6 Magnus Johansson, dt08mj9 Innehåll 1 Introduktion 1 2 Kravspec 1 3 Hårdvara 2 3.1 knappsats och decoder........................
Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.
ATMega16 Laborationer av Kjell 2 Rev:5 Datum: 29.09.2010 Page 1 of 7 Laboration 4: Knappstuds Drivrutiner för att eliminera störningar. Inledning: Laborationskortet EasyAVR6 har bland annat tryckknappar
Effektpedal för elgitarr
EITF11 - Digitala Projekt Effektpedal för elgitarr Handledare: Bertil Lindvall Ivan Rimac (I05) Jimmy Lundberg (I08) 2011-05-10 Contents Bakgrund... 3 Kravspecifikation... 3 Kravspecifikation Effektpedal...
Digitala Projekt(EITF40) - Larm
Digitala Projekt(EITF40) - Larm Handledare: Bertil Lindvall Erik Oredsson, I-09 Sara Sellin, I-09 2012-05-08 1. SAMMANFATTNING I denna rapport presenteras vårt projekt att bygga ett huslarm från grunden
LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall
LARMANLÄGGNING Digitala Projekt, EITF11 Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall 1. Sammanfattning Vi har byggt ett larm vars syfte är att användas i hemmet. Larmet använder
DIGITALA PROJEKT (EITF40) Fartmätare
ELEKTRO- OCH INFORMATIONSTEKNIK DIGITALA PROJEKT (EITF40) Fartmätare Handledare: Bertil Lindvall Per Fernström, ie09pf7 Albin Nilsson, ie09an4 5/14/2012 1 Abstract The purpose behind this project is to
The Phenomenal Doorbell Bilaga 2. Källkod
The Phenomenal Doorbell Bilaga 2. Källkod #include #include #include //Variabler int flag = 0; int count = 0; int timevect[8]; int bellbutton = 0; int waitbutton
Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan.
Namn: Laborationen godkänd: Digitala system 15 p Datorprojekt, del 2 L T H I n g e n j ö r s h ö g s k o l a n v i d C a m p u s H e l s i n g b o r g Projektlaboration 2, skrivning till LCD. Förberedelser:
#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;
#include #include #include unsigned char num; int count = 0; // antal i lokalen char larmtriggered = 0; //om larmet är utlöst char larmactivated = 0; //om larmet
/* * dancing3.c * * Created: :53:20 * Author: digpi10 */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.
/* * dancing3.c * * Created: 2016-05-19 10:53:20 * Author: digpi10 */ #include #include #include int value; //värde från AD-omvandlaren int limit = 0b0101000000;
Växtviskaren EITF11 Digitala projekt VT15, I12
Växtviskaren EITF11DigitalaprojektVT15,I12 NathalieLiljebrunn,EbbaRiismark,AnnaNorelius LundsTekniskaHögskola Institutionenförelektro ochinformationsteknik Handledare:BertilLindvall,AndreasJohansson 2015
Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation
Microprocessor / Microcontroller Varför? Billiga Innehåller bara det nödvändigaste Kräver få kringkomponenter Enkla att programmera PIC16F887 PIC16F887 In- och utgångar Pinnar på PIC16F887 Exempel: pinne
Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704
Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704 Svar Svar till uppgifterna lämnas på separat papper. En poäng per uppgift. Max 30 poäng. Bonuspoäng beräknas enligt följande tabell: 6-10 poäng
Microprocessor / Microcontroller
Microprocessor / Microcontroller Varför? Industrial Electrical Engineering and Automation Billiga Innehåller bara det nödvändigaste Kräver få kringkomponenter Enkla att programmera PIC16F887 PIC16F887
General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18
F3 Föreläsning i Mikrodatorteknink 2006-08-29 Kärnan i microcontrollern består av ett antal register och en ALU. Till detta kommer också ett antal portar. Det finns 64 st portar. Några är anslutna mot
Projektlaboration 4, synkronisering av klockan
Namn: Laborationen godkänd: Digitala system 15 p L T H I n g e n j ö r s h ö g s k o l a n v i d C a m p u s H e l s i n g b o r g Datorprojekt, del 4 Projektlaboration 4, synkronisering av klockan Asynkron
Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.
CT3760 Mikrodatorteknik Föreläsning 12 Torsdag 2006-10-05 Naxos Pollning Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå. En
Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11)
Skola: Institution : Kurs : Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11) Projekttyp : Rapportsammanfattning Handledare : Bertil Lindvall Studenter : Datum : 2015-05-11
Systemkonstruktion LABORATION REALTIDSPROGRAMMERING
Systemkonstruktion LABORATION REALTIDSPROGRAMMERING Laborationsansvariga: Anders Arvidsson, Björn Lundblad Utskriftsdatum: 2002-10-31 Laboranter: 1 Syfte Denna laboration syftar till att öva användningen
Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.
CT3760 Mikrodatorteknik Föreläsning 2 Tisdag 2005-08-30 Minnestyper. Atmega 16 innehåller följande minnestyper: SRAM för dataminne FLASH för programminne EEPROM för parametrar och konstanter. Minnen delas
EITF11 - Digitala projekt. Hastighetsmätare. Hugo Backmyr Mattias Karlsson
EITF11 - Digitala projekt Hastighetsmätare Hugo Backmyr 2015-05-17 Inledning Syftet med kursen är att illustrera industriellt utvecklingsarbete. Målet med projektuppgiften är en prototyp för vidareutveckling
22/02/16. Arduino Introduktion till Arduino. Arduino. Microcontroller - Embedded systems. Historia Organisation - Ekosystem
22/02/16 Arduino Introduktion till Arduino Historia Organisation - Ekosystem ANDERS J JOHANSSON Hårdavara Mjukvara Kringkomponenter Tips Demos! Microcontroller - Embedded systems Inbyggda system Processing
Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall
Rapport Digitala Projekt EITF11 2017-05-08 Rapport Fyra i rad-spel Sammanfattning: Detta dokument beskriver arbetsprocessen i det projekt som är en del av kursen Digitala Projekt(EITF11) vid Lunds Tekniska
Rapport i Digitala Projekt (EDI021)
Rapport i Digitala Projekt (EDI021) Grupp 6 Daniel Raneland, dt05dr1 2009-03-01 1 Sammanfattning Idag är det väldigt vanligt att man har en termometer hemma som mäter temperaturen både inomhus och utomhus.
Feeding Daisy. EITF11 Lunds Tekniska Högskola. Grupp 12: Pontus Akervall Louise Landare Anton Schölin. En automatisk blomvattnare
Feeding Daisy En automatisk blomvattnare EITF11 Lunds Tekniska Högskola Grupp 12: Pontus Akervall Louise Landare Anton Schölin Handledare: Bertil Lindvall Introduktion... 3 Hårdvara... 3 Processor... 3
Digitala Projekt (EITF11) Hemlarm
Digitala Projekt (EITF11) Hemlarm Karl Nordenstorm, I-12, gem12kno 2014-05-16 Handledare: Bertil Lindvall Sammanfattning Den här rapporten beskriver arbetet bakom hur en prototyp för ett hemlarm har utvecklats
Övning 6. Parallellport, timer
Övning 6 Parallellport, timer 6.1 de2_pio_toggles18 Memory-Mapped addresses LEDG8 LEDR17 LEDR16 LEDR15 LEDR14 LEDR13 LEDR12 LEDR11 LEDR10 LEDR9 LEDR8 LEDR7 LEDR6 LEDR5 LEDR4 LEDR3 LEDR2 LEDR1 LEDR0 LEDG7
EITF40 - RFID-terminal. Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6) 2012-02-28
EITF40 - RFID-terminal Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6) 2012-02-28 Contents 1 Introduktion 3 2 Kravspecifikation 3 3 Prototypen 4 3.1 Hårdvara............................... 4 3.2
Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers
Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers Avbrott generellt F7.1. Avbrott sköts med hårdvara i processorn, man läser av hårdvarumässigt. Polling är en enklare princip för I/O- hantering.
A-del motsvarande KS1
MÄLARDALENS HÖGSKOLA Institutionen för elektroteknik Tentamen Mikrodatorteknik CT3760 Datum 2005-10-28 Tid 08.30 12.30 Svar till A- och B-del A-del motsvarande KS1 Uppgift A1. Vad blir resultatet då instruktionen
Digitala Projekt (EITF11) Larmanläggning
Digitala Projekt (EITF11) Larmanläggning Handledare: Bertil Lindvall 2013-05-20 Caroline Brandt, Jonathan Bratel, Angelika Jansson, Sammanfattning Kursen Digitala Projekt (I) har som syfte att skapa förståelse
Projektrapport - Roterande digital LED-klocka
Projektrapport - Roterande digital LED-klocka Kurs : EITF 11 - Digitala projekt Elever : Axel Truedsson, Erik Lundström, Sara Åkerblom Handledare : Bertil Lindvall Datum : 2017-05-17 Lunds Tekniska Högskola
RAPPORT: DIGITALA PROJEKT
2012-05-14 LTH RAPPORT: DIGITALA PROJEKT Linus Ahlberg, Johan Ryde och Kristin Svensson I-09 Innehåll Inledning... 3 Krav... 3 Ursprungliga krav... 3 Modifierade krav (ej trådlös)... 3 Konstruktion...
Thunder s Truck projektrapport
LTH Thunder s Truck projektrapport EITF11 Digitala projekt 2012-05-10 Abstract The goal of this project was to build a truck operated by an IP-remote. The robot is built using standard parts such as two
Projektrapport Målgång
Projektrapport Målgång Lunds Tekniska Högskola EITF11 Digitala Projekt 2016-05-23 Grupp 3 Författare: Albert Johansson Ludvig Brisby Jeppsson Mattias Hamberg Handledare: Bertil Lindvall 1 Inledning...
Datorteknik 2 (AVR 2)
Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra
Bilen som inte kan krocka
Projektrapport Digitala system EITA15 Bilen som inte kan krocka Gruppmedlemmar: Oscar Skarler, Jonathan Persson, Erik Schiemann och Mohammed Abou Naasa vt 2019 Sammanfattning Inom kursen Digitala system
LEU240 Mikrodatorsystem
Institutionen för data- och informationsteknik 2011-10-11 LEU240 Mikrodatorsystem Vi har tidigare i olika sammanhang sett att det är önskvärt att kunna använda ett högnivåspråk som C för att skriva program
Enkla datatyper minne
Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in
Digitala Projekt EITF11 Grupp 9 Projektarbete Hanna Bondesson Marcus Skog. Reaktionsspel EITF11
Digitala Projekt EITF11 Grupp 9 Projektarbete Hanna Bondesson Handledare: Bertil Lindvall Albin Schurmann 2018-05-19 Marcus Skog Reaktionsspel EITF11 Abstract This report is an outcome of the Digital Projects
Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik
Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 - Inbyggda system - Analog till digital signal - Utvecklingssystem, målsystem - Labutrustningen - Uppbyggnad av mikrokontroller - Masinkod, assemblerkod
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
AVR 5. Styrning av trafikljus. Digitala system 15 p
Namn: Laborationen godkänd: Digitala system 15 p AVR 5 LTH Ingenjörshögskolan vid Campus Helsingborg Styrning av trafikljus. Syftet med laborationen är att styra en trafikkorsning med hjälp av en mikroprocessor.
Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*
Digitala System Projekt - EITA15 VT - 2019 *SUPER DUPER KLOCKAN* Handledare: Bertil Lindvall Studenter: NamWan Chansaeng Janne Stojovski Joakim Svensson Daniel Löfgren Abstract The goal of this project
Ansvarig lärare: Olof Andersson, Telefon 021-101314 (besöker skrivsalen)
MÄLRLENS HÖGSKOL Institutionen för elektroteknik Tentamen Mikrodatorteknik T3760 atum 2005-10-28 Tid 08.30 12.30 nsvarig lärare: Olof ndersson, Telefon 021-101314 (besöker skrivsalen) Om du klarat samtliga
Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.
Digitala System: Datorteknik Minnets komponenter ERIK LARSSON Enhet för indata CPU Enhet för utdata Sekundärminne Programexekvering Program i högnivåspråk.. Z:=(Y+X)*3. Kompilator Exekverbart program i
Lathund. C för inbyggda system
Lathund C för inbyggda system Revision 1 2000-09-21 Anders Arvidsson Jonny Martinsson Synpunkter välkomnas! Innehållsförteckning 1 Introduktion...3 1.1 Assembler kontra C...3 1.2 Kodexempel...3 1.3 MPLAB...4
Det finns en handledning till kortet på hemsidan. AVR STK500.
Laboration 1 (ver 1) Uppgifter: AVR Studio 4.lnk Bli bekant med utvecklingskortet, och AVR studio. Skriva in program för binärräknare. Simulera detta samt ladda ner det till kortet. Förse ovanstående program
Datorteknik ERIK LARSSON
Datorteknik ERIK LARSSON Inledning Ken Thompson och Dennis M. Ritchie utvecklade C Turingpriset( Nobelpris i datavetenskap ), 1983 Alan Turing (1912-1954) För deras utveckling av generell OS teori och
Lunds Tekniska Högskola. I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall
2013 Lunds Tekniska Högskola I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall DIGITALA PROJEKT The objective of the course Digital Project is letting a group of students
ETSA01 Digitala Projekt (I) VT- 13. Projektarbete AC- 58008. Handledare Bertil Lindvall
ETSA01 Digitala Projekt (I) VT- 13 Projektarbete AC- 58008 Victor Bodin Albert Strömberg Alexander Söderberg Handledare Bertil Lindvall 1 Sammanfattning Rapporten behandlar processen kopplat till konstruktionen
Projektrapport - RoboWalter
Projektrapport - RoboWalter Projektarbete i kursen Digitala System (EITA15) vid Lunds Tekniska Högskola (LTH) Grupp 1: Angelika Larsson, Oscar Persson, Albin Andersson och Fanny Zolotarevskaia Handledare:
TEMPERATURMÄTARE MED GRAFRITARE
LUNDS TEKNISKA HÖGSKOLA TEMPERATURMÄTARE MED GRAFRITARE Grupp 6 Jesper Henrikson & Viktor Sköld Handledare: Bertil Lindvall 1 Innehållsförteckning Innehållsförteckning 2 Inledning 3 Kravspecifikation 4
Digitala Projekt: Digitala Projekt, EITF11 - VT17 Oscar Ahlgren, Patrik Lorentsson och Sten Hellberg Handledare: Bertil Lindvall
Digitala Projekt: Arcade Basket Digitala Projekt, EITF11 - VT17, och Handledare: Bertil Lindvall Industriell Ekonomi, Lunds Tekniska Högskola 2017-05-22 Abstract This project is a part of the course Digital
Fö 5+6 TSEA81. Real-time kernel + Real-time OS
Fö 5+6 TSEA81 Real-time kernel + Real-time OS Stackens användningsområde * JSR / RTS : returadress * Temporärdata (push / pop) void myfunc(void) { int i; // hamnar nog i register int test[10]; // hamnar
Källkod. #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define green_diode PD5. #define RS PD4
Källkod #include #include #include #define red_diode PD6 #define green_diode PD5 #define E PD0 #define RW PD1 #define RS PD4 unsigned int password = 1; unsigned
Pulsmätare Digitala Projekt EITF11
Pulsmätare Digitala Projekt EITF11 Grupp 5 Sebastian Mattsson, 900611 ain09sma@student.lu.se Johannes Persson, 880823 ain09jpe@student.lu.se Handledare: Bertil Lindvall Innehållsförteckning Inledning...3
1 Bakgrund 4. 2 Kravspecifikation Definitioner Grundläggande krav Användarfall 5
Larmanläggning Tor Berglund Sebastian Svensson Bromert Projektarbete inom Digitala Projekt EITF11 Institutionen för elektro- och informationsteknik Handledare: Bertil Lindvall 2017-05-20 Abstract In the
Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.
Datorteknik Tomas Nordström Föreläsning 6 För utveckling av verksamhet, produkter och livskvalitet. Föreläsning 6 Vad händer vid uppstart SoC och Kringkretsar, PIO Programmering i Assembler Lab2 genomgång
Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)
Realtidsprogrammering En introduktion Implementering (med exempel från PIC) Utan timing Periodtid varierar beroende på funktionernas exekveringstid. Specificera endast maxtid ( Worst case) och eventuellt
JOFEN-Prototypes. Målsökande pansarvagn. Projektarbete i Kursen EITA15. Jonatan Claesson, Olle Jonasson, Felix Rödén, Edvin Rossi & Nils Olén
JOFEN-Prototypes Målsökande pansarvagn Projektarbete i Kursen EITA15 Jonatan Claesson, Olle Jonasson, Felix Rödén, Edvin Rossi & Nils Olén Handledare: Bertil Lindvall & Lars-Göran Larsson Abstract This
Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...
Abstract Syftet var att konstruera en väder station som håller koll på temperaturen. Huvudfunktionen var att få en grafisk visning av temperaturen över ett visst tidsintervall eftersom vi valde den grafiska
TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1
Halmstad University School of Information Science, Computer and Electrical Engineering Tomas Nordström, CC-lab TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1 Datum: 2012-05- 23 Tid och plats: 9:00 13:00 i
I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström
DST 1 Nicholas Wickström IDE, Högskolan i Halmstad 2009 1 Outline 1 Vad är Hårdvara? (Datorsystemmodell; processor m. periferi, IO, Minne) Typiskt för hårdvarunära programmering (datablad, register, datastrukturer,...)
Maskinorienterad programmering
Externa avbrott Anslutning av extern avbrottsvippa, programmering med konfigurering och hantering av externa avbrott. Introduktion till time-sharing, enkel task-switch. Ur innehållet: NVIC och EXTI (SYSCFG)
EIT. Digitala projekt EITF11. Larmanläggning. Handledare Bertil Lindvall Anna Lindberg I-11 Caroline Vitasp I-11 Eric Eliason I-10
EIT Digitala projekt EITF11 Larmanläggning Handledare Bertil Lindvall 2014-05-14 Anna Lindberg I-11 Caroline Vitasp I-11 Eric Eliason I-10 Sammanfattning I kursen digitala projekt (EITF11) på Lunds Tekniska
CPU. Carry/Borrow IX. Programräknare
Laboration:. Jämförelser mellan assembler och C. CPU ACCA ACCD ACCB 8-bitars ackumulatorer eller 16- bitars ackumulator CCR 1 1 1 SXH I NZVC Flaggregister Carry/Borrow IX IY PC Indexregister X Indexregister
EITF11: Bandkanon Grp 05
EITF11: Bandkanon Grp 05 Kristofer Adolfsson John Karlsson Erik Lagerberg Handledare: Bertil Lindvall Abstract This project was planned and completed during the course EITF11 at Lund Tekniska Högskola
Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne
Programallokering Att placera program i flashrespektive RAM-minne Program i FLASH-minne Bara lokala variabler Globala oinitierade variabler Globala initierade variabler Program med avbrott Program i RAM-minne
Programmeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 6: Filhantering Henrik Björklund Umeå universitet 13 oktober 2009 Björklund (UmU) Programmeringsteknik 13 oktober 2009 1 / 22 Textfiler Filer är sekvenser
Lathund. C för inbyggda system
Lathund C för inbyggda system Revision 2 2001-04-13 Anders Arvidsson Jonny Martinsson Synpunkter välkomnas! Innehållsförteckning 1 Introduktion... 3 1.1 Assembler kontra C... 3 1.2 Kodexempel... 3 1.3
PNSPO! Adressering i Omrons PLC. 14 mars 2012 OMRON Corporation
PNSPO! 14 mars 2012 OMRON Corporation 2/19 Läs detta innan du bläddrar vidare PNSPO! Denna bok är avsedd som ett tillägg till de ursprungliga manualerna för OMRONs produkter. Använd den som en hjälp att
I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.
Laboration:. Jämförelser mellan assembler och C. I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal. Förberedelser:
#include <pic.h> #include <sys.h> char LEFT,RIGHT,MOTORHASTIGHET;
Att avlusa en rad Assembler tar lika lång tid som att avlusa en rad C. Att skriva i C gör att man är utlämnad till kompilatorns sätt att göra assembler koden. Assembler ger fullständig kontroll över tider.
High Core Remote Car X8000 Cool
High Core Remote Car X8000 Cool Ett projekt i kursen Digitala projekt EITF11 Grupp 13 Niklas Ohlsson Anna Rengstedt Per Vingå Handledare: Bertil Lindvall Abstract: This project was made when taking the
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Klassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen
68000 Arkitektur F2: Motorola 68000 I/O signaler Processor arkitektur Programmeringsmodell Assembler vs. Maskinkod Exekvering av instruktioner i 68000 Instruktionsformat MOVE instruktionen Adresseringsmoder
Kla ggvisarskylt. -med en underton av rassel. av Jonathan So nnerup & Gabriel Jo nsson
Kla ggvisarskylt -med en underton av rassel av Jonathan So nnerup & Gabriel Jo nsson May 29, 2012 Abstract This report describes the creation of the Kläggnummerskylt, a project in the course Digital Projects
FRAMTAGNING AV DEMONSTRATORER
Examensarbete - 15 högskolepoäng - C-nivå FRAMTAGNING AV DEMONSTRATORER Jonas Birkelöf Ljudingenjörsprogrammet - 180 högskolepoäng Örebro vårterminen 2009 Examinator: Dag Stranneby DEVELOPMENT OF DEMONSTRATIONS
Lösningar till tentamen i EIT070 Datorteknik
Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 13 mars 2013, klockan 14:00 19:00 i Vic 2 A-D, 3 A-C. Tillåtna hjälpmedel: på tentan utdelad
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler
Datorteknik ERIK LARSSON
Datorteknik ERIK LARSSON C - Inledning Ken Thompson och Dennis M. Ritchie utvecklade C Turingpriset( Nobelpris i datavetenskap ), 1983 Alan Turing (1912-1954) För deras utveckling av generellt OS teori
LTH. EITF11- Digitalaprojekt. Projektrapport WEB
EITF11- Digitalaprojekt Projektrapport 2011-05- 10 WEB Projekt utfört av Per Gifvars och Johan Linåker http://www.eit.lth.se/fileadmin/eit/courses/edi021/sammanfattning/2011/lp4/grupp3/html.html Abstract
0.1. INTRODUKTION 1. 2. Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.
0.1. INTRODUKTION 1 0.1 Introduktion Datorns klockfrekvens mäts i cykler per sekund, eller hertz. En miljon klockcykler är en megahertz, MHz. L1 cache (level 1) är den snabbaste formen av cache och sitter
F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA
F6: I/O hantering Typer av I/O i ett datorsystem Memory mapped Port mapped Protokoll för synkronisering Polling Timed Interrupt DMA Drivrutiner 1 Memory mapped I/O enheter avkodas precis som ett minne
EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)
EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7) 1. Motivation ROM. 8kbyte 2 3 2 10 byte 13 Adressbitar [A12,A0] direkt till ROM-kapsel. RWM. 32kbyte 2 5 2 10 byte 15 Adressbitar
Exempel 4. Användning av en timer
Exempel 4. Användning av en timer Kort beskrivning av Timer/counter1 i ATmega16 Timer/counter1 i ATmega16 består av en 16-bitars räknare och antal register för olika funktioner. Vi skall bara granska hur
Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.
Tomas Nordström Högskolan i Halmstad Dokumentversion 0.1, 2012-04- 01 Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK. Informationen till detta kompendium är
Granska befintlig kod och kommentarer Testa loopbackfunktionen
Lab 5 I denna laboration ska ni testa på hårdvarunära programmering och realtidsprocessning av ljud. Till er hjälp har ni ett enkelt shield till Arduino. Ett shield är som ett skal som man trycker på Arduino
Laboration 2 i Datorteknik- Assemblerprogrammering II
Högskolan i Halmstad 1 (8) - Assemblerprogrammering II Målet med laborationen är att få begrepp om Subrutiner. in/utparametrar. Lokala variabler Maska in bitar till ett register Konstruktion av subrutiner
EITF11 - Digitala Projekt
EITF11 - Digitala Projekt Tvåfaktorslås Lunds Universitet, Lunds Tekniska Högskola Skriven av Erik Mellberg, Hannes Olsson & Zack Jeppesen 22 maj 2018 Sida 1 av 16 Abstract The purpose of this report is
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Föreläsningsanteckningar 3. Mikroprogrammering II
Föreläsningsanteckningar 3. Mikroprogrammering II Olle Seger 2012 Anders Nilsson 2016 1 Inledning Datorn, som vi byggde i förra föreläsningen, har en stor brist. Den saknar I/O. I denna föreläsning kompletterar
Att använda pekare i. C-kod
Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare
AVRStudio på tre minuter. Micke Josefsson, 2005
AVRStudio på tre minuter Micke Josefsson, 2005 Mycket kort intro till AVRStudio Utvecklingsmiljön AVRStudio innehåller en editor för att mata in programmet, en simulator för att under kontrollerade former
Guitar tuner Digitala Projekt (EITF40)
Guitar tuner Digitala Projekt (EITF40) Jakub Gorski, D07 (dt07jg8@student.lth.se) Patrik Thoresson, D07 (dt07pt2@student.lth.se) Handledare: Bertil Lindvall Inlämnad: 2011-03-01 Sammanfattning This project