4 AttinyVeranstaltung n n n n Organisatorisches In

  • Slides: 18
Download presentation
4. Attiny-Veranstaltung n n n n Organisatorisches In d Timer/Counter-Register iese r Ve nur

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

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

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

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

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

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 I

Overflow-Interrupt II Tccr 0 b = &B 00000110 Tcnt 0 = 246 TIMSK. TOIE

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

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

Interner Taktgeber

Taktgeber einstellen - Prescale TCCR 0 B &B 00000001 &B 00000010 &B 00000011 &B

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

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 – Was ist das? Puls. Weiten. Modulation

PWM mit dem Attiny

PWM mit dem Attiny

Fast-PWM konfigurieren Timer einschalten und Prescale wählen n Vergleichswerte OCR 0 A und OCR

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

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

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

A/D-Wandler Das machen Sie mal selbst! A