void __interrupt (high_priority) tick(void)

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
tomashag
Inlägg: 22
Blev medlem: 18 juli 2012, 09:31:13

void __interrupt (high_priority) tick(void)

Inlägg av tomashag »

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å?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 38489
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: void __interrupt (high_priority) tick(void)

Inlägg av TomasL »

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
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 38489
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: void __interrupt (high_priority) tick(void)

Inlägg av TomasL »

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?
tomashag
Inlägg: 22
Blev medlem: 18 juli 2012, 09:31:13

Re: void __interrupt (high_priority) tick(void)

Inlägg av tomashag »

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?
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 40220
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: void __interrupt (high_priority) tick(void)

Inlägg av sodjan »

> 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.
tomashag
Inlägg: 22
Blev medlem: 18 juli 2012, 09:31:13

Re: void __interrupt (high_priority) tick(void)

Inlägg av tomashag »

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.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 38489
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: void __interrupt (high_priority) tick(void)

Inlägg av TomasL »

tomashag skrev:
20 november 2021, 16:19:48
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?
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/
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 38489
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: void __interrupt (high_priority) tick(void)

Inlägg av TomasL »

tomashag skrev:
20 november 2021, 16:43:12
Koden fungerar, jag är bara nyfiken varför jag får varningen.
Kan ju vara så att din processor inte stöder prioritet.
Eller att gratisversionen av XC 8 inte stöder det.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 38489
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: void __interrupt (high_priority) tick(void)

Inlägg av TomasL »

tomashag skrev:
20 november 2021, 16:19:48
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?
Du måste ha () efter void __interrupt, dvs
void __interrupt() MyISR(void)
tomashag
Inlägg: 22
Blev medlem: 18 juli 2012, 09:31:13

Re: void __interrupt (high_priority) tick(void)

Inlägg av tomashag »

Jo, då fungerade det utan varning. Tack för hjälpen, TomasL
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 38489
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: void __interrupt (high_priority) tick(void)

Inlägg av TomasL »

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.
Skriv svar