mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom, URXC, RS232 und Fehlermeldung


Autor: jojansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich stehe etwas auf dem Schlauch und bestimmt könnt ihr mir weiter
helfen. Mit einer IRQ Routine möchte ich von der UART Daten
entgegennehmen und dann weiter verarbeiten. Probieren tu ich es damit:

Config Serialin = Buffered , Size = 6 , Cts = Pind.7 , Rts = Pind.6 ,
Threshold_full = 6 , Threshold_empty = 0
On Urxc Abfrage
Enable Urxc
Enable Interrupts

Do
'Hauptprogramm
Loop

Abfrage:
'was auch immer zu tun ist
Return

Vom Compiler bekomme ich für die Zeile "On Urxc Abfrage" die
Fehlermeldung: "Error: 249 Line: soundso ISR already defined (ONRXD)
in File: d:\blah.bas"

Ich gebe zwischendrin noch Daten zum Debuggen per "Print" aus.
Den IRQ "ONRXD" habe ich aber nirgendwo (wissentlich) verwendet bzw.
definiert.
Idee?
:-) Johannes

Autor: jojansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ich vergaß dazu zu schreiben. Alle Variablen sind deklariert, Fuses
funktionieren, Der Rest vom Programm tut auch so, wie er soll und am
Ende steht auch ein "End".
Der Controller ist ein Mega 16 mit 16MHz Takt. Die Bascom version ist
die 1.11.8.3.
:-) Johannes

Autor: André K. (andre-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann so nicht klappen, weil der Compiler wegen deines "config
serialin" intern ja schon ein "on urxc" generiert hat ("on urxc
onrxd"), somit 2 davon vorhanden sind und er nun nicht weiss, welche
Sprungadresse er denn an den Interruptvektor schreiben soll. Deine Sub
"Abfrage" oder seine "onrxd", in der der oben definierte Buffer
gefuellt wird. Das ganze ist eigentlich so angelegt, dass du eben keine
eigene URXC Isr mehr benoetigst (das ist der Sinn des ganzen Befehls).
Stattdessen sollst du mit Ischarwaiting pollen, bis da mal was im
Buffer sitzt. Siehe dazu auch die Hilfe.

Ich fuer meinen Teil halte diesen Befehl fuer kompletten Unsinn und
habe ihn bisher auch in keinem Programm verwendet.

Beste Gruesse,
André

Autor: jojansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, bin ich blöd.....
"ONRXD" hieß die IRQ Routine im Laufe meiner Experimente. Die
Fehlermeldung in diesem Fall heißt nun:"
Error: 249 Line: soundso ISR already defined (Abfrage)
in File: d:\blah.bas".
:-) Johannes

Autor: André K. (andre-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, dann streich das "onrxd" aus meiner Erklaerung. Das Prinzip
bleibt das gleiche :). Der Compiler hat sich schon eine ISR gebastelt
und weiss nun nicht, was er mit noch einer anstellen soll.

Beste Gruesse,
André

Autor: jojansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du warst schneller als ich mit meiner Entdeckung ;-)
Das heist dann doch, daß ich 'Config Serialin' lassen muß, um die
Abfrage in einer IRQ machen zu können, oder, daß ich um das Pollen
nicht herum komme?
'Serialin' in Verbindung mit einem IRQ wäre das beste...... ich
wollte den sendenden PC mit RTS/CTS in Schach halten.
:-) Johannes

Autor: André K. (andre-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du Serialin laesst, dann hast du selbst keinen Zugriff auf die ISR.
Stattdessen bastelt der Compiler da die eigentliche Empfangsroutine
rein.

"lassen muss" kann auch "sein lassen muss" heissen, das verwirrt
mich gerade etwas... Wenn dem so ist, dann: ja. Wenn du es dennoch
beibehalten moechtest, ist pollen angesagt.

Alternativ kannst du die ISR aus dem AVR-Studio kopieren (*.hex oeffnen
und die Routine als Asm in dein Programm einfuegen. Dann kannst du den
Namen der ISR selbst festlegen und sogar noch eigene Sachen mit
reinpacken.

Beste Gruesse,
André

Autor: jojansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal eine ganz blöde Frage, ist es denn schlimm, wenn mir der Compiler da
was baut? Ich habe zumindest die Hilfe noch nicht ganz kapiert, weil da
wohl was fehlt. Das Beispiel für die ISR Geschichte ist zwar
angekündigt (NOW remove the remarks from line 11 and 18), aber da steht
nichts vernünftiges was auf Interrupts hinweist.
Ansonsten kann ich das Beispiel mal aus dem AVR Studio verwenden.
BTW, wenn Dich etwas verwirrt, kann das auch an meinem Bier liegen ;-)

:-) Johannes

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.