PWM am ATMega64 an Pin E3

OP #1362558
Hallo,

beim Versuch ein PWM-Signal auf dem ATMega64 auszugeben habe ich das 
Problem, dass einfach nichts aus dem entsprechenden Pin rauskommt.
Habe auch schon mehrere Foreneinträge gelesen, kann aber meinen Fehler 
einfach nicht finden. Hier der Code:
1
//in der main()-Funtion:
2

3
    DDRE = (1 << PE3); // Pin E7 == Ausgang
4
//PWM Mode 8: PWM, Phase and Freq. correct
5

6
  //==> WGM33 WGM32 WGM31 WGM30 COM3A1 COM3A0 CS32 CS31 CS30
7
  //      1     0     0     0      1      0     1    1    0
8

9
    TCCR3A = (1<<COM3A1);
10
    TCCR3B = (1<<CS32) | (1<<CS31) | (0<<CS30) | (1<<WGM33)| (0<<WGM32);
11
    
12
    while(1)
13
  {
14
  ICR3=255; // Zähler-Endwert
15
  OCR3A = 100; // Bei 100 sollte der Pegel an E7 auf "low" wechseln
16
        
17
        delay_ms(100);
18
        }

Was amche ich falsch?
Danke schonmal, Gruß Thomas
OP #1362655
Nein, Port E ist komplett offen, nur das Oszi hängt an E3 und der Pegel 
ist dauerhaft auf 0V ... werde es mal auf einem anderen Testboard 
probieren, vielleicht ist der E3 schon "vorgeschädigt"; immerhin weiss 
ich jetzt dass mein Code stimmt!

Danke!
OP #1362731
So, habe die TCCR3x - Zeilen mal auskommentiert und Pin E7 abwechselnd 
High und Low zugewiesen, das funktioniert! Das DDR wird also rihtig 
gesetzt und auch der Ausgangstreiber des ATMegas ist in Ordnung.
Ansonsten habe ich mittlerweile alles auskommentiert, nur noch die 
Initialisierung der PWM-Register (also TCCR§A, B) und die Wertzuweisung 
an ICR3 und OCR3A sind im Code.
Habe testweise auch mal OCR3C (also Pin PE5) getestet, da passiert auch 
nichts.
Gibt es noch ein Bit mit dem ich den Timer einschalten muss o.ä.? Oder 
einen Interrupt den ich freischalten muss?
OP #1362782
Sorry, hab mich vertippt. Da ich ausschließen wollte dass es ein Fehler 
an Pin PE3 ist habe ich die PWM über OCR3C, also PE5 (nicht 7) 
asugegeben, was aber auch fehlgeschlagen ist. Mittlerweile sind LEDs an 
PE3, PE4 und PE5 um zu vermeiden, dass das Oszi am falschen Pin 
angeschlossen ist ;-)
OP #1362946
Ich habe nun mal mein Programm im Simulator laufen lasen, dabei habe ich 
das in der Grafik gezeigte Problem:
Die Werte für TCCR3A und B werden korrekt in die zugehörigen Register 
geschrieben, der Wert für Register OCR3A jedoch nicht!
Irgend welche Ideen?
Angehängte Dateien:
Gast #1362965
>Irgend welche Ideen?

Tipp mal "AVRStudio OCr3a Problem" in die Suchmaschine deines 
Vertrauens...
Selbst Atmel schafft es nicht, fehlerfreie Simulatoren zu basteln.

Oliver
OP #1363081
Hmm ok habe gerade ein paar Artikel gelesen die den Simulator-Bug 
beschreiben.
Ich werde das mit der PWM wohl am Wochenende nochmal probieren; mit 
etwas Glück kann ich den ATMega64 als ATMega32 flashen (überall 32 
einstellen; das Projekt braucht nur mit der PWM-Initialisierung ja kaum 
Flash) und dann  mit dem AVR Dragon als Debugger schauen was mit den 
Registern passiert.
Trotzdem Danke für die Hilfe!
Gast #1364743
hast du zufaellig noch das M103C-Fuse gesetzt? der atmega64 wird so 
ausgeliefert und verhaelt sich dann wie ein atmega103, dann 
funktionieren die timer glaube ich anders... ist aber nur eine 
vermutung...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.