mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zwei 16-Bit Timer, vier verschiedene PWM Signale? ATMega 162


Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich versuch gerade aus einem ATMega162, der zwei 16Bit Timer mit je zwei 
Kanälen besitzt vier verschiedene Signale herauszubekommen. Prinzipiell 
müsste das doch möglich sein?

So schaut mein bisheriger code dafür aus:
        // Ausgänge setzen
  //**********************
  DDRD|= ((1<<PD4)|(1<<PD5));
  // Set OC1A (PD5) an OC3A (PD4) as an Output
  DDRB|= ((1<<PB4));
  // Set OC3B (PB4) as an Output
  DDRE|= ((1<<PE2));
  // Set OC1B (PE2) as an Output

  // Timer 1
  //**********************
  TCCR1A &= ~((1<<COM1A0)|(1<<COM1B0)|(1<<WGM10));
  TCCR1A |=  ((1<<COM1A1)|(1<<COM1B1)|(1<<WGM11)); 
  // Celar OC1A on Compare Match, set OC1A on TOP
  
  TCCR1B &= ~((1<<CS10)|(1<<CS12));
  TCCR1B |=  ((1<<WGM13)|(1<<WGM12)|(1<<CS11));
  
  ICR1  = 50000;   
  // set PWM value for Counter-TOP
  
  // Timer 3
  //**********************
  TCCR3A &= ~((1<<COM3A0)|(1<<COM3B0)|(1<<WGM30));
  TCCR3A |=  ((1<<COM3A1)|(1<<COM3B1)|(1<<WGM31)); 
  // Celar OC1A on Compare Match, set OC1A on TOP
  
  TCCR3B &= ~((1<<CS30)|(1<<CS32));
  TCCR3B |=  ((1<<WGM33)|(1<<WGM32)|(1<<CS31));  

  ICR3  = 50000;     

  
  // Startwerte setzen
  //**********************
  OCR1A = 2750;  
  OCR1A = 5050;  
  OCR3A = 3500;  
  OCR3B = 4500;  



Nun ja, ich mess auch an den Ausgängen OC3B (PB4) und OC1B (PE2) schöne, 
saubere PWM-Signale. Jedoch an den anderen beiden Ports kommt irgendwie 
Mist heraus. Das Signal besteht iwie nur aus zwei entgegengesetzten 
Peaks (falls jemand wünnscht poste ich ne ähnliche Grafik zur 
verdeutlichung).

Kann das sein muss ich die Timer synchronisieren? Oder gehts das was ich 
vor hab prinzipiell nicht?

Wäre echt dankbar für ein wenig Hilfe, bin so langsam am verzweifeln.

Gruß Sven

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Was erst mal auffällt:

>  // Startwerte setzen
>  //**********************
>  OCR1A = 2750;    <---
>  OCR1A = 5050;    <---
>  OCR3A = 3500;
>  OCR3B = 4500;

MfG Spess

Autor: Sven (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Hinweis!

Liegt aber wohl doch nicht daran!
Bekomm jetzt an drei Ports ein schönes PWM-Signal allerdings zeigt mir 
das Osci an OC1A (PD5) ein Signal ähnlich wie das Bild im Anhang an.

Weiß jemand Rat?

Grß Sven

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>allerdings zeigt mir
>das Osci an OC1A (PD5) ein Signal ähnlich

Schalt dein Osci mal auf DC Kopplung.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
is drinn, ändert nichts!
Controller hab ich auch schon getauscht, ergab den selben Mist!

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist die Leiterbahn unterbrochen? Das würde dann einen kleinen Koppel-C 
ergeben.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab das Steckbrett schon durchgepiepst, hatt alles gepasst!

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>hab das Steckbrett schon durchgepiepst, hatt alles gepasst!

Und wenn du direkt am IC-Pin misst?

MfG Spess

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Sven (Gast)

>das Osci an OC1A (PD5) ein Signal ähnlich wie das Bild im Anhang an.

Wackelkontakt am Tastkopf oder ähnliches.

MFg
Falk

Autor: Sven (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Also ich hab das ganze mit nem zweiten Satz Bauteile mal auf nem zweiten 
Steckbrett aufgebaut, und ich Messe den gleichen Mist wie zuvor. Taskopf 
hab ich auch schon nen anderen ausprobiert. Kam das selbe bei raus! ich 
hab das Steckbrett durchgepiepst, hab die Signale direkt am Pin 
gemessen. Nichts hilft.

Ich programmier erst seit zwei Tagen über Jtag und kenn mich da noch 
nicht sonderlich gut aus! Kann das damit was zu tun haben? Als 
Programmiergerät das AVR Dragon! Ich hab euch mal den gesamten Code noch 
in den Anhang gepackt!

Verwende ein Tektronix TDS1002B Osci!

Zu meiner Schaltung noch kurz:

Ich hab den ATMega 162 auf dem Steckbrett. Da ist die Jtag 
Programmierschnittstelle herausgeführt und ansonsten noch ein 20 MHz 
Quarz mit den beiden 22pF Kondensatoren. Dann hab ich noch nen 100nF 
zwischen VCC und GND!

Vielleicht kann jemand mit den zusatz Infos mehr anfangen!

Danke schon mal im voraus.
Gruß Sven

Autor: Nn Nn (jaytharevo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,
anderer Ansatz.

Einfach mal Software PWM auf dem Pin machen (delay.h)!
Wenn, dass geht kann man den Fehler schon mal eingrenzen ;).

MfG

ps: oder funktionierts mittlerweile schon?^^

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.