mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Serieller Interrupt bei 80C535 Board von Wickenhaeuser


Autor: Music Man (Gast)
Datum:

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

Autor: Tobias Schneider (Gast)
Datum:

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

Autor: Music Man (Gast)
Datum:

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

Autor: Music Man (Gast)
Datum:

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

Autor: Ulrich Springfeld (Gast)
Datum:

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

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.