W PICach rozne przerwania wywoluja jedna funkcje w ktorej musisz sprawdzic zrodlo wywolania przerwania czyli sprawdzic np flage czy timer sie przekrecil lub czy nastapila zmiana na porcie B.
Powinno to wygladac tak:
Code:
void interrupt() {
if ( T0IF == 1 ) // czy timer sie przekrecil ?
{
if( T0IE == 1 ) // czy jest wlaczone przerwanie od timera
{
}
T0IF = 0; // kasuj flage timera 0
}
if ( RBIF == 1 ) // czy to przerwanie z portu B ?
{
if( RBIE == 1 ) // czy jest wlaczone przerwanie z portu B ?
{
}
RBIF = 0; // kasuj flage przerwania
}
}
PORTB INTERRUPT
An input change on PORTB<7:4> sets flag bit RBIF
(INTCON<0>). The interrupt can be enabled/disabled
by setting/clearing enable bit RBIE (INTCON<3>)
Jezeli RBIE jest 1 to kazda zmiana (0-1, 1-0) na pinach B<7:4> wywola przerwanie.
Wlaczenie tego to RBIE = 1;
Jezeli to bedzie tylko na jednym pinie zmiana to nie musisz sprawdzac w przerwaniu na ktorym tylko zwiekszyc jakis licznik.
Mysle ze to powinno pomoc
pozdrawiam