Ich hab hier mal ein kleines Programm zum erfassen der Umdrehungen einer Welle per Lichtschranke und zum umrechnen in km/h.
Während der Messung bekomme ich auch (richtige) Werte, allerdings steht anscheinen bei der Ausgabe dann nichts im eeprom oder er hat garnichts reingeschrieben![]()
Hab ich irgendwas wichtiges übersehn oder hat das tiefergreifende Gründe?
Code:$regfile = "2313def.dat" $crystal = 8000000 $baud = 9600 Ddrd.2 = 0 Ddrd.3 = 0 Portd.2 = 1 Portd.3 = 1 Taster Alias Pind.3 Dim Umdrehungen As Byte Dim Geschwindigkeit As Single Dim Geschwindigkeit_rund As Byte Dim Eepromaddress As Byte Dim Beste As Byte On Int0 Onint0 Config Int0 = Falling Enable Int0 Enable Interrupts Print "test" 'sicherstellen, dass UART funktioniert Waitms 500 Main: Print "main" Do If Taster = 0 Then Waitms 300 Gosub Messung End If If Eepromaddress = 255 Then Gosub Ausgabe End If Loop Messung: Print "messung" Do Umdrehungen = 0 Waitms 1000 Geschwindigkeit = Umdrehungen * 0.000142857 'Stecke in m / 1000 * 3600 (bei messzeit = 1s, sonst Strecke in m = Geschwindigkeit in m/Xs) Geschwindigkeit = Geschwindigkeit * 3600 Geschwindigkeit_rund = Round(geschwindigkeit) Writeeeprom Geschwindigkeit_rund , Eepromaddress 'geschwindigkeit in jeweils nächste address schreiben Print Geschwindigkeit_rund 'nur testweise, um zu sehen, ob auch ein signal anliegt Incr Eepromaddress If Geschwindigkeit_rund > Beste Then 'wenn gerade gemessene besser als bisher beste,... Beste = Geschwindigkeit_rund '...dann beste mit zuletzt gemessener geschwindigkeit ersetzen End If If Eepromaddress = 255 Or Taster = 0 Then Waitms 300 Return End If Loop Ausgabe: Print "ausgabe" Do If Taster = 0 Then Waitms 300 Eepromaddress = 0 Print Beste Do Readeeprom Geschwindigkeit_rund , Eepromaddress 'geschwindigkeit aus jeweiliger address auslesen Print Geschwindigkeit_rund 'und ausgeben Incr Eepromaddress Waitms 500 If Eepromaddress = 255 Then Print "end" Return 'zurück zu main End If Loop End If Loop Onint0: Incr Umdrehungen Return







Zitieren

Lesezeichen