Microcontroller Programmeren in C (MICPRG).
© Harry Broeders.
Deze pagina is bestemd voor studenten van de Haagse Hogeschool - Academie
voor Technology, Innovation & Society Delft groep EQ1.2.
Let op! Deze pagina bevat mogelijk
verouderde informatie, kijk op Blackboard voor de meest recente informatie!
Inhoud.
Het vak microprocessorbesturingen verschaft je inzicht in de
toepassingsmogelijkheden van microcontrollers. Heel veel producten en systemen
zijn tegenwoordig uitgerust met een of meerdere microcontrollers die deze
producten en systemen besturen. Microcontrollers worden ook wel "embedded
controllers" genoemd omdat de controller volledig in het produkt of systeem is
opgenomen (je ziet er aan de buitenkant niets van). Het gebruik van een
microcontroller in producten en systemen heeft (ten opzichte van een volledig
hardwarematige besturing) de volgende voordelen:
- De functionaliteit van de besturing ligt vast in software ("embedded
software") en kan door de fabrikant van het produkt relatief eenvoudig
gewijzigd worden als dat nodig is.
- Het produkt kan met behulp van embedded software vaak
gebruiksvriendelijker, nauwkeuriger, veiliger en energiezuiniger gemaakt
worden.
Omdat de producten waarin een microcontroller kan worden opgenomen sterk
variëren in complexiteit en kostprijs bestaan er een groot aantal
verschillende soorten microcontrollers. In de Microcontroller
FAQ (Frequently Asked Questions) worden de volgende toepassingen van
microcontrollers genoemd:
Embedded processors and microcontrollers are frequently found in: appliances
(microwave oven, refrigerators, television and VCRs, stereos), computers and
computer equipment (laser printers, modems, disk drives), automobiles (engine
control, diagnostics, climate control), environmental control (greenhouse,
factory, home), instrumentation, aerospace, and thousands of other uses. In
many items, more than one processor can be found. Microcontrollers are
typically used where processing power isn't so important. Although some of
you out there might find a microwave oven controlled by a Unix system an
attractive idea, controlling a microwave oven is easily accomplished with the
smallest of microcontrollers. On the other hand, if you're putting together a
cruise missile to solve the problem of your neighbor's dog barking at 3 in
the morning, you'll probably need to use processors with a bit more computing
power. Embedded processors and microcontrollers are used extensively in
robotics. A special application that microcontrollers are well suited for is
data logging. Stick one of these chips out in the middle of a corn field or
up in a ballon, and monitor and record environmental parameters (temperature,
humidity, rain, etc). Small size, low power consumption, and flexibility make
these devices ideal for unattended data monitoring and recording.
Microprocessoren worden zelfs in sportschoenen toegepast!
Schoen met batterij, sensor, motor en microprocessor.
Adidas heeft een "slimme" loopschoen ontwikkeld die zich dankzij een
ingebouwde computerchip aanpast aan de fysieke eigenschappen van de drager en
het soort ondergrond. Als de loper vermoeid begint te worden, worden de
demping en de ondersteuning groter. De fabrikant heeft drie jaar in het
diepste geheim gewerkt aan een techniek die er voor zorgt dat de schoen zich
gedurende de loop aanpast. De microprocessor berekent het juiste niveau van
demping. Volgens Adidas is het 's werelds eerste intelligente schoen. De
wereld van het lange afstandlopen en -trainen zal hier ingrijpend door
veranderen, aldus de fabrikant.
Bron: Artikel uit de Telegraaf
(2004). Deze schoen is niet echt een succes geworden, zie: http://en.wikipedia.org/wiki/Adidas_1
Als je de schoen van Adidas een beetje "over the top" vindt dan moet je eens
kijken naar Verb for Shoe, die
kan zelfs draadloos communiceren!. Deze schoen was overigens ook geen succes
(het bedrijf is niet meer online). Nike heeft een schoen die met je iPod kan
communiceren, zie http://www.apple.com/ipod/nike/.
September 2012 kwam deze GPS schoen in het nieuws: http://www.dominicwilcox.com/gpsshoes.htm,
helaas is het alleen nog maar een prototype. In 2013 heeft Google ook een
experimentele versie van een intelligente schoen gepresenteerd: http://www.artcopycode.com/#/talking-shoe.
In de EQ1.1 heb je al kennisgemaakt met de AVR ATmega32 microcontroller, een
populaire 8 bits microcontroller van Atmel. (Zie: http://www.atmel.com/products/AVR/).
In het onderwijsdeel MICPRG gaan we dieper op deze AVR ATmega32 controller in.
We doen dit zoveel mogelijk aan de hand van concrete voorbeelden en opdrachten
waarbij naast de software ook de hardware een belangrijke rol speelt. Met name
de koppeling tussen de controller en zijn omgeving (de interface) krijgt de
nodige aandacht. In het bijzonder de timer, de analoge en de seriële
interface. Ook het werken met interrupts komt aan de orde. Bij INLMIC heb je de
microcontroller in assembler geprogrammeerd. Bij MICPRG leer je om C te
gebruiken om de microcontroller te programmeren. De C kennis die je bij het
onderwijsdeel GESPRG hebt verworven wordt bij MICPRG gebruikt en verder
uitgebreid. De voordelen van het gebruik van C ten opzichte van assembler zijn:
- Een in C geschreven programma is eenvoudiger te lezen en te begrijpen.
Daardoor is een in C geschreven programma beter aan te passen en
eenvoudiger uit te breiden dan een in assembler geschreven programma.
- In C kunnen we gebruik maken van een gestructureerde aanpak om een
programma beter leesbaar en dus beter aanpasbaar en onderhoudbaar te maken.
We kunnen ook algemeen bruikbare functies ontwikkelen die het hergebruik
van code eenvoudiger maken.
- In C geschreven programma's voor de AVR kunnen eenvoudiger worden omgezet
naar een programma voor een andere microcontroller. Zeker als de
microcontroller specifieke delen van het programma zijn "verborgen" in een
aantal specifieke functies.
Globale leerdoelen.
Let op! Deze webpage is verouderd! Sinds
november 2014 is de juiste informatie te vinden op Blackboard.
Na afloop van deze module:
- Ben
je bekend met microcontrollers en hun toepassingen.
- Ben je bekend met de volgende onderdelen van een microcontroller en hun
toepassingen: parallelle I/O, seriële I/O, timer/counter, timer output
compare en PWM, timer input capture en ADC.
- Ken je de voor- en nadelen van het gebruik van C in plaats van assembler
om een microcontroller toepassing te implementeren.
- Ben je op de hoogte van de beperkingen van het gebruik van C in een
eenvoudige microcontroller toepassing (geen operating systeem, geen
run-time environment, geen hardware ondersteuning voor floating point,
beperkt geheugen) en weet je hoe je met deze beperkingen moet omgaan.
- Kun je de taalconstructies in C die handig zijn bij het programmeren van
microcontrollers (bitwise operators,
structs,typedef, enz) toepassen.
- Kun je een oplossing voor een besturings- en/of meetprobleem met behulp
van microcontrollers systematisch ontwerpen.
- Kun je de voor een microcontroller besturing benodigde software
ontwikkelen in C.
- Ben je in staat om fouten op te sporen in een microcontroller toepassing
door middel van een simulator en/of in circuit emulator (ICE) debugger.
- Kun je een microcontroller gebruiken om de volgende deelproblemen in een
besturing op te lossen:
- Inlezen en aansturen van digitale in- en uitgangen zowel parallel als
serieel.
- Inlezen van analoge ingangen (toepassingen: temperatuur sensor,
weerstandsmeter).
- Tellen van het aantal pulsen in een ingangssignaal (toepassingen:
toerenteller, hartslagmeter).
- Bepalen van de frequentie en/of de pulsduur (toepassingen:
frequentiemeter, capaciteitsmeter, afstandsmeting met behulp van
geluid).
- Aansturen van één of meerdere pulsvormige uitgangssignalen
(toepassingen: stappenmotor, PWM, muziekgenerator).
Ervoor en erna.
Let op! Deze webpage is verouderd!
Sinds november 2014 is de juiste informatie te vinden op Blackboard.
Veel vaardigheden en kennis die je hebt opgedaan tijdens INLMIC en GESPRG
zul je bij MICPRG nodig hebben. De kennis en vaardigheden die je bij MICPRG
gaat verwerven zul je gaan toepassen in het PROBAS project.
Onderwijsvorm.
Let op! Deze webpage is verouderd! Sinds
november 2014 is de juiste informatie te vinden op Blackboard.
MICPRG bestaat uit een theoriedeel (14 uur theorieles) en een practicumdeel
(14 uur/week). De theorie wordt verzorgd door Harry Broeders en het practicum wordt
gegeven door Jesse op den Brouw.
Klik op de namen om een mailtje te sturen. Tijdens de theorie en
het practicum gebruiken we de boeken: AVR
- An Introductory Course van John Morton De
programmeertaal C, 4e vernieuwde editie van Al Kelley en Ira Pohl.
MICPRG omvat 84 SBU's. Als we ervan uitgaan dat het voorbereiden op de toets
je ongeveer 14 uur kost dan moet je dus in 7 lesweken van dit kwartaal 10
uur/week aan MICPRG besteden! 4 uur in de week hebben wij al voor je
gepland (2 uur theorie en 2 uur practicum) de overige 6 uur/week moet je dus
zelf plannen!
Toetsvorm.
Let op! Deze webpage is verouderd!
Sinds november 2014 is de juiste informatie te vinden op Blackboard.
Er worden voor deze module twee deelresultaten vastgesteld waarbij het
eerste resultaat (tentamen MICPRG) een cijfer (1..10) is en het tweede
resultaat (practicum MICPRG) een O(nvoldoende) of V(oldoende) is. Als het
tweede resultaat een O is dan kan de module MICPRG niet worden behaald.
Bij het tentamen mag je boeken en al je aantekeningen gebruiken. Het
tentamen bestaat uit open vragen.
Het practicum wordt in week 7 beoordeeld met Onvoldoende of Voldoende. Bij
dit practicum werk je samen met een medestudent. Probeer een partner te kiezen
die ongeveer net zo goed was bij de vakken programmeren in C (GESPRG) en
inleiding microcontrollers (INLMIC). Als je in de loop van het practicum niet
tevreden bent over de samenwerking bespreek dat dan met de practicumdocent.
Ieder groepje van 2 studenten moet 6 opdrachten uitvoeren. De eerste drie
opdrachten en de vijfde opdracht zijn voor iedereen gelijk en de overige 2
worden door de practicumdocent toegewezen. Het is de bedoeling dat je op dit
practicum leert om een microcontroller te programmeren in C. Je kunt dit alleen
leren door samen met je partner alle opdrachten uit te voeren op zo’n manier
dat je het ook zelfstandig zou kunnen. Het is dus uitdrukkelijk niet de
bedoeling dat je het werk tussen jezelf en je partner verdeeld. Overleg en
discussieer met je partner tijdens het programmeren! Je aanwezigheid op het
practicum is verplicht en wordt gecontroleerd. De practicumopdrachten worden
afgesloten door een demonstratie van het werkende programma aan de
practicumdocent gevolg door een evaluatiegesprek(je). De docent kan dan vragen
naar de manier van aanpak, bepaalde details van jullie oplossing,
achterliggende theorie enz. Het laten nakijken van een programma wat je niet
samen met je partner hebt bedacht en geïmplementeerd wordt beschouwd als
fraude (net zoals het spieken bij tentamens). Om het practicum met
een voldoende af te sluiten moeten alle opdrachten voldoende zijn.
Een herkansing van het practicum wordt aangeboden in week 9 of 10. Dit
practicum kan alleen worden herkanst in het blok dat het wordt aangeboden
(EQ1.2). Als je een practicum in een ander blok wilt herkansen heb je
toestemming nodig van de examencommissie van TISD.
Studiemateriaal.
- Let op! Deze informatie is verouderd! Sinds
november 2014 is het studiematriaal te vinden op Blackboard.
- Studiewijzer (deze pagina).
- Boeken:
- Leerstof:
- Extra leerstof voor studenten die meer willen weten:
- Samenvatting
USART Register Description ATmega32.
- Datasheets
van de ATmega32A.
- Presentaties per onderwerp:
Pas op: De onderstaande presentaties bevatten uitwerkingen van het
huiswerk. Probeer eerst zelf je huiswerk te
maken!
Pas (alweer) op: De onderstaande presentaties kunnen (na de les) nog
bijgewerkt worden (foutjes die gecorrigeerd worden). Om misverstanden te
voorkomen zal ik duidelijk aangeven wanneer de presentaties voor het laatst
bijgewerkt zijn.
- Opmerkingen per les:
- Les 1: Het gepresenteerde programma dat een patroon op de ledjes laat
zien is natuurlijk niet het orginele Knight Rider patroon. Hier is de intro
van de orginele TV serie waar je in het begin het orginele Knight Rider
patroon goed kan zien.
- Handouts van presentaties (verkleind, 6 per pagina).
Pas op: De onderstaande handouts kunnen (na de les) nog bijgewerkt
worden (foutjes die gecorrigeerd worden). Om misverstanden te voorkomen zal
ik duidelijk aangeven wanneer de presentaties voor het laatst bijgewerkt
zijn.
- Heel C op één dubbelzijdig A4-tje.
- Programma's voor de ATmega32:
- opdr1c.c Het Knight Rider programma uit
les 1.
- timer_counter0.c Het programma
uit les 2 van pagina 44 t/m 46 uit het AVR boek.
- timer_counter0_alt.c Een
alternatief voor het bovenstaande programma (huiswerk voor les 3).
- timer_counter0_overflow.c
Nog een alternatief voor het bovenstaande programma die gebruik maakt
van de TOV0 flag (huiswerk voor les 4). Zie ook: Bitn... voor gevorderen: Het strijken van de vlag.
- timer_counter0_busy_wait.c
In dit programma uit les 3 wordt de functie
wacht1sec
gebruikt om LED7 1x per seconde te inverteren.
- timer_counter0_interrupt.c
In dit programma uit les 3 wordt LED7 1x per seconde geïnverteerd met
behulp van de
TIMER0_OVF_vect
interrupt. Je kunt dan in de
main
functie iets anders doen (in dit geval SW6 kopiëren
naar LED6).
- timer_counter0_interrupt_static.c
Dit programma uit les 4 is een variant van het bovenstaande programma
waarbij de globale variabele vervangen is door een
static
lokale variabele.
- adc.c Dit programma converteert de analoge
waarde op pin PA0 door middel van de ADC en laat het 10 bits resultaat
op het LCD display zien (huiswerk voor les 6).
- adc_double.c Dit programma converteerd
de analoge waarde op pin PA0 door middel van de ADC, rekent het 10 bits
resultaat om naar een spanning tussen 0.00 en 5.00 V en laat dit op het
LCD display zien (huiswerk voor les 6).
- timer_counter0_ctc.c Nog een
variant van het programma uit les 2 deze keer met behulp van de CTC
mode (huiswerk voor les 7). Zie eventueel ook: Bitn... voor gevorderen: Het strijken van de vlag.
- timer_counter0_kamertoon.c
Dit programma genereert een kamertoon (440 Hz) op pin PB3 = OC0 van de
ATmega32 met behulp van Output Compare en de CTC mode van
Timer/Counter0 (huiswerk voor les 7). Let op: dit programma zet
een toon op pin PB3. De speaker op het STK500 practicumbord is echter
niet aangesloten op PB3 maar op PD5. PD5 kun je aansturen met
Timer/Counter1.
- timer_counter0_PWM_low_25.c
Dit programma stuurt de LED op PB3 met 25% van het vermogen aan, actief
laag dus geschikt voor STK500 bord (huiswerk voor les 8).
- timer_counter0_counter_interrupt.c
Dit programma geeft telkens na 24 neergaande pulsen op pin PB0 een
interrupt (huiswerk voor les 9).
- USART_echoput.c Dit programma stuurt
elk karakter dat ontvangen wordt via de seriële poort 2x terug
(huiswerk voor les 10).
- USART_echoput_interrupt.c
Idem maar nu met behulp van interrupts zodat je in het hoofdprogramma
iets anders kunt doen (huiswerk voor les 11).
- avrserial.c Dit programma wacht
totdat het karakter 'S' ontvangen wordt via de seriële poort
(9600-7-E-1) en verstuurt dan de string "HalloQ" via de seriële poort
(huiswerk voor les 13).
- knightriderpro1.c Dit programma laat
een eenvoudig aan te passen patroon heen en weer lopen met een
instelbare vertraging.
- knightriderpro2.c Idem als het
bovenstaande programma maar de ingestelde vertraging blijft behouden
als de spanning uitvalt en er wordt minder RAM gebruikt.
- timer_counter_1_sleep.c
Dit programma laat een ledje knipperen met een frequentie van 1 Hz met
behulp van Timer/Counter1. Het programma werkt met een interrupt en zet
de ATmega32 tussen de interrupts in de Idle mode. De ATmega32 gebruikt
in de Idle mode maximaal 8 mA in plaats van maximaal 15 mA in de Active
mode.
- timer_counter_2_sleep.c
Dit programma laat een ledje knipperen met een frequentie van 1 Hz met
behulp van Timer/Counter2 in de asynchrone mode. Het programma werkt
met een interrupt en zet de ATmega32 tussen de interrupts in de Power
Save mode. De ATmega32 gebruikt in de Power Save mode maximaal 20 µA
in plaats van maximaal 15 mA in de Active mode.
- Programma's voor de PC:
- stand.c Dit programma bevat de functie
void printWinnaars(Stand st)
die de winnaars
opspoort in de, in de les behandelde, datastructuur Stand
(huiswerk voor les 12).
- tekstfile_schrijven.c Dit
programma laat zien hoe je een tekstfile kunt aanmaken met een C
programma.
- tekstfile_lezen.c Dit programma
leest de tekstfile stand.txt in en drukt de
inhoud af op het scherm.
- stand_met_tekstfile_simpel.c
Dit programma leest de, in de les behandelde, datastructuur
Stand
in uit de tekstfile stand.txt in en drukt de winnaar(s) af op het
scherm (huiswerk voor les 12).
- stand_met_tekstfile.c Dit
programma doet hetzelfde als het vorige programma maar maakt geen
gebruik van tijdelijke variabelen bij het inlezen.
- demotijd.c Dit programma haalt de
huidige tijd en datum op en drukt die op verschillende manieren af.
- welkedag.c Dit programma leest een
datum in en drukt dan af welke dag het op die datum is.
- Ook op het internet is veel informatie beschikbaar:
- ... googlen kun je zelf ...
- ATmega32A documentatie:
- avr-libc documentatie:
- Voorbeeld tentamen.
- Nog een voobeeld tentamen.
- Tentamen van 25 januari 2013.
- Geen uitwerkingen.
- Als je op de hoogte wil blijven van de laatste ontwikkelingen op dit
gebied dan kun je een gratis abonnement van Bits&Chips aanvragen: http://www.bits-chips.nl/abonneren.html.
- ...
Practicumomgeving.
We maken op
het practicum gebruik van AVR Studio 4, de GNU toolchain voor de AVR (WinAVR),
de JTAGICE mkII en de STK500 met een zelfgemaakt opsteekprintje.
Op de STK500 zijn de volgende verbindingen gemaakt:
- De klok van de ATmega32 is verbonden met de klok die op het STK500 bordje
wordt gegenereerd. Deze klok is instelbaar op het STK500 bord en staat
ingesteld op 3.686 MHz.
- De SPI (Serial Programming Interface) van de ATmega32 is verbonden met de
ISP (In System Programming) connector van de STK500. Hierdoor kan de
ATmega32 via ISP geprogrammeerd worden. Het is echter eenvoudiger om de
ATmega32 via de JTAGICE mkII te programmeren.
- De pinnen PA0 t/m PA7 zijn verbonden met de drukknoppen aan de voorkant
van de STK500. Je mag deze alleen gebruiken als de schakelaar rechtsboven
op de stand "Switches" staat. Schakelaar PA0 werkt alleen als de
potentiometer (rechtsboven) in het midden staat. De schakelaars zijn actief
laag (ingedrukt = 0, niet ingedrukt = 1).
- De pinnen PB0 tm PB7 zijn verbonden met de LEDs aan de voorkant van de
STK500. De LEDs zijn actief laag (1 = LED uit, 0 = LED aan).
- De pinnen PD0 (RXD) en PD1 (TXD) zijn via een RS232 driver verbonden met
de RS232 spare connector (rechtsboven). Deze connector is via een seriële
kabel verbonden met de PC.
- De JTAG pinnen PC2 t/m PC5 van de ATmega32 zijn via de opsteekprint
verbonden met de JTAGICE mkII. Dit is het blauwe kastje aan de linkerkant.
Deze In Circuit Emulator is via een USB kabel verbonden met de PC en maakt
het mogelijk om een programma in de ATmega32 te laden en dit programma te
debuggen. Het is m.b.v. AVR Studio mogelijk om het programma op een
bepaalde plaats te stoppen (breakpoint) en variabelen te bekijken
(watches). Ook kunnen de interne registers van de ATmega32 bekeken worden
(I/O View).
Het opsteekprintje bevat:
- Een LCD display. Dit display is aangesloten op PA1 tm PA7 van de
ATmega32. Er is C code beschikbaar waarmee dit LCD
eenvoudig beschreven kan worden.
- Een potentiometer waarmee een spanning tussen 0 en AREF ingesteld kan
worden. AREF van de target AVR controller is instelbaar op het STK500 bord
en staat ingesteld op 5.0 V.
- Een speaker aangesloten op PD5.
- Een frequentiegenerator. Deze generator levert een frequentie van
ongeveer 4 KHz en is aangesloten op PB1 en PD6 van de ATmeg16. De
frequentie kan verlaagd worden door een externe condensator aan te sluiten
tussen de zwarte en blauwe connector.
- Een horloge-kristal van 32.768 KHz op PC6 en PC7 zodat timer 2 als Real
Time Clock gebruikt kan worden.
- Een circuit waarmee een weerstand gemeten kan worden. Deze weerstand moet
worden aangesloten tussen de rode en de zwarte connector.
- Een TC72 digitale temperatuursensor met SPI interface die via de SPI bus
van de ATmega32 uit te lezen is.
- Een PCF8563 RTC (Real Time Clock) die via de I2C bus van de
ATmega32 te programmeren is.
- Een PCAA9555 16 bit I/O poort die via de I2C bus van de
ATmega32 aan te sturen is. 6 van de outputs zijn verbonden met LEDs en 2
van de inputs zijn verbonden met schakelaars (links).
Details over het opsteekprintje kun je hier vinden: STK500 opsteekprintje.
Meer informatie over de gebruikite software tools:
Je kunt deze tools ook thuis installeren:
Speciale plug-in voor AVR Studio:
- Robin Bakels heeft in zijn stageperiode bij onze Elektrotechniek
opleiding een aantal plugins voor AVR Studio 4 ontwikkeld waarmee diverse
componenten aan de AVR simulator kunnen worden toegevoegd:
- LED.
- Schakelaar.
- Knight Rider: LED balk + schakelaar.
- ADC met analoge slider.
- Bierkelder: LED, temperatuursensor, koelelement en verwarming.
- Frequentiegenerator.
- LCD.
- Stackview.
- Deze plugins kun je hier downloaden: AVE AVR Studio
plugins.
Practicumopdrachten.
- Opdracht 1 (week 1). Uiterlijk
inleveren tijdens het practicum in week 2.
In de eerste practicumopdracht maak je kennis met de C programmeeromgeving
voor de ATmega32 microcontroller. Je begint met het testen van een
voorbeeldprogramma. Daarna moet dit voorbeeldprogramma worden
uitgebreid.
Opdracht 1: Knight Rider.
-
- Opdracht 2 (week 2). Uiterlijk inleveren tijdens
het practicum in week 3.
Bij deze practicumopdracht gebruik je de Timer interrupt van de ATmega32 om
de eerste opgave "op tijd" te laten lopen.
Opdracht 2: Timer interrupt.
-
- Opdracht 3 (week 3). Uiterlijk inleveren tijdens
het practicum in week 4.
In deze practicumopdracht leer je de Analoog naar Digitaal Converter (ADC)
van de ATmega32 te gebruiken om je bier op temperatuur te houden!
Opdracht 3: Bierkelder.
-
- Opdracht 4 (week 4). Uiterlijk inleveren tijdens
het practicum in week 5.
In deze practicumopdracht gebruik je de Output Compare of PWM mode van een
van de Timer/Counters van de ATmega32 om een pulsvormig signaal te
maken.
Let op! De practicumdocent zal je 1 van de 3 onderstaande opdrachten
toewijzen.
Opdracht 4a: Muziekgenerator.
Opdracht 4b: Morsegenerator.
Opdracht 4c: Dimmer.
-
- Opdracht 5 (week 5). Uiterlijk inleveren tijdens
het practicum in week 6.
In deze practicumopdracht leer je met behulp van een van de Timer/Counters
van de ATmega32 een pulsvormig signaal te meten.
Opdracht 5: Periodetijdmeter.
-
- Opdracht 6 (week 6). Uiterlijk inleveren tijdens
het practicum in week 7.
In deze practicumopdracht gebruik je de USART van de ATmega32 om via een
seriële verbinding te communiceren met een PC.
Let op! De practicumdocent zal je 1 van de 2 onderstaande opdrachten
toewijzen.
Opdracht 6a: Voltmeter.
Opdracht 6b: Capaciteitsmeter.
Beschikbaar materiaal voor het practicum:
- Include en library files:
- Testprogramma's:
- t.hex Dit testprogramma is bedoeld om de
STK500 LEDs en schakelaars te testen. De schakelaars worden uitgelezen
en weergegeven op de LEDs.
- f.hex Dit testprogramma bepaalt de frequentie
in Hz van het signaal op PD6 en PB1 en geeft dit elke kwart seconde
weer op het LCD. Dit programma kan gebruikt worden om de 555 timer te
testen.Telkens als ledje PB7 knippert wordt het display opnieuw
beschreven.
- p.hex Dit testprogramma bepaalt de pulsduur
in µs van het signaal op PD6 en PB1 en geeft dit elke kwart seconde
weer op het LCD. Dit programma kan gebruikt worden om de 555 timer te
testen. Telkens als ledje PB7 knippert wordt het display opnieuw
beschreven.
- v.hex Dit testprogramma meet de analoge
spanning op PA0. De waarde (in V) wordt naar het LCD geschreven. Dit
programma kan gebruikt worden om de ADC van de ATmega32 te testen.
- s.hex Dit testprogramma stuurt alle seriële
karakters (9600 Baud, 7 bit mode, geen pariteit en 1 stopbit) die via
de seriële ingang (PD0 = RxD) binnenkomen weer terug via de seriële
uitgang (PD1 = TxD). Dit programma kan gebruikt worden om de seriële
poort van de ATmega32 te testen.
- speaker-tst.hex Dit programma test
de speaker van het opsteekprintje. De speaker maakt alleen geluid als
de schakelaar SW2 wordt ingedrukt.