Projectwerk microcontrollers:



Vergelijkbare documenten
ES1 Project 1: Microcontrollers

De Arduino-microcontroller in de motorvoertuigentechniek (4)

Arduino CURSUS. door Willy - 09-juni-2017

Microcontrollers Week 5 Interrupts, Timer/Counter 0 Jesse op den Brouw INLMIC/

Microcontrollers. Week 5 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Pulse generator. Output compare. Timer/Counter0. T/C0 count-ingang. T/C0 Output Compare. Microcontroller Programmeren in C. MICPRG 15 januari 2014

De Arduino-microcontroller in de motorvoertuigentechniek (3)

Wat is een busverbinding?

Tinyserir-RC5. Datasheet. Tinyserir-RC5 Page: 1 of 8

Technology, Innovation & Society Delft

Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/

ES1 Project 1: Microcontrollers

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (3)

Wat is Arduino? Arduino = microprocessor (Atmel)

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

Inhoud. 1 De Microcontroller 1. 2 De taal C Declaraties Functies In- en uitvoer Voorwaardelijke opdrachten 41

EmSE presentatie. Starten met de ATtiny2313: Een RGB powerled driver Kees Moerman, 13 juli 2010

Inhoud vandaag. Interrupts. Algemeen ARM7 AIC

Presentatie op bijeenkomst van EmSE: Embedded Systems Eindhoven

VTI Sint-Laurentius De school voor Wetenschap, Techniek en Technologie Pr. Thuysbaertlaan Lokeren info@vti-lokeren.

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

INHOUD SPI : SERIAL PERIPHERAL INTERFACE ALGEMEEN. Videolessen Deel 3 DATACOMMUNICATIE SPI

In- en uitgangssignalen van microprocessoren

MICPRG 15 januari Toets: Theorie:

De seriële poort Jan Genoe KHLIM

Sequentiële Logica. Processoren 24 november 2014

Digitale Systeem Engineering 1. Week 4 Toepassing: Pulse Width Modulation Jesse op den Brouw DIGSE1/

Microcontrollers Introductie INLMIC Jesse op den Brouw INLMIC/

Microcontrollers. Robert Langenhuysen, PA0RYL

EM2 Microcontroller Project. LED cube

Inhoud. 1 De Microcontroller 1. 2 De taal C C in het kort Functies 31

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

Oefeningen Interpretatie I Reeks 6 : Registermachines

De Arduino-microcontroller in de motorvoertuigentechniek (8)

Vogelaar Electronics DRAFT DelphiStamp VE08201

Inleiding microcontrollers. Week 1 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Betaalbaar Home Control. Presentatie op bijeenkomst van EmSE: Embedded Systems Eindhoven

GEÏNTEGREERDE PROEF. VTI Sint-Laurentius. Pakketweegschaal. Industriële informatie & communicatietechnologie SCHOOLJAAR

DCC Lok Decoder met Atmel Tiny45

ES1 Project 1: Microcontrollers

Hoofdstuk 7. Computerarchitectuur

AVR-DOPER MINI ASSEMBLAGE HANDLEIDING + LAYOUT. Geschreven door: Tom Vocke

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 3: Tijd, licht en warmte

Inductiemeter via de parallelle poort

Inhoud. 1 De Microcontroller 1. 2 De taal C C in het kort Functies 31

FORTH op de 80C535 processor met het ATS535 board.

ATmega op het web (1)

K2-Electronics. Project IB2 Mk-II Status Final Revisie 0.6 Datum okt P. C. Krom, F. W. Krom. Auteur(s)

C:\PIC\Navigatielichten\Navigatielichten.c

Voorwoord Inleiding tot de microcontrollertechniek Toepassingsgebieden van microcontrollers 14

WZ FS 2-2-FFSK 12.5kHz. Korte handleiding

Interface Technieken. Roggemans M. 2012

Peripheral Interface Controllers. BRAC clubavond PE2WDO

Programmering Tiny45 voor de DCC locdecoder

