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
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
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é
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
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é
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
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é
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
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.