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
Ja ich hab die Fuse Bits auf externem Quarz gesetzt !! Mit dem Timer 1 erzeugte Zeitbasis stimmt mit dem OSZI überein !!! Gruß Pier
Ich würde erstmal den Timer vergessen, das Oszilloskop weit weg stellen und dann eine LED im Sekundentakt blinken lassen.
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... Tassilo
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!
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
Tassilo Böhr wrote:
> Also in meinem 168er-Datenblatt (Rev. 2545F-AVR-06/05)
Aaaah, lad Dir mal ein aktuelles Datenblatt runter! Steht auf Deinem
vielleicht noch "Preliminary Datasheet" drauf?
So isses... In der aktuellen Ausgabe ist es tatsächlich Kapitel 15 ;-) Aber das hilft dem Pier ja auch nicht weiter... Tassilo
Ja ich Blicks nicht ganz !! Es ist mir Absolut ein Rätsel die 2 Pwms gehn zawar schön so wie sie sollen gegenläufig aber die Frequenz ist die Halbe !! Gruß Pier
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
(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
So ich hab des Rätsels lösung! Der Mega168 hat irgend einen defekt ! Uch hab meinen Code auf dem STK500 getestet und dort gehts ! Jetzt muß ich irgendwie das SMD Teil von der Prototypplatine runter kriegen !! Danke Euch für die Unterstützung Gruß Pier
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.