2 Algemene opbouw van een computersysteem

Software beschrijving Epoluthon 2.0

Seriële bluetooth verbinding ATmega128

Stappenmotor Interface. Controller

Het µclab voor Arduino UNO, NANO en Arduino UNO pincompatible

Microcontrollers Labo

Getalformaten, timers en tellers

CTCSS Encoder Super Flexibel Ontwerpen met een Arduino Nano

Digitale technieken Microprocessoren

Sequentiële schakelingen

MODBUS remote I/O-unit type MODBUS4S110

Besturingspaneel v Raam E-systeem functie omschrijving v109

Elektronische dobbelsteen met de ATtiny2313

Handleiding HCS VB5248

Computerarchitectuur en netwerken. Memory management Assembler programmering

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

TECHNISCHE UNIVERSITEIT EINDHOVEN FACULTEIT DER TECHNISCHE NATUURKUNDE

De Arduino-microcontroller in de motorvoertuigentechniek (2)

Microcontrollers. Bart Kardinaal E Verslag microcontrollers Rev 1.0 Status definitief.

REGISTERS. parallel in - parallel uit bufferregister. De klok bepaalt het moment waarop de data geladen worden. Mogelijke bijkomende ingangen:

Slimme schakelingen (2)

PIC Callgever Door PA1RUM

Tentamen Computersystemen

Inhoudsopgave LED dobbelsteen

von-neumann-architectuur Opbouw van een CPU Processoren 1 december 2014

Informatiebundel ADuC832 Motor interface bord MGM/[dp]

7,6. Samenvatting door A woorden 12 april keer beoordeeld. Natuurkunde. Natuurkunde Systemen. Systemen

Programma HCC!Forth komende zaterdag

18 Embedded systemen 1

DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie

Interfacetechnieken Studiehandleiding

Gebruiksaanwijzing AVR910 USB Programmer

Programmeren met Arduino-software

Handleiding HCS VB5224

Besturingssystemen: WPO

RAM geheugens. Jan Genoe KHLim. Situering RAM-geheugens. Geheugens. Halfgeleider Geheugens. Willekeurig toegankelijk geheugen

De CPU in detail Hoe worden instruc4es uitgevoerd? Processoren 28 februari 2012

Een Simpele RF Ontvanger

Een intelligent DMX netwerk

Handleiding HCS VB5238

De AVR Microcontroller programmeren met GCC

UART Registers. De AVR - UART

Transcriptie:

Projectwerk microcontrollers:

Doel van het labo Kenmerken van microcontrollers bestuderen Zelfstandig bestuderen van onbekende componenten aan de hand van technische documentatie (datasheets, schema s, ) Zelfstandig analyseren en oplossen van een typisch praktisch microcontroller probleem Realtime debugging technieken

Vereiste voorkennis Microprocessoren C (gebruik van pointers!!!) Basiskennis analoge en digitale elektronica

Evaluatie 10pt: Voltooiingsgraad opdracht (testbenches niet vergeten!!!) 5pt: Kwaliteit code Commentaar (belangrijk: becommentariëring functies) Modulariteit, parametriseerbaarheid Vermijden van blocking code (wordt verder besproken) Leesbaarheid code (geen spaghetti code!) 5pt: Permanente evaluatie Nakomen van afspraken, efficiëntie in foutoplossen, inzet,

Praktische afspraken Cursustekst Aanwezig in mappen in het labo Te downloaden van de labowebsite

