Hallo,
ich habe da ein kleines Verständnisproblem was den Overlayvariable machen. Ich habe eine sehr schönes Worddokument im WWW entdeckt wo einige Beispiele zum Bascom programmieren drin sind. Allerdings checke ich den Code nicht so ganz. (Was macht der Programmierer da?).
Das Grundprinzip ist der Periodendauermessung ist mir klar.
Warten bis Eingang = 0: definierter Beginn
Warten bis Eingang = 1
Zähler starten
Warten bis Eingang = 0
Warten bis Eingang = 1
Zähler stop
Zähler auslesen und Wert ggf. umrechnen
Code:'Testprogramm für T-Messung über Timer0/Int0 'Messwerte: 'Tsoll Tmess /us '10 keine Reaktion (Int nicht schnell genug) '100 98 '1000 998/999 '10000 10010 '100000 100041 '1000000 1000424 '--------------------------------------------------- $regfile = "2313def.dat" $crystal = 8000000 $baud = 2400 'Periodendauermessung benutzt Int0 und Timer0 Config Pind.2 = Input On Int0 Int0serv Config Int0 = Rising Enable Int0 'Timer0 für Periodendauermessung Config Timer0 = Timer , Prescale = 8 'Timer-CLK = 8MHz -> TCLK = 1us Enable Timer0 'Overflow alle 256us On Timer0 Timer0overflow Enable Interrupts '----------------------------------------------------- 'Variablen Periodendauermessung Dim T As Long At &H60 'Periodendauer Dim Tvaluel As byte At &H60 Overlay 'Periodendauer low byte Dim Tvalueh As word At &H61 Overlay 'Periodendauer high word Dim T0overflowctr As Word 'Zähler für Timer1Overflow T = 0 '-------------------------------------------------------------------- Do Print "T="; print T; print "us" waitms 1000 Loop '--------------------------------------------------------------------- Int0serv: 'Impulsflanke Lichtschranke 'Periodendauermessung 'Werte der alten Periodendauermessung übernehmen: Stop Timer0 Tvaluel = Timer0 'Low word von T Tvalueh = T0overflowctr 'High word von T 'neue Periode messen: Timer0 = 0 Start Timer0 T0overflowctr = 0 Return '----------------------------------- Timer0overflow: Incr T0Overflowctr 'wieder auf 1.Flanke warten return '-------------------------------------------
Allerdings kapier ich nicht, wie und vor allem warum die T-Variable aus zwei Overlayvariablen zusammengesetzt, die man sich aus den zwei Subroutinen holt, und wie dabei das Ergebnis stimmen kann? Kann mir das vielleicht jemand erklären?
Viele Grüße
R.







Zitieren

Lesezeichen