Servus Chris,
vllt raff ich's gerade einfach nicht..aber ich sehe auch nich von wo die sub aufgerufen wird.
Hallo,
ich möchte mithilfe des Config Serialin Befehls eine Sub beim Eintreffen eines "CR" ausführen. Jedoch springt der XMEGA64A3 nie in die Sub. Weiß jemand, woran das liegen könnte?
Hier der Code:
Vielen Dank & GrußCode:$regfile = "xm64a3def.dat" $crystal = 32000000 $hwstack = 64 $swstack = 40 $framesize = 40 $lib "xmega.lib" $external _xmegafix_clear $external _xmegafix_rol_r1014 Config Osc = Disabled , 32mhzosc = Enabled Config Sysclock = 32mhz Declare Sub Serial1charmatch() Config Com2 = 38400 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 Config Serialin1 = Buffered , Size = 100 , Bytematch = 13 Open "COM2:" For Binary As #1 Dim Datastring As String * 10 Config Priority = Static , Vector = Application , Lo = Enabled Enable Interrupts Do !nop Loop End Sub Serial1charmatch() Input #1 , Datastring , Noecho Print #1 , "Empfangen!" End Sub
Chris
Servus Chris,
vllt raff ich's gerade einfach nicht..aber ich sehe auch nich von wo die sub aufgerufen wird.
Nam et ipsa scientia potestas est..
Hi,
die Sub ist in dem Fall eine ISR, d.h. wenn über die UART ein CR empfangen wird, löst das einen Interrupt aus und dieser springt dann in die SUB
Gruß
Chris
Du musst den Med Interruptlevel aktivieren.
Hi,
du hast Recht ... Aber ich dachte, "Enable Interrupts" aktiviert den MED Interruptlevel?!
Vielen Dank & Gruß
Chris
Ah, ok..war irgendwie gerade darauf dass es als ISR deklariert werden muss.
Bau mal $baud1 mit ein und schau ob sich was tut.
Nam et ipsa scientia potestas est..
Ein Enable Interrupts setzt das I-Flag im SReg und erlaubt die gesetzten Interrupts grundsätzlich. Der dem gewählten Interrupt entsprechende Level muss beim XMega aber aktiviert werden, sonst geht gar nix.
Hab' aber irgendwie in Erinnerung, dass Mark standardmäßig den Med-Level erlauben wollte. Kann's sein, dass Du eine etwas ältere Bascom-Version verwendest ?
Hm evtl. hab ich das auch blos mal irgendwo aufgeschnappt... Meine Version ist die 2.0.7.2.
Vielen Dank nochmal für die schnelle Hilfe
Gruß
Chris
Nachtrag: Wenn Du Config Priority im Code aktiv hast, werden nur die Levels erlaubt, die Du dort angibst, da wird dann angenommen, dass Du gezielt selbst eingreifen willst.
Lässt Du Config Priority weg, so wird per Default der Med-Level aktiviert, damit die Kiste schon mal läuft.
Dein Fehler war also das gezielte Erlauben des falschen Levels.
Lesezeichen