Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 01. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

Timer Interrupt & INT0

Postby ghost » Sun Mar 15, 2009 12:00 am

Hallo Zusammen

Ich habe folgendes Prolem: Ich möchte sowohl mit Timer X eine Interrupt Routine definieren als auch mit dem INT0-Pin einen Interrupt auslösen.

Ich hatte für beide Interrupts ein Programm geschrieben und diese laufen wunderbar... nur wenn ich sie wie folgend zusammenfüge funktioniert das ganze nur noch, wenn ich einen der beiden Teile auskommentiere:


#include "sfr_r813.h"

#pragma interrupt Timer_X_int;
void int0( void );

#pragma interrupt int0


void int0( void ) // interrupt handling function
{
p1_2=1;
}

void main( void )
{

int0ic = 0x00; // interrupt enabled
int0en = 1; // INT0 interrupt enabled
int0pl = 1; // INT0 input polarity: both edges selected
int0f = 0x03; // INT0 input fiter: sampling with f32
int0ic = 0x01; // interrupt priority level setting

asm( " fset I "); // interrupt disabled


asm( "\tFSETI");// Enable interrupt

txmr = 0x00;// Timer mode for Timer X
prex = 0;// Set Prescaler X register to 1
tx = 0;// Set Timer X register to 1
txck0= 0;// Timer Count source = f32
txck1= 1;
txic= 0x07;// Timer interrupt priority level = 7
txs= 1;// Timer X count start flag -> start


pd1 = 0xFF;
p1 = 0x00;


while (1);
}

void Timer_X_int(void)
{
if (p1_4 == 1)
p1_4 = 0;
else
p1_4 = 1;
}


Danke schon mal für die Hilfe

Gruss
ghost
 
Posts: 11
Joined: Fri Jan 03, 2014 1:51 pm

Postby ghost » Sun Mar 15, 2009 12:00 am

Sorry für den Code in dieser langen Form, im Anhang findet ihr sonst noch eine etwas übersichtlichere Version:
Attachments
TimerX-und-INT0.txt
(1.03 KiB) Downloaded 65 times
ghost
 
Posts: 11
Joined: Fri Jan 03, 2014 1:51 pm

Postby amper » Sun Mar 15, 2009 12:00 am

HI Ghost,

meiner Meinung nach macht er bei der Gesamtversion nur den Timer-Interrupt, denn du hast den "Priority Level" des Timers auf 7 eingestellt und dann reagiert der Controller nicht mehr auf die darunter liegenden Levels (INT0-Level = 1)

( Steht auch im Datenblatt).

Gruß

Amper
amper
 
Posts: 54
Joined: Fri Jan 03, 2014 1:48 pm

Postby ghost » Sun Mar 15, 2009 12:00 am

Hallo Amper

Danke für die Hilfe!!! Ich hätte mit einem genaueren Blick ins Datenblatt auch erfahren, dass das über die "Priority-Levels" passiert...

Und dann ging ich noch davon aus, dass der Level 1 höher ist, als Level 7, aber ist ja umgekehrt

Danke!!

Gruss und schöner Sonntagabend
ghost
 
Posts: 11
Joined: Fri Jan 03, 2014 1:51 pm

Postby amper » Sun Mar 15, 2009 12:00 am

Schön das es funktioniert. Have fun

Ebenfalls einen schönen Sonntag
amper
 
Posts: 54
Joined: Fri Jan 03, 2014 1:48 pm


Return to Das R8C-Projekt

Who is online

Users browsing this forum: No registered users and 1 guest