Forum: Mikrocontroller und Digitale Elektronik R8C interruppt Handling in C


von Burkhard (Gast)


Lesenswert?

Ich will die serielle Schnittstelle UART1 verwenden. Das Handling soll 
in C geschrieben werden und den Interruppt verwenden.

Wie ist das zu bewerkstelligen?

von Gast (Gast)


Lesenswert?

Wo ist das Problem?

Aber wenn du es dir einfach machen willst, lad dir einfach eine embOS 
trial version von segger.com runter (gibts da für HEW und IAR), im 
Rtosinit.c findest du immer ne Initialisierung und Interrupt Bearbeitung 
für die Uarts ;-).

von Olaf (Gast)


Lesenswert?

> Wie ist das zu bewerkstelligen?

Du liesst das Datenblatt und lernst so wie du den IRQ einschaltest.

Du liest die Doku ueber den Compiler und lernst so wie du eine 
Interruptfunktion programmierst.

Du laesst dir von HEW entweder ein Assembler oder C Startupscript 
erzeugen und traegst da den Namen deiner Funktion ein.

Olaf

von Burkhard (Gast)


Angehängte Dateien:

Lesenswert?

Danke für eure Hilfe. Dann muss ich wohl einiges lesen. Dabei ist mir
ein Dokument von Renesas in die Hände gefallen.

In diesem Text wird das Grundsätzliche beschrieben.

Meine Fragen:

Ist diese Schema auf den r8c anwendbar?

In welchen Dateien sind die die Funktionen abzulegen?

z.b. von Seite 2 die Funktion void intr( void )
bzw. das Programm zum Retten der Register?

auf der Rechten Seite sind mir die folgenden Zeilen unklar

.section program
.glb _intr
_intr:

für den Augenblick reichts mir ersteinmal. Vielen Dank für eure Hilfe

von Olaf (Gast)


Lesenswert?

> Ist diese Schema auf den r8c anwendbar?

NAja, ich hab es jetzt keine Lust dein PDF zu lesen, aber normalerweise
zeichen sich R8C/M16C dadurch aus sehr kompatibel zu sein. Ausserdem 
stellt sich die Frage auf welchen R8C! Schliesslich ist das nur ein 
Oberbegriff
fuer viele Prozessoren.


> In welchen Dateien sind die die Funktionen abzulegen?

In der Vergangenheit hat HEW ein Assembler Programm erstellt wenn
du ein neues Project erzeugt hast. Dort konnte man halt die
Funktion eintragen. Dein Beispiel duerfte darauf beruhen.

Seit einiger Zeit kann man auch angeben das man ein C-Code haben will. 
Dann wird das halt dort eingetragen. Das koennte also ein bisschen davon 
abhaengen welche HEW/Compiler-Version man hat.

Olaf

von Arc N. (arc)


Lesenswert?

Bei einem C-Projekt legt die HEW die Datei intprg.c an, in der für alle 
Interruptvektoren des ausgewählten Prozessors eine leere Funktion 
definiert ist ala
1
#pragma interrupt _brk(vect=0)
2
void _brk(void){}
D.h. die entsprechende Stelle auskommentieren und in der eigenen C-Datei 
entsprechend neudefinieren.
1
// Include, Interruptvektor und Registername entsprechend anpassen
2
#include "sfr_r823.h"
3
... 
4
#pragma interrupt SerialReceive1(vect=20)
5
void SerialReceive1(void) {
6
   byte res = (byte)u1rb;
7
}

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
Noch kein Account? Hier anmelden.