-
-
frequenzmessen über 100khz nicht möglich
Hi,
ich habe eine Routine, mit der ich die Frequenz messen kann:
Sub Messen()
Config Int0 = Falling
Flankenzahl = 0
Messzeit = 50000000 '20000000
Timervorgabe = 53036 'für 50ms ' 25536 für 20ms ' 55536 für 5ms
Do
Enable Interrupts
Enable Int0
Enable Timer1
Portd.2 = 1
Config Timer1 = Timer , Prescale = 64 'für 50ms'8 für 20ms ' messzeit 5ms
Timer1 = Timervorgabe
On Timer1 Isr_von_timer1
On Int0 Irq
Waitms 500
Lcd_clr
Stemp = "imp=" + Str(flankenzahl)
Schreibe Stemp
Lcd_cursor 1 , 3
Stemp = "fre=" + Str(frequenz())
Schreibe Stemp
Flankenzahl = 0
Wait 2
Loop
Irq:
Incr Flankenzahl
Return
Isr_von_timer1:
'Timer1 = Timervorgabe
'Toggle Portc.0
Impulsepromesszeit = Flankenzahl
Disable Int0
Disable Interrupts
Return
ich messe mit einer Torzeit, die fallenden Flanken..
das Prog funktioniert gut bis auf:
-verzählt sich ganz klein wenig: bei 2000 Flanken verzählt sichs um ca 4
(das ist ganz wenig und scheint kein Grundlegender Fehler zu sein und ist scheinbar nicht Frequenzabhängig)-->das ergebnis weicht ca 50-150 Hz ab
- das Prog funzt nur bis ca 105khz, danach spinnt die anzeige rum (lcd ausgabe)
Hat da jemand vielleicht ne Idee,wie man das eine oder andere wegbekommt, würd mich sehr freuen..!
Grüße Roland
-
Erfahrener Benutzer
Robotik Einstein
Hallo,
hier kommt folgendes Problem hinzu, wenn eine ISR augerufen wird, sichert Bascom erstmal schön alle 32 Register auf dem Stack, was natürlich einiges an Zeit braucht. Am Ende der ISR kommen die 32 Register wieder vom Stack zurück.
Wenn Du dich mit Assembler auskennst, könntest Du oben den aufruf der ISR mit Nosave angeben, und in der ISR nur die Register sichern, die auch verwendet werden.
PS:
Den Code kann man zur bessern Lesbarkeit mit Code-Tags umschliessen.
Dazu einfach den geschriebenen Code-Text markieren, und auf den Code-Button oberhalb des Textfensters clicken. Fertig.
-
hmm, da nehm ich doch nen andern eingang und rufe nich die isr auf, da passiert eh nichts, außer, dassich ne Variable hochzähl, das kannich doch anders hinkriegen..
obwohls ja schon gut geht, bei 2000 flanken 4 mehr gezählt... geht schon, wär halt cool , wenns ganz genau wär..
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen