Liste der Anhänge anzeigen (Anzahl: 1)
Bascom: Xmega Timer -> Prescaler im Betrieb ändern?
Hi,
nach langer Pause benutze ich mal wieder Bascom für meinen xmega32a4. Ich möchte per Code den Prescaler eines Timers umstellen, ist das möglich? Ich finde den passenden Registernamen dafür nicht :-(. Vielleicht kann mir jemand helfen. Ziel ist es ein spezielles PWM "Doppelpuls" Signal zu erzeugen (siehe Oszi Foto)
Beispiel:
Funktionierender Code (in der isr des Timers)
Code:
Select Case Toggler
Case 0 :
Config Tcd0 = Normal , Prescale = 1
Tcd0_per = High_count
Case 1 :
Config Tcd0 = Normal , Prescale = 1
Tcd0_per = Low_count
Case 2:
Config Tcd0 = Normal , Prescale = 1
Tcd0_per = High_count
Case 3 :
Config Tcd0 = Normal , Prescale = 8
Tcd0_per = Pause_count
End Select
Ich möchte nun aber den Wert für den Prescale per Variable ändern können. Folgendes funktioniert aber NICHT:
Code:
[...]
dim High_prescale as Word
dim low_prescale as Word
dim pause_prescale as Word
[...]
Select Case Toggler
Case 0 :
Config Tcd0 = Normal , Prescale = High_prescale
Tcd0_per = High_count
Case 1 :
Config Tcd0 = Normal , Prescale = Low_prescale
Tcd0_per = Low_count
Case 2:
Config Tcd0 = Normal , Prescale = High_prescale
Tcd0_per = High_count
Case 3 :
Config Tcd0 = Normal , Prescale = Pause_prescale
Tcd0_per = Pause_count
End Select
Gibt es ein Register, in welches ich den Prescale Wert direkt schreiben kann? Danke für eure Tipps!!
Anhang 34460
Liste der Anhänge anzeigen (Anzahl: 1)
Die Lösung hat vielleicht etwas hiermit zu tun, aber ich finde keine Infos zu den entsprechenden Registern in Bascom :(
Anhang 34462
- - - Aktualisiert - - -
Super, wenn vor dem Bäcker eine lange Schlange ist, dann kann man noch mehr googeln... Das hier wird hoffentlich die Lösung sein:
Code:
'----------COUNTER/TIMER----Subroutines-----------------------------------------
'TC0_ConfigClockSource
'Configures clock source for the Timer/Counter 0
'Clockselection [0 = OFF, 1 = DIV1, 2 = DIV2, 3 = DIV4, 4= DIV8, 5 = DIV64, 6 = DIV256, 7 = DIV1024, 8 = EventChannel 0 ....15 = Event Channel 7
Sub Tc0_configclocksource(byval Port As String , Byval Clockselection As Byte)
Select Case Port
Case "C": 'Port C
Select Case Clockselection
Case 0 : Tcc0_ctrla = &B0000_0000 'OFF
Case 1 : Tcc0_ctrla = &B0000_0001 'DIV1
Case 2 : Tcc0_ctrla = &B0000_0010
Case 3 : Tcc0_ctrla = &B0000_0011
Case 4 : Tcc0_ctrla = &B0000_0100
Case 5 : Tcc0_ctrla = &B0000_0101
Case 6 : Tcc0_ctrla = &B0000_0110
Case 7 : Tcc0_ctrla = &B0000_0111 'DIV1024
Case 8 : Tcc0_ctrla = &B0000_1000 'Event Channel 0
Case 9 : Tcc0_ctrla = &B0000_1001
Case 10 : Tcc0_ctrla = &B0000_1010