ATTiny841 Timer0 PWM

OP #4542760
Lesenswert?
• ▲
▼
Moin,

Ich initialisiere und teste den Timer0 für Phase Correct PWM so:
1
$regfile = "ATtiny841.DAT"
2

3
$crystal = 8000000                                          'Internal RC
4

5
$hwstack = 100
6
$swstack = 16
7
$framesize = 16
8

9
'WDT off:
10
Reset Watchdog
11
Mcusr.wdrf = 0                                              'WD Reset flag
12
Ccp = &HD8                                                  'Enable protected registers
13
Wdtcsr.wde = 0                                              'WD Enable Off
14

15
Ddra.7 = 1
16
Led Alias Porta.7                                           'Pin 6
17

18
Tccr0a.com0a1 = 1                                           'clear up
19
Tccr0a.wgm00 = 1                                            'Phase correct PWM
20
Tccr0b.cs01 = 1                                             'Prescaler 8 / 256 / 2 = 2kHz
21

22
Ddra.2 = 1                                                  'TOCC1, OC0A, Pin 11
23
Motor Alias Ocr0a
24

25
Enable Interrupts
26

27
Ocr0a = 125
28
Do
29
   Waitms 1
30
   'Toggle Porta.2
31
   Toggle Led
32
Loop

Das ist das komplette Programm wie ich es getestet habe.
Folgendes habe ich geprüft:
Controller läuft, "LED" taktet mit 500Hz wie erwartet.
PortA.2 funktioniert wenn ich den manuell (also in Software) schalte.
OCR0A sollte auf TOCC1 und somit A.2 liegen, wenn das Multiplexing 
default ist.

Nur tut sich an PortA.2 nix per PWM.
Wo habe ich da jetzt Tomaten auf den Augen?

Gruß,
Norbert
Gast #4542857
Lesenswert?
• ▲
▼
Norbert S. schrieb:
> Moin,
>
> So'n Schiet - die Ausgänge muß man nochmal separat im TOCPMCOE
> aktivieren!
> Was soll das denn für einen Sinn machen?
> Naja, jetzt löppt es...
>
> Gruß,
> Norbert

Der Sinn steht doch im Datenblatt.
 Dort ist eine große Tabelle mit den möglichen Pinbelegungen..

Auch ist nun das aktivieren der Pullups auch anders!
Jeder Port hat nun 4 Register.

naja ist ja alles dokumentiert.
OP #4543115
Lesenswert?
• ▲
▼
Moin,

Mir erschliesst sich der Sinn erst auf den dritten Blick. Jetzt habe ich 
das aber wohl kapiert. Daß solche Dinge immer so kommentarlos im 
Datenblatt stehen müssen...

Wenn ich das richtig sehe ist es bei den Ports in erster Linie wirklich 
nur der Pullup, der nun nicht mehr mit PORTx.n sondern mit PUEx.n 
aktiviert wird, richtig?

Das hier dürfte Anfänger auch noch verwirren:
"Writing a logic one to PINxn toggles the value of PORTxn, independent 
on the value of DDRxn."

Gruß,
Norbert

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren