Nun, ich seh folgendes Problem:
DIe Wahrscheinlichkeit, daß beim Zurückschalten auf mode 1 gerade das get- oder Send- pic läuft, ist groß. d.h. nach dem Interrupt kommt er erstmal dorthin zurück. Mode ist aber inzwischen = 1
Daher wird auch sofort der Timer schnackeln und bevor get_ /send-pic reagieren kann, wird daher read-motion angeworfen.
Der fährt also ins volle Leben.
Versuch: setz einen Schalter BEVOR du get- send pic machst, und lösch ihn, wenn du rauskommst.
In timer-Interrupt machst du NUR dann Read-Motion, wenn Mode= 1 UND dieser Schalter = 0.
Noch was : tu dieses grauslichen Wait aus der Interrupt routine
Vorschlag
Vielleicht hilft das auch nix, aber trotzdem ist es einfach sauberer.Code:Modus = 0 Altmodus = Modus Do if Altmodus <> Modus then If Modus = 0 Then Abspos_x = 0 Abspos_y = 0 Modus = 1 End If If Modus = 1 Then Toggle Portb.1 If Modus = 2 Then Toggle Portb.0 Set Reset_chip Waitms 300 Reset Reset_chip Wait 1 Set Ncs Altmodus = Modus End if If Modus = 2 Then schalter = 1 Call Get_picture() Call Send_picture() schalter = 0 Else Printbin Abspos_x ; Abspos_y ; Squal ; Motion ; Maximumpixel ; 13 ; End If Loop '############################################### 'Timer-Routine zur Abfrage der Sensor-Werte mit etwa 6kHz Ontimer: If Modus = 1 and schalter = 0 then Call Read_motion() End If Timer1 = 65430 Return '############################################### 'Interrupt für den Zeichenempfang Onrts: Modus = Udr Return
Lesezeichen