Forum: Mikrocontroller und Digitale Elektronik Attiny841, PWM Phase Correct auf PA1


von Wellenschmied (Gast)


Lesenswert?

Moin,

versuche seit ein paar Stunden einen 16 bit Phase Correct PWM auf PA1 
eines Attiny841 auszugeben. Auf dem Port passiert leider nichts, und ich 
steh gerade auf dem Schlauch wo ich den (die) Fehler gemacht habe. 
Vermute das was mit dem Ansatz ICR1 als Top Counter nicht stimmt. Habt 
Ihr eine Idee wo ich ansetzen muss?

Danke!
1
main()
2
{
3
        DDRA |= (1<<PA1);
4
5
        TOCPMSA0 |= (1<<TOCC0S0);
6
        TOCPMCOE = (1<<TOCC0OE);
7
8
        ICR1 = 1000;
9
10
        TCCR0A = (1<<COM1B1) | (1<<COM1B0);             
11
        //Mode: Mode 10, WGMn[3:0]=1010, PWM Phase Correct, Top=ICR1
12
        TCCR0A = (1<<WGM11);
13
        TCCR0B = (1<<WGM13);
14
15
        while(1) {}
16
}

von STK500-Besitzer (Gast)


Lesenswert?

Wellenschmied schrieb:
> 16 bit Phase Correct PWM

das wird mit dem Timer0 schlecht gehen.
In dem Datenblatt, das mir vorliegt hat, der nur eine Breite von 8 Bit.

von Wellenschmied (Gast)


Lesenswert?

Danke, ist korrigiert! TOCPMSA0 sollte auch auf TOCC0S1 stehen, wenn ich 
Tabelle 12-7 richtig verstehe, hat aber leider beides nichts gebracht. 
Bin etwas ratlos, ich vermute das ich TOCPMSA0 immer noch falsch gesetzt 
habe für Ausgabe auf TOCC0/PA.

von STK500-Besitzer (Gast)


Lesenswert?

Wellenschmied schrieb:
1
> main()
2
> {
3
>         DDRA |= (1<<PA1);
4
> 
5
>         TOCPMSA0 |= (1<<TOCC0S0);
6
>         TOCPMCOE = (1<<TOCC1OE);
7
> 
8
>         ICR1 = 1000;
9
> 
10
>         TCCR1A = (1<<COM1B1) | (1<<COM1B0);
11
>         //Mode: Mode 10, WGMn[3:0]=1010, PWM Phase Correct, Top=ICR1
12
>         TCCR1A = (1<<WGM11);
13
>         TCCR1B = (1<<WGM13);
14
> 
15
>         while(1) {}
16
> }

Wenn du Timer 1 verwenden willst, solltest du auch die passenden 
Register beschrieben - nicht die des Timer0.

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.