Ja, vom Computer aus funktioniert es genau wie es soll!
- - - Aktualisiert - - -
Soooooooooooooooooooooooooooooooooo erstmal geschafft!!!
für alle: wenn man UART über Interrups also config serialin / config serialout nutzen will, dann muss man sich offenbar doch um den Puffer kümmern!
Zumindest um serialin!
Es ist notwendig diesen zu leeren!
Warum Bascom das nicht selber macht, weiß ich nicht, dafür reicht mein Verständnis nicht.
Ob es sich bei serialout als notwenidig erweisen wird, weiß ich noch nicht. Bisher geht es ohne.
Das clear serialin, an der richtigen Stellen, nämlich nicht in der ISR, hat dafür gesorgt, dass es jetzt geht.
Meine Lösung für eine einfache Kommunikation zwischen zwei Microcontrollern oder einem und einem Computer:
Code:$regfile = "m8adef.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 1000000 $baud = 4800 Declare Sub Serial0charmatch() Config Serialin = Buffered , Size = 30 , Bytematch = 13 Config Serialout = Buffered , Size = 30 Enable Interrupts Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _ Db7 = Portd.7 , E = Portd.3 , Rs = Portb.6 Config Lcd = 16 * 1a Dim Empfangenedaten As Long Dim Umrechnen As Long Dim Datenempfangen As Long Cls Lcd "start" Empfangenedaten = 10 Datenempfangen = 0 'als Start der KOmmunikation muss ein Chip die ersten Daten schicken, etwas Wartezeit, um sicher zustellen, das beide Chips laufen Waitms 1000 ' beim zweiten chip auskommentieren Print Empfangenedaten ' beim zweiten chip auskommentieren Do If Datenempfangen = 1 Then 'nur wenn Daten empfangen wurden, wird etwas damit getan Waitms 1000 Cls Lcd Empfangenedaten 'die Daten werden unverändert auf einem LCD ausgegeben Umrechnen = Empfangenedaten + 1 Print Umrechnen ' die veränderten Daten werden zurückgeschickt Lcd Umrechnen Datenempfangen = 0 Clear Serialin 'der empfangspuffer muss geleert werden End If Loop End Sub Serial0charmatch() Local Incoming_data As Long Input Incoming_data Noecho Empfangenedaten = Incoming_data Datenempfangen = 1 'hinweis: es wurden daten empfangen, tue etwas End Sub End
Dieser Code tut nichts anderes als eine jeweils um 1 erhöhte Zahl zwischen zwei Chips hin und her zu schicken.
danke für all eure Hilfe!
Wenn ich nichts übersehen habe, war es das erstmal
Vielleicht hilft dies ja dem einen oder anderen.
edit: soviel zu "ich mach heute noch sport.. muss nur kurz das problemchen lösen"
Crypi






Zitieren
Lesezeichen