Über uns
Bilder & mehr
Modellraketen
Wettbewerbe
Eigene Tools
Empfehlungen
Sonstiges
Unser Login
   
RMC-Sachsen e. V.  
204536        
   

Timerberechnung für Bascom

» Anleitung:
 

Eines der mächtigsten Werkzeuge von Microcontrollern sind deren Timer. Diese Timer können zur Zeitmessung, als Uhr, zum regelmäßigen Ausführen von Programmteilen, zum Erzeugen von PWM oder Rechteckschwingungen z. B. zur Klangerzeugung benutzt werden. Timer zu Berechnen ist recht zeitaufwendig und unserer Timerberechnungstool erfüllt diese Aufgabe mit nur wenigen Angaben zum Microcontroller und der gewünschten Zeit.

Einfach alle Felder ausfüllen und sofort wird das Ergebnis angezeigt. Wer lieber eine Frequenz berechnen will gibt diese einfach im Frequenzfeld in Hertz ein und automatisch wird die Periodendauer in Millisekunden berechnet.

Der Programmcode kann sofort nach Bascom-AVR übernommen werden. Nach belieben können die Kommentierungen der "Do ... Loop"-Schleife entfernt werden und somit diese mit genutzt werden.

Derzeit ist das Programm noch im Aufbau und nach und nach folgen neue Funktionen wie z. B. die Ansteuerung der Hardware-PWM.

Änderungs- und Erweiterungswünsche können gern über unser E-Mail-Formular abgegeben werden.

 

» Programm:
 

Quarzfrequenz: MHz    
Wunschzeit/Frequenz: ms oder  Hz
  Bitte beachten Sie, dass wenn sie eine Frequenz per TOGGLE in der Interruptroutine erzeugen muss die Frequenzangabe verdoppelt, bzw. die Zeitangabe halbiert werden, da in diesem Fall je eine Halbwelle bearbeitet wird.
Timer0 (8 bit)  
Timer1 (16 bit)
Timer2 (8 bit)
Timer sofort starten? (Timer läuft sofort nach nach "Enable TimerX" los)
Timer Endlosschleife? (Für PWM, Tonerzeugung und ähnliches)
 
'###[BASCOM-Timerberechnung von Michael Helmert, http://rmc-sachsen.de]###
'Quarzfrequenz: 1 MHz
'Gewünschte Zeit: 16 ms
'Erreichbare Zeit: 16 ms
'Abweichung: 0 % bzw. 0 ppm


Const Timer1_Preload = 49536

Config Timer1 = Timer, Prescale = 1
Enable Timer1
Timer1 = Timer1_Preload
On Timer1 Isr_Timer1
Enable Interrupts


'Do

  '...Programmcode...

'Loop


Isr_Timer1:
  Timer1 = Timer1_Preload
  '...Interruptcode...
Return

'End