Hallo, ich habe die neueste BASCOM-Version, müsste 1.8.2 sein und wundere mich, dass ich mit "altegewohnter" Ansteuerung des URXC nicht mehr klarkomme : ich habe URXC enabled, Inerrupts auch und eine Sprungmarke bei Zeichenempfang über UART eingericht, wie schon so häufig und springe mit einem RETURN wieder ins Hauptprogramm nach Auslösung des besagten Interrupts. Doch nun läuft die Interruptschleife pausenlos durch und springt nicht ins Hauptprogramm zurück. Ein Beispiel : onrxd: Led = 1 waitms 100 led = 0 return Eigentlich soll die LED beim erfolgreichem UART-Empfang kurz aufleuchten doch sie leuchtet dauerhaft und springt nicht Hauptprogramm, was nun ? Gruss A. Arndt
Die Fähigkeit, mit Interrupts zu arbeiten ist doch kein Feature einer Programmiersprache, sondern ein Hardwarefeature des jeweiligen AVRs. Also sollte dazu auch das Datenblatt des jeweiligen AVRs gelten. Wasteschleifen in der ISR sind tödlich, ISRs sollten so kurz wie möglich gehalten werden. Und 100ms warten in der ISR ist eigentlich eine Disqualifikation für den Programmierer, sorry. Deine ISR wird vermutlich ständig aufgerufen, weil sie so elend lange dauert (100ms + eigentliche Arbeit der ISR), dass inzwischen der nächste Interrupt ausgelöst wurde. Übrigens kann ein AVR kein BASCOM, sondern nur Maschinencode. Was Du in BASCOM schreibst, interessiert ihn nicht. Wichtig ist der erzeugte Maschinencode, den musst Du analysieren wenn das Programm nicht das macht, was es soll. ...
Ich bin mir nicht ganz sicher, ob ich das richtig verstanden habe, aber mach mal udr leer also zb x=udr am anfang der schleife.
Hallo, vielen Dank für die "klugen" Ratschläge, die 100ms sind nur ein Test, ich sende im 1 Sekundentakt einen Befehl an den UART so müsste alle Sekunde die LED kurz aufblitzen. Fehler ist das ich nicht aus der Schleife rauskomme bei einmaliger Auslösung, es geht hier nicht im Sinn oder nicht, sondern um die Fehlfunktion und das das Listing mit alter BASCOM-Version geht und mit neuer nicht. Im Handbuch konnte ich keine passende Lösung finden... Gruss A. Arndt
Hallo, Fehler gefunden, man *** muss *** UDR auslesen, dann gehts wie früher... Gruss A. Arndt
Hallo, doch, und habe es nur bestätigt, und so meine Freude zum Ausdruck gebracht... Gruss A. Arndt
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.