Re: CAPCOM2, PWM, Wer kennt sich mit Interrupt aus? Kategorie: Progr. Assembler, TaskingTools, OS (von TManiac - 25.01.2007 23:07) | |
Als Antwort auf CAPCOM2, PWM, Wer kennt sich mit Interrupt aus? von Markus P. - 4.01.2007 3:05
| |
Hallo, der Timer muss nicht unbedingt von 0h an laufen. Es gibt ein Reload Register. Bei einem �berlauf wird der Wert welcher darin steht als neuer Startwert genommen. Somit bestimmst du also mit dem Reload wie lang eine Periode deines PWM Signals ist. Es gibt vier Varianten wie der C164 auf ein Compare reagiert: -> Mode 0 (in deinem Bsp CCMOD16=100b) Es wird nur in die Interruptroutine verzweigt. Das hei�t auch das entsprechende Pin wird nicht getogglt. Es sind in diesem Mode abe mehrere Interupts pro Durchlauf erlaubt. Du kannst also das zB CC16 in der Interuptroutine ändern damit es zu einem erneuten Auslösen kommt. Der Timer Overflow wird hier nicht weiter ausgewertet, es kommt nur um reload. {Mode 0 unterstützt noch den Douple Register Mode, aber der ist erst der nächste Schritt. Wenn du das auch das was noch kommt verstanden hast, können wir weiter machen} -> Mode 1 (CCMODxx=101b) Funktioniert eigentlich wie Mode 0, plus das Hardwaretogglen des Pins gleichzeitig zum Interupt. -> Mode 2 (CCMODxx=110b) ist wie Mode 0. Nur das jetzt nur ein Compare pro Durchlauf einen Interupt auslöst. ! es wird kein Pin getogglte -> Mode 3 (CCMODxx=111b) hier kommt jetzt alles zusammen. Es wird nur ein Interupt pro Durchlauf ausgelöst. Es wird gleichzeitig das Pin gesetzt (nicht getogglte). Und beim Timer �berlauf wird das Pin gelöscht. Zu den Interupts ist grundsätzlich zu sagen: Wenn einer auftritt, völlig egal welcher, wird zu der entsprechenden Stelle in der Interupttabelle gesprungen. Hier sollte ein normaler Sprungbefehl stehen (dieser wird von Tasking automatisch erzeugt), welcher dann einer fast normalen Routine verzweigt. Die nötigen Register für den Rücksprung werden alle automatisch gespeichert. Du musst nur deine Interuptroutine mit RETI beenden. Programmierst du mehr in ASM bzw C oder fast ausschlie�ich in C2? Dann müsste ich noch einiges ergänzen (wobei miene C2Kenntisse total vealtet sind) MfG Tmaniac FB88 > Hallo > > Compare mode: > So wie ich aus dem Datenblatt erkennen konnte, läuft der timer Hoch bis zum �berlauf(0xFFFFh) > und fängt dann wieder von vorne an. Während dessen wird ständig überprüft ob der Timer-stand > mit dem zuvor festgelegten wert im Register(z.B.: CC16) übereinstimmt. > > Es kann ein Compare Mode ausgewählt werden (MODE 1) bei dem mehrere Zähler - Register > übereinstimmungen erkannt werden. (Toggle des Ausgang vor der nächsten Periode -> PWM) > Dazu sollte allerdings der Wert im Register während der laufenden Periode schnell erhöht werden, > dass wenn der Timer weiter hochläuft nochmals eine übereinstimmung der Werte zustande kommt. > > Frage: Wie kann ich einen Interrupt so einstellen dass, der wert im Capcom Register mit einem Wert > eines anderen Registers ausgetauscht wird? > > Schwierige frage? > > Ich verstehe das mit den Interrupt leider noch nicht ganz. > Es sollte aber laut datenblatt so irgendwie möglich sein. > > Danke > > Markus P. | |
Antwort schreiben Antworten: |