4 AttinyVeranstaltung n n n n Organisatorisches In


















- Slides: 18
4. Attiny-Veranstaltung n n n n Organisatorisches In d Timer/Counter-Register iese r Ve nur r. PWM einig anst Zählen, Takten, Mög e a lichk der za ltung k önn exem hlre eiten Übung en w iche plar d e ir s Tim n isch Mittagspause behan er/Co unte deln rs ! D/A-Wandler Übung (auch: Komparator und A/D-Wandler) Ergebnisse/Diskussion. . . A V 1. 3 - Copyright 2010 by G. Heinrichs
Registermodell Pin T 0 nicht mit Taster T 0 verwechseln! A
Drehzahlmesser Unser Attiny soll Drehzahlen ermitteln. Dazu sollen Signale von Lichtschranken oder Tastern für 10 Sekunden gezählt werden. Diese auf 1 Minute hochzurechnen ist dann keine Kunst mehr. . .
Zählen - konventionell Enable INT 0 Config INT 0 = Falling Enable interrupts On int 0 zaehlen zaehler Port. D. 6 Wait 10 Port. D. 6 Portb = End = 0 = 1 = 0 zaehler zaehlen: zaehler = zaehler + 1 return (Signal an INT 0) (Zählbeginn anzeigen) (10 s warten) (Zählende anzeigen)
Zählen mit dem Timer/Counter TCCR 0 B = &B 00000110 Config (externer Timer 0 Takt = counter, über T 0, fallende Flanke, edge = starten) Falling TCNT 0 = 0 Timer 0 (Zähler= des 0 T/C auf 0) Port. D. 6 = 1 Wait 10 Portd. 6 = 0 TCCR 0 B = 0 Port. B = TCNT 0 end . . . (Zählbeginn anzeigen). . . (10 s warten). . . (Zählende anzeigen) Stop (T/C Timer 0 stoppen) (stoppen) Port. B (Zählerstand = Timer 0 ausgeben) (ausgeben). . . TCCR 0 B Bedeutung &B 00000110 Ext. , fallende Flanke &B 00000111 Ext. , steigende Flanke &B 0000 T/C stoppen A
Overflow-Interrupt de n u K. 10 r e d e J en n i e t l erhä 00 1 r e b ü n i e h c Guts Euro! Unser Attiny soll bei jedem 10. Signal also einen Alarm auslösen!
Overflow-Interrupt I
Overflow-Interrupt II Tccr 0 b = &B 00000110 Tcnt 0 = 246 TIMSK. TOIE 0 = 1 SREG. 7 = 1 'ext. Takt, fallende Flanke, starten 'Preset!!! 10 Takte bis zum Overflow 'Overflow-Interrupt ermöglichen 'Interrupts global ermöglichen On Ovf 0 Alarm 'Wenn Overflow-Interrupt. . . ' Oder: On Timer 0 Alarm Do loop 'Hauptprogramm Alarm: Tcnt 0 = 246 Portb = 255 Waitms 10 Portb = 0 Return 'Interruptroutine 'Preset neu einstellen! 'Blitz!
Attiny als Signalgeber Unser Attiny soll nun selbst regelmäßige Signale geben. Schleifen mit Warte -Befehlen sind zwar möglich, halten den Mikrocontroller aber von anderen Aufgaben ab. Auch hier kann der Timer/Counter helfen.
Interner Taktgeber
Taktgeber einstellen - Prescale TCCR 0 B &B 00000001 &B 00000010 &B 00000011 &B 00000100 &B 00000101 &B 00000110 &B 00000111 Bedeutung Timer 0 anhalten Timer 0 = Clock/8 Timer 0 = Clock/64 Timer 0 = Clock/256 Timer 0 = Clock/1024 Takt über T 0, fallend Takt über T 0, steigend
Frequenzgenerator für 440 Hz Portb. 0 über TOV 0 -Interrupt toggeln TOV 0 -Frequenz muss 880 Hz betragen ! ! n! e f ü r p r e Systemfrequenz (Clock): 4 000 b Hz ü Wähle: Prescale = 64 t n e m i Dann: Timerfrequenz = 4 000 Hz / 64 = 62 500 Hz r e jeweils 62 500 / 880 = 71, 02 Signale TCNT 0 p muss x bis. E zum Overflow zählen Im Also: Preset = 256 – 71 = 185 A
PWM – Was ist das? Puls. Weiten. Modulation
PWM mit dem Attiny
Fast-PWM konfigurieren Timer einschalten und Prescale wählen n Vergleichswerte OCR 0 A und OCR 0 B eingeben n Fast-PWM-Mode wählen (sorgt für Sägezahn-Kurve): n • • • n TCCR 0 A. WGM 01 = 1 TCCR 0 A. WGM 00 = 1 TCCR 0 B. WGM 02 = 0 Reaktion einstellen • • TCCR 0 A. COM 0 A 1 = 1 TCCR 0 A. COM 0 A 0 = 1 TCCR 0 A. COM 0 B 1 = 1 TCCR 0 A. COM 0 B 0 = 0 Das Pulsverhältnis wird über den Vergleichswert OCR 0 A eingestellt.
PWM - Programm Tccr 0 a. wgm 01 = 1 Tccr 0 a. wgm 00 = 1 ! ! ! n e f rü 'FAST PWM 'Tccr 0 b. wgm 02 standardmäßig auf 0 p r be 'PWM an OC 0 A (Port. B. 2) Tccr 0 a. com 0 a 1 = 1 Tccr 0 a. com 0 a 0 = 1 Ocr 0 a = 200 'erster Vergleichswert Tccr 0 b = &B 00000101 ‚Timer-Takt ist 4 MHZ/1024 O t i M Do ü p 'Compare Match, clear OC 0 A at TOP o k s o l l i sz Inputbin Vergleichswert Ocr 0 a = Vergleichswert Loop 'Vergleichswert empfangen A
D/A-Wandler Ideen: PWM an OC 0 A (Typ High Low) n Tiefpassfilter benutzen n Sollspannung ~ Vergleichswert OCR 0 A n
A/D-Wandler Das machen Sie mal selbst! A