mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega168 und PWM Problem


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich experementiere seit einer Weile mit AVRs und möchte demnächst ein 
X-Ufo selbst basteln.
Dabei komme ich nicht um PWM herum. Grundsätzlich habe ich durch 
Ausprobieren einiges hinbekommen wie USART und ADC.
Jedoch habe ich ein Problem mit PWM und Timer0.
In Foren habe ich mehrere Beispiele gefunden, diese funktionieren aber 
auch nicht.
Hier mein aktueller Code:
void initPWM(void)
{
  DDRB = 0xFF;
  DDRD = 0xFF;

  TCCR0A = (1<<WGM00)|(1<<COM0A1)|(1<<COM0B1); // PWM, phase correct
  TCCR0B =  (1<<CS01) |(1<<CS00); // enable counter

  OCR0A = 0x4F;// witdh
  OCR0B = 0xCF;

  TCCR2A = (1<<WGM20)|(1<<COM2A1)|(1<<COM2B1); // PWM, phase correct
  TCCR2B =  (1<<CS21) |(1<<CS20); //enable counter

  OCR2A = 0x4F;// witdh
  OCR2B = 0xCF;
}

Während die Spannungen hier bei Timer 2 (und Timer 1 in vorherigen 
Tests) alle richtig waren, funktioniert Timer 0 nicht wie er soll bzw an 
den beiden Ports (PD3 und PB3) messe ich die gleiche Spannung von ca. 
1,6 V .
(An OCR2B / PD3 messe ich beispielsweise rund 4 V, nach ausrechnen 
0xCF/256*5V kriege ich 4,04V raus, was also stimmt; genauso mit OCR2A / 
PB3 mit ca 1,5 V)

Ich habe daraufhin schon alle verschiedenen Bit-Kombinationen nach dem 
Datenblatt versucht, aber es hat nichts gebracht.

Was ich zudem recht merkwürdig finde:
Wenn ich Timer0 mit PMW aktiviere, wird der AVR nach kurzer Zeit 
vergleichsweise warm.
Bei Timer2 und Timer1 bleibt er immer kühl.

Hat jemand eine Idee, woran es liegen könnte ?

Danke im voraus
Alex

Autor: senex24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ganz kann ich Ihnen nicht folgen: wieso PD3 und PB3, Timer0 arbeitet 
doch mit PD5 und PD6?
Die Erwärmung mag daran liegen, dass B und D komplett auf Ausgang 
geschaltet werden, hängt da was Falsches dran?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich war mit den Gedanken schon bei Timer 2;)
Ich meinte auch PD5 und PD6. An denen messe ich Spannungen um die 1,6 V.

PD3 und PB3 funktionieren mit Timer2 einwandfrei.

Der AVR erwärmt sich nur, wenn diese Zeilen stehen:
  TCCR0A = (1<<WGM00)|(1<<COM0A1)|(1<<COM0B1); // PWM, phase correct
  TCCR0B =  (1<<CS01) |(1<<CS00); // enable counter

Wenn ich diese auskommentiere, neu kompiliere und brenne bleibt er kühl 
und Timer 2 funktioniert weiterhin.

Autor: senex24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also noch mal: was hängt an D5 und D6, sind die beiden vielleicht 
verbunden?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, also PD5 und PD6 sind nicht miteinander verbunden und an keinem 
Port ist was angeschlossen.
Ich verwende ein myAVR Board 2.06 , das ich selbst zusammengebaut habe ( 
http://www.myavr.de/shop/artikel.php?artID=41 ) und messe die Spannungen 
an den Kontakten unten.

Ich prüfe nochmals die Verbindungen, aber ich habe soweit ich es sehe 
alles richtig gelötet.

Autor: senex24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorschlag: messen Sie (ausgeschaltet natürlich) folgende Widerstände:

D5 - GND
D6 - GND
D5 - Vcc
D6 - Vcc
D5 - D6

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich hab das Problem.
Du hattest Recht :-D .

Beim Löten habe ich  da recht viel Lötzinn verwendet und .. beim .. 
Einsetzen des µCs habe ich immer recht stark auf die Platine gedrückt, 
damit der Chip auch wirklich fest sitzt, dabei hat sich das Lötzinn 
verformt und die PORTs D5 und D6 waren tatsächlich kurzgeschlossen.

Auf der Steckplatine hat es eben auch funktioniert.
Der Code ist also auch ok.

Wegen dem Kurzschluss ist der AVR wohl auch warm geworden ...

Vielen Dank senex24 für deine Hilfe :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.