Hi,
hat irgendwer von den Spezialisten schon mal die optionale "configuration" genutzt?
Zitat aus der BASCOM-Hilfe:
Grundsätzlich sollte es damit ja möglich sein, mehrere Konfigurationen vorzubereiten, und dann zwischen denen umzuschalten.
Ich habe in Anlehnung an diesen Thread zwei vorbereitet:
CodeBox BascomAVR
Beide Configs werden sofort wirksam, also der erste setzt sofort Prescaler und ClockSource in TCCR1A und TCCR1B (der Timer läuft los, mit NOPs kontrolliert).
Der Zweite setzt auch beide Register (Also auch den neuen Prescaler, und eben auch die COM-Bits). TCNT zählt weiter (wird nicht zurückgesetzt). Außerdem werden die PWM-Beine zu Ausgängen.
Soweit, so gut.
Wenn man jetzt aber:
CodeBox BascomAVR
wird zwar in TCCR1B der Prescaler umgesetzt, aber nicht der Compare Output Mode in TCCR1A (und auch nicht das DDR der PWM-Beine).
Was mach ich falsch?
(Ja klar, ich kann natürlich selbst die Register-Bits umsetzen lassen, aber das ist doch genau der Hintergrund dieser Konfigurations-Settings-Geschichte. Warum nur der Prescaler, aber nicht der COM? (CS- und WGM-Bits hab ich noch gar nicht getestet - sind ja auch in den Registern drin))
LotadaC
hat irgendwer von den Spezialisten schon mal die optionale "configuration" genutzt?
Zitat aus der BASCOM-Hilfe:
und:CONFIG TIMER1 = COUNTER | TIMER | PWM ,
EDGE=RISING | FALLING , PRESCALE= 1|8|64|256|1024 ,
NOISE_CANCEL=0 |1, CAPTURE_EDGE = RISING | FALLING ,
CLEAR_TIMER = 1|0,
COMPARE_A = CLEAR | SET | TOGGLE | DISCONNECT ,
COMPARE_B = CLEAR | SET | TOGGLE | DISCONNECT ,
PWM = 8 | 9 10 ,
COMPARE_A_PWM = CLEAR_UP| CLEAR_DOWN | DISCONNECT
COMPARE_B_PWM = CLEAR_UP| CLEAR_DOWN | DISCONNECT
[,CONFIGURATION=NAME]
CONFIGURATION is optional. When you add configuration=mysetting, you can use this setting when you start the timer : START TIMER0 , mysetting
If you have multiple settings, you can start the timer with these different Settings.
Grundsätzlich sollte es damit ja möglich sein, mehrere Konfigurationen vorzubereiten, und dann zwischen denen umzuschalten.
Ich habe in Anlehnung an diesen Thread zwei vorbereitet:
CodeBox BascomAVR
Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Disconnect , Compare B Pwm = Disconnect , Configuration = Pwm_off Config Timer1 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Configuration = Pwm_onHabe das dann mal im Simulator durchgespielt.
Beide Configs werden sofort wirksam, also der erste setzt sofort Prescaler und ClockSource in TCCR1A und TCCR1B (der Timer läuft los, mit NOPs kontrolliert).
Der Zweite setzt auch beide Register (Also auch den neuen Prescaler, und eben auch die COM-Bits). TCNT zählt weiter (wird nicht zurückgesetzt). Außerdem werden die PWM-Beine zu Ausgängen.
Soweit, so gut.
Wenn man jetzt aber:
CodeBox BascomAVR
Start Timer1 , Pwm_off Start Timer1 , Pwm_on
wird zwar in TCCR1B der Prescaler umgesetzt, aber nicht der Compare Output Mode in TCCR1A (und auch nicht das DDR der PWM-Beine).
Was mach ich falsch?
(Ja klar, ich kann natürlich selbst die Register-Bits umsetzen lassen, aber das ist doch genau der Hintergrund dieser Konfigurations-Settings-Geschichte. Warum nur der Prescaler, aber nicht der COM? (CS- und WGM-Bits hab ich noch gar nicht getestet - sind ja auch in den Registern drin))
LotadaC
Zuletzt bearbeitet: