void __interrupt (high_priority) tick(void)
void __interrupt (high_priority) tick(void)
Jag kör MPLAB X v5.45 och XC8. Om jag skriver som i rubriken så får jag att en varning att kompilatorn ignorerar high_priority, om jag tar bort det så blir det kompileringsfel. Hur ska det stå?
Re: void __interrupt (high_priority) tick(void)
Det beror väl på vilken processor du kör, även också om det är gratisversionen av XC8 eller den betalda, då det är rätt stor skillnad mellan dessa
Re: void __interrupt (high_priority) tick(void)
Använder du C90 eller C99 syntax, XC8 kan konfigureras att använda den ena eller den andra, och det ser olika ut beroende på.
Vilken version av XC8
Vilket felmeddelande får du?
Vilken version av XC8
Vilket felmeddelande får du?
Re: void __interrupt (high_priority) tick(void)
XC8 2.31. Felmeddelande :
anniela3.c:90:6: error: variable has incomplete type 'void'
void __interrupt tick(void)
^
anniela3.c:90:17: error: expected ';' after top level declarator
Hur ser man om man kör C90 3ll3r C99?
anniela3.c:90:6: error: variable has incomplete type 'void'
void __interrupt tick(void)
^
anniela3.c:90:17: error: expected ';' after top level declarator
Hur ser man om man kör C90 3ll3r C99?
Re: void __interrupt (high_priority) tick(void)
> Om jag skriver som i rubriken...
Sannolikt bättre att fixa ett litet komplett kodexempel som visar problemet.
Då kan den som är intresserad ladda det i sin egen miljö och testa. Det behöver
inte vara just din applikation som sådan, bara ett exempel som visar problemet.
Dock ett komplett exempel som kan kompileras.
Att visa kod genom att lägga det i rubriken är inte speciellt bra eller tydligt.
Sannolikt bättre att fixa ett litet komplett kodexempel som visar problemet.
Då kan den som är intresserad ladda det i sin egen miljö och testa. Det behöver
inte vara just din applikation som sådan, bara ett exempel som visar problemet.
Dock ett komplett exempel som kan kompileras.
Att visa kod genom att lägga det i rubriken är inte speciellt bra eller tydligt.
Re: void __interrupt (high_priority) tick(void)
Varningsmeddelandet är : anniela3.c:90:: warning: (1421) ignoring argument "high_priority" used by "__interrupt" attribute/specifier.
Koden är :
void __interrupt (high_priority) tick(void)
{
extern byte tick_cntr;
TMR1IF = 0;
TMR1ON = 0;
TMR1L = 0xef;
TMR1H = 0xd8; // 10 msek
TMR1ON = 1; // Starta om ticket
tick_cntr++;
return;
}
Koden fungerar, jag är bara nyfiken varför jag får varningen.
Koden är :
void __interrupt (high_priority) tick(void)
{
extern byte tick_cntr;
TMR1IF = 0;
TMR1ON = 0;
TMR1L = 0xef;
TMR1H = 0xd8; // 10 msek
TMR1ON = 1; // Starta om ticket
tick_cntr++;
return;
}
Koden fungerar, jag är bara nyfiken varför jag får varningen.
Re: void __interrupt (high_priority) tick(void)
Det kallas för CCI-mode, finns under kompilatorns optioner i projektets egenskaper
https://microchipsupport.force.com/s/ar ... and-Issues
https://www.microforum.cc/topic/38-help ... type-void/
Re: void __interrupt (high_priority) tick(void)
Du måste ha () efter void __interrupt, dvs
void __interrupt() MyISR(void)
Re: void __interrupt (high_priority) tick(void)
Jo, då fungerade det utan varning. Tack för hjälpen, TomasL
Re: void __interrupt (high_priority) tick(void)
inom parentesen kan man ange prioritet om det stöds av processor/kompilator (vilket du hade gjort i det första exemplet), dock kan det vara så att den prioritetsnivån du hade valt inte stöds.