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


von Sven (Gast)


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:
1
        // Ausgänge setzen
2
  //**********************
3
  DDRD|= ((1<<PD4)|(1<<PD5));
4
  // Set OC1A (PD5) an OC3A (PD4) as an Output
5
  DDRB|= ((1<<PB4));
6
  // Set OC3B (PB4) as an Output
7
  DDRE|= ((1<<PE2));
8
  // Set OC1B (PE2) as an Output
9
10
  // Timer 1
11
  //**********************
12
  TCCR1A &= ~((1<<COM1A0)|(1<<COM1B0)|(1<<WGM10));
13
  TCCR1A |=  ((1<<COM1A1)|(1<<COM1B1)|(1<<WGM11)); 
14
  // Celar OC1A on Compare Match, set OC1A on TOP
15
  
16
  TCCR1B &= ~((1<<CS10)|(1<<CS12));
17
  TCCR1B |=  ((1<<WGM13)|(1<<WGM12)|(1<<CS11));
18
  
19
  ICR1  = 50000;   
20
  // set PWM value for Counter-TOP
21
  
22
  // Timer 3
23
  //**********************
24
  TCCR3A &= ~((1<<COM3A0)|(1<<COM3B0)|(1<<WGM30));
25
  TCCR3A |=  ((1<<COM3A1)|(1<<COM3B1)|(1<<WGM31)); 
26
  // Celar OC1A on Compare Match, set OC1A on TOP
27
  
28
  TCCR3B &= ~((1<<CS30)|(1<<CS32));
29
  TCCR3B |=  ((1<<WGM33)|(1<<WGM32)|(1<<CS31));  
30
31
  ICR3  = 50000;     
32
33
  
34
  // Startwerte setzen
35
  //**********************
36
  OCR1A = 2750;  
37
  OCR1A = 5050;  
38
  OCR3A = 3500;  
39
  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

von Spess53 (Gast)


Lesenswert?

Hi

Was erst mal auffällt:

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

MfG Spess

von Sven (Gast)


Angehängte Dateien:

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

von holger (Gast)


Lesenswert?

>allerdings zeigt mir
>das Osci an OC1A (PD5) ein Signal ähnlich

Schalt dein Osci mal auf DC Kopplung.

von Sven (Gast)


Lesenswert?

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

von Lukas K. (carrotindustries)


Lesenswert?

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

von Sven (Gast)


Lesenswert?

hab das Steckbrett schon durchgepiepst, hatt alles gepasst!

von Spess53 (Gast)


Lesenswert?

Hi

>hab das Steckbrett schon durchgepiepst, hatt alles gepasst!

Und wenn du direkt am IC-Pin misst?

MfG Spess

von Falk B. (falk)


Lesenswert?

@  Sven (Gast)

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

Wackelkontakt am Tastkopf oder ähnliches.

MFg
Falk

von Sven (Gast)


Angehängte Dateien:

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

von Nn N. (jaytharevo)


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?^^

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.