Hi,
mein Problem ist das der Code im Bascom zu langsam ist, und ich Hilfe bei der Umsetzung in Assembler brauche würde.
Folgendes UP möchte ich gerne so schnell wie möglich auf einem
ATMega 644P mit 20 MHz zum laufen haben:
Sub Logger
Portc.1 = 1
Msg = 0
Adr1 = 1
Adr0 = 0
Dold = 255
Portc.0 = 0
Timer1 = 0
Start timer1
Do
D = Pinb
If D <> Dold Then
Rama(adr1) = Timer1
Ramd(adr1) = D
Incr Adr1
Dold = D
End If
' evtl bei Timeroverflow noch weitere Variable Hochzählen
' und in weteren Array abspeichern
' und wenn ovflzähler maxwert erreicht (keine Veränderungen am Port)
' Flag setzen und sub beenden
Loop Until Adr1 > 1000
Stop Timer1
Timestamp = Timer1
Portc.0 = 1
Portc.1 = 0
End Sub
Leider sind meine Assemblerkenntnisse zu tief verschüttet um mich
hieran zu wagen. Vieleicht ist hier jemand so freundich und bringt mich in die Spur.
Gruß
Herbert
mein Problem ist das der Code im Bascom zu langsam ist, und ich Hilfe bei der Umsetzung in Assembler brauche würde.
Folgendes UP möchte ich gerne so schnell wie möglich auf einem
ATMega 644P mit 20 MHz zum laufen haben:
Sub Logger
Portc.1 = 1
Msg = 0
Adr1 = 1
Adr0 = 0
Dold = 255
Portc.0 = 0
Timer1 = 0
Start timer1
Do
D = Pinb
If D <> Dold Then
Rama(adr1) = Timer1
Ramd(adr1) = D
Incr Adr1
Dold = D
End If
' evtl bei Timeroverflow noch weitere Variable Hochzählen
' und in weteren Array abspeichern
' und wenn ovflzähler maxwert erreicht (keine Veränderungen am Port)
' Flag setzen und sub beenden
Loop Until Adr1 > 1000
Stop Timer1
Timestamp = Timer1
Portc.0 = 1
Portc.1 = 0
End Sub
Leider sind meine Assemblerkenntnisse zu tief verschüttet um mich
hieran zu wagen. Vieleicht ist hier jemand so freundich und bringt mich in die Spur.
Gruß
Herbert