-
-
Erfahrener Benutzer
Roboter Experte
Hallo,
Sehe mahl die doc2466.pdf (Atmega16)
Zuerst die Timer/Counter1 taktfrequenz definieren mittels den PRESCALER.
PRESCALER: Seite 112, Tabelle 48, Register TCCR1B, bits0-2: CS10/CS11/CS12
000 = Timer/Counter1 angehalten
001 = clkio/1 = 16Mhz/1 = 16MHz = 62,5ns pro stufe (dies heisst: NO PRESCALING)
010 = clkio/8 = 16Mhz/8 = 2MHz = 0,5us pro stufe (PRESCALING)
001 = clkio/64 = 16Mhz/64 = 250KHz = 4us pro stufe (PRESCALING)
... usw
PDF Seite 101:
"The PWM resolution for fast PWM can be fixed to 8-, 9-, or 10-bit or defined by either ICR1 or OCR1A"
Guck mahl Seite 111, Tabelle 47:
Mode 5: (Fast PWM) 8-bit
Mode 6: (Fast PWM) 9-bit
Mode 7: (Fast PWM) 10-bit
Mode 14: (Fast PWM) ICR1
Mode 15: (Fast PWM) OCR1A
Mit 8-bit zahlt Timer/Counter immer von 0 bis 255
Mit 9-bit zahlt Timer/Counter immer von 0 bis 511
Mit 10-bit zahlt Timer/Counter immer von 0 bis 1023
Da kann man probieren ob ein Kombination mit PRESCALER die gewunsten periode von 75us gewahlt werden kann.
Ich wurde folgendes machen.
- Nutze mahl ICR1 als periode (Mode 14)
Mode14 = bits WGM13/WGM12/WGM11/WGM10 in Register TCCR1B und TCCR1A = 1110
- selektiere prescaler 001 (clkio/8 = 0,5us pro stufe) dass rechnet einfacher
- ICR1 soll 149 sein, denn Timer/Counter1 zahlt dann von 0 bis zum 149 = 150 stufen (150 * 0,5us = 75us) und fangt nach stufe 149 (TOP) wieder bei stufe 000 (BOTTOM) an.
(siehe Seite 107, Figur 51, 3e signal von oben)
- OCR1A soll 99 sein damit ein puls von 25us entsteht (stufe 99 bis zum stufe 149 = 50 stufen * 0,5us = 25us).
- Register TCCR1A bits 7 und 6 COM1A1/COM1A0 = 11 damit pin OC1A hoch geht bei stufe 98->99 und niedrich geht bei stufe 149->000
(Seite 109, Tabelle 44)
Pin OC1A = pin nummer 19.
Ich hab obenstehendes nicht ausprobiert aber im prinzip sollte es so gehen.
gruss
Henk
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen