Re: Timer-Ausgang überschreiben bzw. lange low-Zeit vermeiden Kategorie: CC-Pro Unit & Appl.Board (von UlliS - 7.12.2015 10:05) | |
Als Antwort auf Re: Timer-Ausgang überschreiben bzw. lange low-Zeit vermeiden von Niko - 7.12.2015 2:12
| |
> Ich versuche, diese Tesla-Spule > mit der C-Control über den externen Eingang anzusteuern. Liegt am Eingang eine positive Spannung an ist die Spule deaktiviert. > Liegt der Eingang auf Masse, dann schwingt die Spule. > Das Problem dabei ist, dass die Spule nicht für den kontinuierlichen Betrieb ausgelegt ist. > Das hei�t, man darf den Eingang nur kurz auf Masse ziehen (wenige Millisekunden) > und muss die Spule dann wieder einige Millisekunden ausschalten, damit die Elektronik nicht überlastet wird. > > Ich verwende ein Poti am ADC 0 und PWM an Timer 1. In einer Endlosschleife wird Timer_T1PWM aufgerufen. > Vereinfacht sieht das so aus: > > ADC_Set(ADC_VREF_VCC, 0) > Do While True > Timer_T1PWM(0x610, EinPaarBerechnungen(ADC_Read()), PS_64) 'Für PW0 z.B. 0x54E > Thread_Delay(6) > End While > > Tatsächlich wird da noch geprüft, ob ein Taster gedrückt ist und Timer_T1PWM wird auch nur dann aufgerufen, > wenn sich der gemessene Wert verändert hat, > aber um das Problem zu zeigen ist es sinnvoll, wenn Timer_T1PWM ständig aufgerufen wird. > > Das Problem ist jetzt folgendes: Immer dann, wenn Timer_T1PWM aufgerufen wird, wird der Timer ganz kurz pausiert. > Der Pin verweilt dann für kurze Zeit in einem Zustand, und das kann auch logisch 0 sein. > Ich habe das am Oszilloskop gemessen und ein Foto davon angehängt. > > Es darf nicht passieren, dass der Pin für längere Zeit auf logisch 0 bleibt. Ich suche eine Möglichkeit, > den Ausgang auf logisch 1 zu fixieren, während der Timer noch läuft. > Einfach vorher Port_WriteBit(PinB5, 1) und nachher Port_WriteBit(PinB5, 0) aufzurufen scheint keine Veränderung zu bewirken. Hallo, du solltest den Timer nicht immer neu mit Timer_T1PWM() einstellen! Die Routine läuft nach der Konfiguartion selber (IRQ). �ndere diese nur wenn es sein muss... und übergib die Parameter bei einen Aufruf mit einer eigenen Variablen und baue nicht eine Funktion in den Aufruf mit ein... Wenn du keine Threads benutzt verwende absDelay! Timer_T1PWM(0x610, meinewerte, PS_64) | |
Antwort schreiben Antworten: Re: Timer-Ausgang überschreiben bzw. lange low-Zeit vermeiden (von Niko - 7.12.2015 14:13) Re: Timer-Ausgang überschreiben bzw. lange low-Zeit vermeiden (von Niko - 25.12.2015 17:35) Re: Timer-Ausgang überschreiben bzw. lange low-Zeit vermeiden (von PeterS - 26.12.2015 8:59) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum