Autor Thema: PWM Frequenz  (Gelesen 4655 mal)

Offline Reha

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
PWM Frequenz
« am: April 20, 2009, 11:44:55 Vormittag »
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;
}

Offline Coltfisch

  • Hero Member
  • *****
  • Beiträge: 501
    • Profil anzeigen
    • BASE 32
Re: PWM Frequenz
« Antwort #1 am: April 20, 2009, 14:55:38 Nachmittag »
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.

Offline Reha

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
Re: PWM Frequenz
« Antwort #2 am: April 21, 2009, 08:20:57 Vormittag »
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

Offline Coltfisch

  • Hero Member
  • *****
  • Beiträge: 501
    • Profil anzeigen
    • BASE 32
Re: PWM Frequenz
« Antwort #3 am: April 21, 2009, 09:17:37 Vormittag »
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

Offline Reha

  • Newbie
  • *
  • Beiträge: 37
    • Profil anzeigen
Re: PWM Frequenz
« Antwort #4 am: April 30, 2009, 11:22:11 Vormittag »
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


 


* Recent Topics