mikrocontroller.net

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


Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hanni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Handbuch lesen ??

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Timmy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Timmy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schick nen bugreprot an mark von mcselec

Autor: Alexander Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Gruss
A. Arndt

Autor: Timmy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab ich das ned geschrieben??

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

doch, und habe es nur bestätigt, und so meine Freude zum Ausdruck
gebracht...

Gruss
A. Arndt

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.