Forum: Mikrocontroller und Digitale Elektronik Phasenkorrekte PWM


von H. G. (ledi)


Lesenswert?

Hallo,

ich möchte mittels phasenkorrekter PWM ein Signal am Pin OC1A (PD2) 
erzeugen. MCU = 90PWM316 @ 8MHz.
Den TOP-Wert speichere in das ICR Register und den compare match setze 
ich mit OCR1A.

Aber es passiert nichts am OC1A Ausgang und ich finde den Fehler nicht!
1
#include <avr/io.h>
2
3
int main(void)
4
{
5
  DDRD  |= (1<<PD2);  // OC1A = output
6
  
7
  ICR1  = 10000;    // Top Value = 10000
8
  OCR1A  = 5000;      // Compare Match bei 5000
9
10
  TCCR1A  = (1 << COM1A1) + (1 << WGM11);
11
  TCCR1B  = (1 << WGM13) + (1 << CS11);
12
  
13
  while(1)
14
  {
15
    asm ("NOP");  // Nichts tun
16
  }
17
}

von Matthias L. (Gast)


Lesenswert?

schreib mal
asm volatile (...

von Karl H. (kbuchegg)


Lesenswert?

H. G. schrieb:

> Aber es passiert nichts am OC1A Ausgang und ich finde den Fehler nicht!

Sieht IMHO alles korrekt aus.

Hast du kontrolliert
* richtiger µC in der IDE eingestellt?
* läuft der µC grundsätzlich?
* ist beim Flashen was schief gelaufen?

von Karl H. (kbuchegg)


Lesenswert?

Wie programmierst du den µC?
Kann es sein, dass dir dein Programmer in die Quere kommt?

von H. G. (ledi)


Lesenswert?

Ich habe den Fehler gefunden!

Der OC1A Ausgang war defekt!
Controller getauscht, alles OK!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Hm. Kaum zu glauben...

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.