Belangrijkste kenmerken MICROCONTROLLER geheugen en interface logica zijn geïntegreerd in één IC Zeer snel in te zetten: als enige externe component is een klokkristal nodig. Criteria voor het gebruik van microcontrollers Compact (weinig randcomponenten, hoge integratiegraad, kleine package) Zeer zuinig (enkele ma) Goedkoop Flexibel (herprogrammeerbaar) < -- > vaste logica Toepassingen: automotive (parkeersensor, ECU, airbags, ruitenwissers, ) Batterypacks Motorcontrollers Domotica De ATMEGA128 is lid van de AVR reeks, gaande van ATTINY controllers met 1kB geheugen, kostprijs ca 1 EUR tot ATMEGA controllers met 256kB geheugen, kostprijs ca 15 EUR In tegenstelling met 6809 & PC: in de AVR microcontrollers wordt een Harvard architectuur gehanteerd: gescheiden programma en data bus. Voordeel: terwijl data gelezen/geschreven wordt kan de volgende instructie uit het programmageheugen opgehaald worden

zie datasheet p3

Klokoscillator Microcontroller: synchroon systeem klok nodig Bron: Extern signaal (via XTAL1 pin) Extern klokkristal (via XTAL1 en XTAL2 pinnen) Interne RC oscillator (minder stabiel) Hoe lager de klokfrekwentie hoe minder vermogen verbruik; 1MHz: 12mW 20MHz: 200mW Ter vergelijking: moderne PC processor: 50-100 W!! De AVR microcontrollers zijn RISC processoren elke klokcyclus wordt meestal één assembler instructie afgehandeld.

Programma geheugen 128 kb programmageheugen; genoeg voor ca 20000 regels C code, afhankelijk van de structuur, gebruikte libraries. Georganiseerd in 64k x 16 bit (instructies zijn 16 bit breed) Harvard gescheiden van datageheugen FLASH geheugen: behoudt zijn inhoud bij stroomuitval Programmeren van het geheugen Via een parallele programmeerinterface (weinig gebruikt) Via een JTAG interface Door de microcontroller zelf ( Bootloader!) Via een SPI interface C file Codevision.ASM file Assembler.HEX file Nuttig :.LST file: gegenereerde ASM code, samen met de oorspronkelijke C code

SPI MOSI 0 1 2 3 4 5 6 7 SCK MISO een SPI interface is in weze een schuifregister Data wordt via de MOSI lijn ingeshift (input) Data wordt via de MISO lijn uitgeshift (output) Synchrone serïele bus: het kloksignaal wordt via een externe lijn doorgegeven

Const data in FLASH onder Codevision Codevision C compiler kent een uitbreiding om data in FLASH te stockeren: flash keyword Bv flash char t[]={ Hello world }; Deze data is read only! t[0]= a ; ongeldig!!

Data A/D bus 8 bits brede databus, 16 bit brede adres bus 32 registers waarvan een aantal voor indirecte addressering worden gebruikt Veel meer dan klassieke processoren zoals 6809 224 I/O registers (aansturen van randapparatuur) 64 laagste I/O registers zijn bitadresseerbaar 4 kb interne data SRAM Via externe (gemultiplexte) A/D bus uitbreidbaar (ook voor externe randapparatuur)

Organisatie van data memory door de Codevision C -compiler Functieparameters Lokale variabelen Interrupt context-save data Globale variabelen Static variabelen Functie en interrupt return adressen (PC push) Heap, gebruikt door malloc()

Bitadressering in codevision Bijvoorbeeld: PORTB.3 = 1; SBI 0x18,4 PORTB = PORTB 0b00001000; LDS R30,0x18 ORI R30,8 STS 0x18,R30 Echter alleen mogelijk op onderste 64 IO reg. PORTG.4=1; ongeldig!! (PORTG heeft IO reg adres 69)

AVR C datatypes char : 8 bit int = short : 16 bit long: 32 bit float = double : 32 bit

EEPROM 4 kb EEPROM FLASH: wordt gewist, herschreven in blokken (banken) EEPROM: wisbaar en schrijfbaar per byte Toepassing: calibratiegegevens, gebruikersinstellingen, Toegang via speciale I/O registers. Niet rechtstreeks in A/D bus gemapt Kan ook via programmeerinterface gewist/beschreven worden Schrijven: zeer traag;10ms per beschreven byte Opgelet: gespecifieerd op 100 000 x schrijven/wissen

