Forum: Mikrocontroller und Digitale Elektronik Neue Interrupt bei neuer BASCOM Version ?


von A. Arndt (Gast)


Lesenswert?

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

von Hanni (Gast)


Lesenswert?

Handbuch lesen ??

von Hannes L. (hannes)


Lesenswert?

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.

...

von Timmy (Gast)


Lesenswert?

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.

von A. Arndt (Gast)


Lesenswert?

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

von Timmy (Gast)


Lesenswert?

schick nen bugreprot an mark von mcselec

von Alexander Arndt (Gast)


Lesenswert?

Hallo,

Fehler gefunden, man  *** muss ***  UDR auslesen, dann gehts wie
früher...

Gruss
A. Arndt

von Timmy (Gast)


Lesenswert?

Hab ich das ned geschrieben??

von A. Arndt (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.