Forum: Mikrocontroller und Digitale Elektronik PWM in 16-Bit Modus mit mega168 oder mega128


von Abd A. (abdal66)


Lesenswert?

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

von Rolf Magnus (Gast)


Lesenswert?

> ich habe ein Problem die mega128 und 168 im 16-bit PWM Modus zu
> betreiben.

Dann gehört dein Posting nicht in die Codesammlung.

Du solltest dir übrigens angewöhnen, die Bits in den I/O-Registern mit 
Namen anzusprechen. Die einzelnen Bits wieder aus den Hexzahlen 
rauszuklamüsern ist wirklich umständlich und nervt.

Wie du in oben im Kommentar schon schreibst, benutzt du den Timer im 
Modus 7 (PWM 10bit fast). Wieso wundert es dich, dass du dann nur 10 Bit 
hast?

von Abd A. (abdal66)


Lesenswert?

...und wie kann mans in 16Bit modul einstellen???

von Johannes A. (Gast)


Lesenswert?

Hallo Abd Al,
ich sehe, Du benutzt ICCAVR. Den kennen hier im Forum allerdings nur die 
wenigsten.
Für das, was Du haben willst, musst Du im AppBuilder den "Waveform mode" 
entsprechend einstellen.

Gruß Johannes


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.