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