Hallo, ich brauch mal einen Spezialisten, der sich mit dem 80535 Entwicklungsboard der Firma Wickenhäuser auskennt. Ich möchte den Seriellen Interrupt abfragen (in ANSI C) und bekomme immer die folgende Fehlermeldung beim Kompilieren: Error: segment '___ser_irq' overlay in sclass 'text' at address $8023 Im Quelltext habe ich einfach die folgenden Zeilen geschrieben: #include <irq52.h> IRQ_VECTOR(SeriellerInterrupt,SERIAL) void SeriellerInterrupt (void) interrupt { P3_B5^=1; // Toggle LED (at P3.5 on almost all Wickenhaeuser Boards) } Bei den anderen Interrupts (Timer etc.) kommt der Fehler nicht! Was mache ich falsch?? Ich hoffe ihr könnt mir weiterhelfen. Ich weiß echt nicht mehr weiter. Danke und Gruß Music Man
Hi, ich kenne mich mit dem Board und dem Compiler nicht aus, aber der Codeadresse nach zu urteilen liegt dein Cod eim RAM was wiederum auf ein Monitorprogramm hinweist, dass dieses entgegen nimmt. Komemn sich die da vll. in die quere? Auserdem ist der Interruptvector soweit unten im Speicher auch recht komisch. Wie verwaltet den dieser Compiler mit dem Monitor das ganze? Gruß Tobias
Hi, der Ram Speicher beginnt bei Adresse 0x8000. In der irq52.h Datei steht folgendes: /********************************************************************** * IRQ52.H * * IRQ definition for standard 8051,52 * * (C) 2002 WWW.WICKENHAEUSER.COM * * This file defines a macro to branch from the interupt's entry address * to the appropriate C function. For other vectors than the defined * ones, just use their entry address as parameter. **********************************************************************/ #asm .macro _irq_vector .show .segment @1, org @2 ljmp @3 .hide .endmacro #endasm #define _asmline #asmline #define IRQ_VECTOR(name,loc) _asmline _irq_vector _irq_##name ,loc,_##name // Available Interrupts on 8051/8052 with known names (IRQ_ added to avoid conflicts) #define IRQ_INT0 0x3 #define TIMER0 0xB #define IRQ_INT1 0x13 #define TIMER1 0x1B #define SERIAL 0x23 #define TIMER2 0x2B // END Ich versteh das so, als wenn die Adresse 0023 auf die Adresse der Interruptroutine im Programm "umgeleitet" wird. Aber irgendwie funktioniert das nicht. No irgend ne Idee? Gruß Music Man
Hallo, hat irgendjemand auch dieses Board von Wickenhäuser mit nem 80C535 und hat den seriellen Interrupt zum Laufen gekriegt? Ich glaube fast dass das ein Problem des Boards selbst ist. Alle Tipps und Codes machen das gleiche wie ich geschrieben habe. Aber ich krieg einen Fehler beim Assembleieren. Hier auf der Seite gab es einen schönen Link zu einem ASM Generator. Das hab ich mal getestet. Mit dem gleichen Ergebnis -> Fehler!! Ich raffs nicht. Brauche dringend hilfe... Danke und Gruß Music Man
so läuft das bei mir : IRQ_VECTOR(UART_ISR,SERIAL) void UART_ISR (void)interrupt { if (RI) { // clear interrupt flag RI = 0; // recievebit=1; } // if if (TI) { // clear interrupt flag TI = 0; // no longer busy mtxbusy = 0; } // if } // uart_isr viele Grüsse Ulli
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.