Hallo, ich würde gerne einen Rechteckgenerator mit einem P89LPC936 (NXP) entwickeln. Er soll Frequenzen von 1Hz bis 1kHz können. Zusätzlich will ich das Verhältins von ti u. tp verändern können. Ich benutze den internen Oszillator des LPC und den Timer2. ti soll bis max. 50% der Impulsdauer eingestellt werden. Mein Problem ist das ich für jede Frequenz bzw. ander ti's andere Reloadwerte benötige.Diese müsste ich ja ausrechnen und ablegen. Auch der Vorteiler für die CCU-Frequenz ändert sich ab einer bestimmten Frequenz. Ist die Herangehensweise völlig falsch? Wie kann ich es am besten realisieren? Gruß, Daniel
Falls du die Frequenzen so exakt wie möglich haben willst, mußt du den 10Bit Prescaler der CCU je nach Frequenzbereich anpassen. Falls du nicht 100% exakte Frequenzen brauchst, vor allem im oberen Bereich um die 1kHz, dann könntest du auch mit einem festen Prescaler von 64 arbeiten. Bei internem Takt von 7,3728MHz beträgt PCLK genau die Hälfte (3,6864MHz). Nach dem Prescaler von 64 wird der CCU Timer noch mit genau 57600Hz getaktet. Damit kannst du zwischen 1Hz und 1kHz alles einstellen. Für 1Hz lässt du den Timer per Reload von 57600 bis 0 laufen und für 1kHz von 57 (1010,5Hz) oder 58 (993,1Hz) bis 0 laufen. Das Tastverhältnis kannst du dann über die vier Compare Register einstellen. Aber je nach Frequenz (Reload Wert des Timers) musst du die Compare Register (OCRxL und OCRxH) anpassen um das gleiche Tastverhältnis zu erreichen. Das ganze kannst du aber durch eine einfache Rechnung erreichen und brauchst deshalb auch keine Lookup Tabellen zu benutzen dafür. Ciao, Rainer
Vielen Dank, jetzt muss ich noch überlegen wie dieser Algorhytmus aussehen muss. Muss ja linear sein; das verhältnis von reloadwert zur frequenz.
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.