PWM Frequenz
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  PIC Mikrocontroller Allgemein  |  Timer (Allgemein)  |  PWM Frequenz « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: PWM Frequenz  (Gelesen 2198 mal)
 
Reha
Newbie
*
Offline Offline

Beiträge: 37


Profil anzeigen
« am: April 20, 2009, 11:44:55 »

Hallo,
ich hatte auf einem 18F4520 36kHz für einen IR Sender erzeugt. Klappte prima.
Jetzt habe ich (bei gleichem Quarz 10MHz) das auf einen 18LF6622 (3,3V) bringen wollen. Leider ist jetzt die PWM Frequenz nur ca 1/10. Ich sehe nicht, wo man den 6622 anders initialisieren muss.
Wo mache ich den Fehler? Hier der Code zum initialisieren:

Gruß
Reha

void init_timer_2_pwm(void)
{
CCP1CON = 0;   // Alle CCP Module aus
TMR2 = 0;      // Timer 2 aus
PR2 = 0x44;      // Periodendauer festlegen
/*
 PR2 = ( 1 / ( f x 4 x Tosc)) - 1
     = 68,4 = 0x45
F = gewünschte Frequenz
Tosc = Quarzfrequenz
*/
CCPR1L = 0x09;  // Duty Cycle = 6,7µs
TMR2ON=1;      // Timer 2 ein
CCP1CON = CCP1CON | 0x0c;
}
Gespeichert
Coltfisch
Sr. Member
****
Offline Offline

Beiträge: 496



Profil anzeigen WWW
« Antworten #1 am: April 20, 2009, 14:55:38 »

Hallo Reha,

wie sehen die Config bits aus? Läuft der PIC wirklich mit dem externen Quarz oder vielleicht doch mit internem Oszillator? Im Zweifelsfall mal einen Pin toggeln und mit dem Oszilloskop Taktfrequenz bestimmen.

Bei der Initialisierung von Timer2 und PWM habe ich auch keine Unterschiede zwischen den beiden PICs entdecken können. Eventuell ist T2CON vor der PWM-Initialisierung ungleich 0 und ein Pre-/Postscaler ist aktiv. Vor der Timerinitialisierung T2CON daher testweise auf 0 setzen.
Gespeichert
Reha
Newbie
*
Offline Offline

Beiträge: 37


Profil anzeigen
« Antworten #2 am: April 21, 2009, 08:20:57 »

Hallo,
Zitat
wie sehen die Config bits aus? Läuft der PIC wirklich mit dem externen Quarz oder vielleicht doch mit internem Oszillator?

Die standen auf ECIO (da hatte ich wohl mal herumgespielt). Nach setzen auf HS bleibt aber alles ohne Änderung.

Um die Taktfrequenz zu testen hatte ich auch schon einen Rechteck mit TMR0 Interrupt erzeugt. Das stimmt (0,1µSek für einen Timer0 Überlauf (8Bit).

Die entsprechenden Register habe ich schon x-mal geprüft. Sieht alles richtig aus.

Was bleibt....

Gruß
Reha
Gespeichert
Coltfisch
Sr. Member
****
Offline Offline

Beiträge: 496



Profil anzeigen WWW
« Antworten #3 am: April 21, 2009, 09:17:37 »

Was bleibt....

  • Assemblerlisting prüfen, schauen ob die eingestellten Werte für CCP1CON und T2CON tatsächlich in den korrekten Registern landen (mit Datenblatt vergleichen!).
  • Prüfen, ob Timer2 tatsächlich als Taktquelle für die PWM verwendet wird. Entgegen dem PIC18F4520 hat der 6622 die Möglichkeit, Timer2 oder Timer4 als Clock für die CCP Module zu verwenden. Eingestellt wird dies über die T3CCP-Bits im T3CON-Register (s. Datenblatt page 173). Verwendest Du den Timer3? In diesem Fall initialisierst Du eventuell den T3CON-Register auf Grund der Portierung vom 18F4520 falsch.
  • Als letzten Verzweiflungsakt würde ich noch versuchen, ob das Ganze mit Timer4 zum Ziel führt. Zusätzlich könntest Du noch versuchen, ein anderes CCP- bzw. ECCP-Modul verwenden.

Gruß
Daniel
Gespeichert
Reha
Newbie
*
Offline Offline

Beiträge: 37


Profil anzeigen
« Antworten #4 am: April 30, 2009, 11:22:11 »

Fehler gefunden.
Nachdem ich alle deine Vorschläge durchgeführt hatte, habe ich noch mit einem anderen Board verglichen (Ausgang togglen). Der Fehlerfaktor 10 blieb.
Dann habe ich mal mit dem interenen OSC gespielt und festgestellt, dass der mit seinem Default Wert von 1MHz lief ( Faktor 10 zu meinem 10MHz Quarz). Als Erfahrung auch nicht schlecht, warum überhaupt noch einen ext. Quarz verwenden? PLL funktioniert auch ==> 32Mhz.

Ergebnis:
Trotz Einstellung von HS lief der interne OSC, weil offensichtlich der ext OSC nicht funktionierte. Nach Auswechseln der Quarzes läuft es jetzt. Evtl sollte der Rs für den Quarz vorgesehen werden, damit habe ich jetzt allerdings nicht mehr herumprobiert.

Gruß
Reha

Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.037 Sekunden mit 18 Zugriffen.
 
Top! Top!