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
Lesezeichen