EEPROM data onder Codevision Codevision C compiler kent een uitbreiding om data in EEPROM te stockeren: eeprom keyword Bv eeprom int ep_a=45; Aanrader: EEPROM data manueel bufferen in RAM sneller

IO pinnen Toegang via IO registers op de A/D bus In totaal zijn er 45 IO pinnen op de microcontroller; onderverdeeld in PORT A,B,C,D,E,F,G Elke PORT heeft max 8 lijnen (gecodeerd in een 8 bit register) Elk van deze lijnen kan onafhankelijk als input of output geschakeld worden (via een Data Direction register). Verder is het mogelijk softwarematig een pull-up weerstand in te schakelen indien een lijn als input wordt gebruikt Veel van deze lijnen worden ook voor alternatieve functies gebruikt zoals comparators, UARTs, kloklijnen,adc s, In veel gevallen zal deze alternatieve functie de controle over de bijhorende pinnen overnemen.

Interrupts (1) Signaal (extern of intern) Onderbreekt de normale programmaflow, dwingt de processor naar een subroutine te springen Deze subroutine: ISR (Interrupt Service Routine) Na afloop van de subroutine: RETI instructie: processor hervat de programmaflow Doel: dringende hardware gebonden activiteiten afhandelen Interrupt onder invloed van timer: tijdskritische activiteiten afhandelen

Interrupts (2) 8 externe interrupt lijnen (op PORTD, PORTE) Configureerbaar voor interrupt op stijgende / dalende flank / laag niveau Verder nog 26 interne interrupt lijnen Deze lijnen worden door interne randapparatuur (UARTs, ADC, Timer, ) aangesproken Aan / uit schakelen van interrupts Elke interrupt kan via een MASK bit aan/uit geschakeld worden Een Global Interrupt Enable (GIE) bit schakelt alle interrupts gezamenlijk aan/uit Een interrupt die getriggerd is, wordt via een FLAG bit gemarkeerd. Indien MASK actief: ISR wordt uitgevoerd

Interrupts onder Codevision Interrupt keyword: speciaal type functie: Bv interrupt[ext_int0] ExterneInterrupt(void) { } Deze functie wordt automatisch aangeroepen, onderbreekt de normale programma flow. Interrupt definities (zoals EXT_INT0) zijn terug te vinden in mega128.h

USART USART: Universal Synchronous/Asynchronous Receiver and Transmitter We gebruiken USART meestal als UART Deze UART kan mits een spanningsconverter rechtstreeks een RS-232 bus aansturen/uitlezen. Twee externe lijnen nodig: Transmit, receive Schrijf en leesoperaties kunnen onder interrupt gebeuren Instelbaar (baudrate, lengte, startbits, stopbits, interrupts, ) via configuratie registers (UBRRx, UCSRxA, UCSRxB, UCSRxC) Data schrijven / uitlezen via UDRx register

UART (1) Asynchrone seriële communicatie (geen klok) Point to point

Protocol: Rusttoestand: hoog 1 startbit 5 9 databits (meestal 8) Optioneel: pariteitsbit 1 of 2 stopbits (meestal 1) UART (2) Transmissiesnelheid: Bepaald door de BAUDRATE = 1/T Standaardbaudrates (300, 1200, 2400, 4800, 9600, 19200, 38400, 57600,115200) T

UART (3) ATMEGA128 UART: Logische 0: 0V Logische 1: 5V RS-232 standaard (COM poort PC) Logische 0: 10 tot 15 V Logische 1: -10 tot -15 V Convertor nodig tussen ATMEGA128 UART en COM poort

Timer / Counters (TC s) Op de A/D bus: 4 TC s TC0, TC2 : 8 bit TC1,TC3 : 16 bit Een TC is opgebouwd rond een binaire teller Wordt geklokt op een opgedeelde (prescaled) processorklok (bv /4 /8 /64, ) De telstand kan softwarematig gezet/gelezen worden (TCNTx register) Verschillende werkingsmodes Configuratie via TCCRxA, TCCRxB, TCCRxC, TIMSK

