Was übersehe ich bei diesem PWM

OP #1036369
Lesenswert?
• ▲
▼
Hallo Gemeinde ,
Proiere grad die PWM Kanäle des Timer1 vom ATMEGA 168 zu nutzen und es 
geht auch Prinzipiel !!
Es giebt jedoch ein aber , ich hab folgende einstellungen vorgenommen :
   TCCR1A |= (1<<COM1A1)|(1<<COM1B1)|(1<<COM1B0)|(1<<WGM10);
   TCCR1B |= (1<<WGM12)|(1<<CS10);
und so wie ich es aus dem Datenblatt entneme solte ich so ein fast PWM 
aktiviert haben. Somit mit einem 16 MHZ Quarz auf eine frequenz von 
62,5kH kommen aber ich mess mit meinem Oszi nur 31,25kH also genau die 
hälfte !!

Was mach ich schon wieder falsch ????


Danke gruß

Pier
#1037022
Lesenswert?
• ▲
▼
Tassilo Böhr wrote:
> Lasse mal (1<<COM1B0) weg. Wenn ich mir Tabelle 14-2 im Datenblatt
> angucke, glaube ich nicht, daß deine Kombination zulässig ist... Die
> rund 31kHz klingen sehr nach Toggle-Funktion statt gewünschter
> Fast-PWM...
Nö. COM1B1 und COM1B0 gesetzt heißt invertierter Mode für OC1B. COM1A1 
gesetzt und COM1A0 nicht gesetzt heißt nicht-invertierter Mode für OC1A. 
Das müsste eigentlich so stimmen.

Übrigens bezieht sich Tabelle 14-2 auf den 8-Bit-Timer 0. Hier geht es 
aber um Timer 1!
#1037038
Lesenswert?
• ▲
▼
Also in meinem 168er-Datenblatt (Rev. 2545F-AVR-06/05) gehört Tabelle 
14-2 sehr wohl zum 16Bit-Timer 1 (wie auch das ganze Kapitel 14), 
komisch...

Trotzdem habe ich mich natürlich im Eröffnungsbeitrag verlesen und kann 
mir das (Fehl)Verhalten nun nicht so recht erklären.

Tassilo
Gast #1037424
Lesenswert?
• ▲
▼
Pier S., am Ende des Holzweges im Kreis zu laufen, bringt Sie keinen 
Meter weiter. Sie müssen einen neuen Weg einschlagen, auch wenn der 
zuerst einmal unsinnig erscheint; zumindest werden Sie mit zunehmendem 
Abstand einen besseren Überblick über das Gelände gewinnen. Also:

1. woher kommt der Faktor 2 ?
  - falscher Systemtakt
  - irgendetwas mit PWM-toggle
  - irgendetwas mit 9-bit-PWM
  - Sie lesen oder interpretieren ein Messergebnis falsch

  Überprüfen Sie diese Punkte; verändern Sie absichtlich die Parameter 
und schauen Sie, was passiert.

2. reduzieren Sie den Code auf das absolute Minimum

3. stellen Sie das Ergebnis von 2. hier ins Forum

4. nehmen Sie einen anderen Controller

5. kontrollieren Sie das define-File
Gast #1037914
Lesenswert?
• ▲
▼
(Nachdem die Nacht schon sehr früh langweilig wurde, der Kaffee aber 
noch lange nicht abgebaut war ...)

Hier meine Minimalversion, allerdings in Assembler:


.def  null  = r0
.def  tmp0  = r16

.cseg

.org  0
  clr    null
  sbi    DDRB,1
  sbi    DDRB,2
  ldi    tmp0,(1<<WGM10)+(1<<COM1A1)+(1<<COM1B1)+(1<<COM1B0)
  sts    TCCR1A,tmp0
  ldi    tmp0,(1<<WGM12)+(1<<CS10)
  sts    TCCR1B,tmp0
  ldi    tmp0,$80
  sts    OCR1AH,null
  sts    OCR1AL,tmp0
  sts    OCR1BH,null
  sts    OCR1BL,tmp0
  rjmp  pc
OP #1145417
Lesenswert?
• ▲
▼
Hallo,
auch wenn der Trend schon älter ist möchte ich nochmal um Eure Hilfe 
bitten .
Ich habe ein Verständnis Problem bei dieser PWM geschichte ! Wird der 
duty cycle des oben beschriebene PWM in irgend einer weise vom Program 
ablauf beeinflusst abgesehen vom wert des OCR1A/OCR1B !
Ich hoffe ich habe mich klar ausgedrückt!!

Vielen Dank für Eure Hilfe

Gruß

Pier

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren