popi
04.09.2008, 09:03
Guten Morgen zusammen,
ich habe bei Roboternetz-Wissen ein kurzes abe feines Tutorial zum Thema PWM und BASCOM gefunden.
Dort ist folgender Code zu finden:
' Hardware PWM mit Timer1
$regfile = "m8def.dat"
$crystal = 4000000
Config Portb.1 = Output
Config Portb.2 = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Do
Compare1a = 205
Compare1b = 51
Loop
End
Soweit sogut.
Nun habe ich den Code für einen tiny2313 angewendet.
Wie man sieht, wird der Timer1 für PWM konfiguriert.
Aber beim tiny ist nur Timer0 mit PWM verbunden.
Wieso aber funktiniert denn der Code auch bei 2313???
Natürlch habe ich die Ausgabeports dem 2313 entsprechend auf Portb.3 und Portb.4 konfiguriert.
Trotzdem erklärt sich für mich nicht die zeile
Config Timer1 ......
Würde mich über eine kurze Erklärung freuen.
Was mich auch wurdert ist die Tatsache, das sich bei Änderung der "Prescale"-Wertes nicht an de Blinkfrequenz ändert.
Hier mal mein Code:
$regfile "ATtiny2313.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 24
'************************************************* *****************************
Config Portb.3 = Output
Config Portb.4 = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Dim Schleife As Integer
'************************************************* *****************************
Do
For Schleife = 100 To 250 Step 5
Compare1a = Schleife
Compare1b = 350 - Schleife
Waitms 10
Next Schleife
For Schleife = 250 To 100 Step -5
Compare1a = Schleife
Compare1b = 350 - Schleife
Waitms 10
Next Schleife
Loop
End
Danke im Voraus und Grüße
popi
ich habe bei Roboternetz-Wissen ein kurzes abe feines Tutorial zum Thema PWM und BASCOM gefunden.
Dort ist folgender Code zu finden:
' Hardware PWM mit Timer1
$regfile = "m8def.dat"
$crystal = 4000000
Config Portb.1 = Output
Config Portb.2 = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Do
Compare1a = 205
Compare1b = 51
Loop
End
Soweit sogut.
Nun habe ich den Code für einen tiny2313 angewendet.
Wie man sieht, wird der Timer1 für PWM konfiguriert.
Aber beim tiny ist nur Timer0 mit PWM verbunden.
Wieso aber funktiniert denn der Code auch bei 2313???
Natürlch habe ich die Ausgabeports dem 2313 entsprechend auf Portb.3 und Portb.4 konfiguriert.
Trotzdem erklärt sich für mich nicht die zeile
Config Timer1 ......
Würde mich über eine kurze Erklärung freuen.
Was mich auch wurdert ist die Tatsache, das sich bei Änderung der "Prescale"-Wertes nicht an de Blinkfrequenz ändert.
Hier mal mein Code:
$regfile "ATtiny2313.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 24
'************************************************* *****************************
Config Portb.3 = Output
Config Portb.4 = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Dim Schleife As Integer
'************************************************* *****************************
Do
For Schleife = 100 To 250 Step 5
Compare1a = Schleife
Compare1b = 350 - Schleife
Waitms 10
Next Schleife
For Schleife = 250 To 100 Step -5
Compare1a = Schleife
Compare1b = 350 - Schleife
Waitms 10
Next Schleife
Loop
End
Danke im Voraus und Grüße
popi