Normal mode De teller loopt in opwaartse richting tot de maximale waarde. Daarna springt deze terug naar 0 (overflow) De maximale waarde (MAX) wordt bepaald door de breedte van de TC. Bij overflow kan een interrupt gegenereerd worden

Timer output compare: TCNT (tellerregister) telt in opwaartse richting Als TCNT = OCR output compare actie! Output compare actie: Genereren van een interrupt Set,reset of toggle van een OC pin (meerdere OC s per TC) Meerdere OC eenheden per TC

Timer output compare: Voorbeeld: Klok: 10MHz, Timer 1 ingesteld op reset van pin PB5 (OC1A) bij output compare actie OCR1A=1000; TCNT1=0; PORTB.5=1; PB5 0µs 100µs

Clear Timer on Compare Grotendeels identiek aan vorige mode Echter: TCNT start terug op 0 na TCNT=OCR Nut: blokgolf / interrupts genereren aan een instelbare frequentie Voorbeeld: Klok: 10MHz, Timer 1 ingesteld in CTC mode, interrupt op TCNT=OCR OCR=1000 Interrupt om de 100 µs

Timer input capture: TCNT (tellerregister) telt in opwaartse richting Bij detectie van een instelbare gebeurtenis (set, reset of toggle) van de IC pin wordt de huidige TCNT tellerstand gekopieerd in ICR

Timer input capture: Voorbeeld: Inkomende blokgolf op PD4 (IC): We wensen de periode / frequentie van deze blokgolf te meten ICR1=TCNT1 IC interrupt ICR1=TCNT1 IC interrupt periode=icr1-oicr1 oicr1=icr1 periode=icr1-oicr1 oicr1=icr1

Pulse Width Modulation (PWM) V PWM I PWM I MAX t H V MAX T t We aanzien R Lamp als constant (geen PTC gedrag) P gemiddeld V max I max D D th T

Phase Correct PWM mode (Pulse Width Modulation) Autonoom genereren van een signaal met continu instelbare pulsbreedte TCNT loopt van 0 TOP 0 TOP is instelbaar Frequentie uitgangssignaal wordt bepaald door bron kloksignaal (processor klok), prescaler en TOP waarde Pulsbreedte wordt in OCR opgeslagen TCNT OC MAX Phase correct PWM TOP OCR t

ADC Successive approximation ADC 10 bit resolutie Max 15 ksps bij volle resolutie, verlaagde resolutie bij hogere fs 13 klokcycli per conversie ADC klok: max resolutie bij fadc < 200 khz 200 khz / 13 = 15 ksps Indien fadc > 200 khz: verminderde resolutie fadc: afgeleid van processorklok via prescaler 8 ingangen (gemultiplext) Eénpolige of differentiële meting Differentiële meting: optionele versterker: x10 of x200 Interne of externe spanningsreferentie Interrupt bij voltooiing conversie mogelijk Single shot of freerun mode Configuratie via ADCSRA en ADMUX register Uitlezen ADC via ADC register

Eénpolige meting Gerefereerd t.o.v. GND en Vref ADC Vin. 1024 V ref Voordelen: Eén aansluiting nodig Nadelen: Gevoelig aan storing. Elektrische layout is belangrijk

Differentiële meting Gerefereerd t.o.v. GND en Vref ADC (V pos V neg V ref ) A 512 Voordelen: Minder gevoelig aan storing Offset spanningen / bias spanning op een signaal kan weggewerkt worden voor sampling Nadelen: Twee aansluitingen nodig Positieve resolutie wordt gehalveerd

Andere randfuncties Watchdog Analoge comparator Two Wire Interface SPI interface

Opdrachten Per groep van 2 studenten Te kiezen tegen zitting 2 Overzicht opdrachten: Bewegingsdetector Temperatuursensor 2D elektronische waterpas PWM motor snelheidsregelaar SONAR

Zie schema cursustekst AVRCON128