R8C interruppt Handling in C

Gast #1389267
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 ;-).
Gast #1389276
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
Gast #1389363
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
Angehängte Dateien:
Gast #1389507
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
#1389551
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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren