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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.