Hallo,
ich habe ein Problem die mega128 und 168 im 16-bit PWM Modus zu
betreiben.
Im init habe ich folgendes code:
1 | //TIMER1 initialize - prescale:256
|
2 | // WGM: 7) PWM 10bit fast, TOP=0x03FF
|
3 | // desired value: 100Hz
|
4 | // actual value: 28,125Hz (255,6%)
|
5 | void timer1_init(void)
|
6 | {
|
7 | TCCR1B = 0x00; //stop
|
8 | TCNT1H = 0xFC; //setup
|
9 | TCNT1L = 0x01;
|
10 | OCR1AH = 0x03;
|
11 | OCR1AL = 0x00;
|
12 | OCR1BH = 0x03;
|
13 | OCR1BL = 0x00;
|
14 | ICR1H = 0x03;
|
15 | ICR1L = 0xFF;
|
16 | TCCR1A = 0xC3;
|
17 | TCCR1B = 0x0C; //start Timer
|
18 | }
|
ansteuern tue ich mit folgender funktion:
1 | void PWM(int PWM)
|
2 | {
|
3 | OCR1AH=PWM/0xFF);
|
4 | OCR1AL=PWM%0xFF);
|
5 | }
|
und es geht immer nur mit 10bit...
ATMEL schreibt in den Datenblättern beim 168er würde man über den Timer1
einen und mit dem 128er sogar 6 16-biter PWMs erzeugen können.
Mit dem 128er wollte ich zwei 16bitter als ausgang, undzwar über timer1
und dann OCR1An und OCR1Bn...
Geht auch nur 10Bit. ich versteh das nicht.
Würde mich sehr freuen wenn mir jemand verraten würde wie das mit den
dingern mit 16bit geht.
gruss abdal