AVR-Fråga, några AVRare här?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47013
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

AVR-Fråga, några AVRare här?

Inlägg av TomasL »

Håller på att portera lite programvara från AVR till PIC.

Min undran är vad de två C-funtionerna CLI() och SEI() exakt gör.

Är det bara stänga av och sätta på INT eller fixar dem till mer?
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Re: AVR-Fråga, några AVRare här?

Inlägg av speakman »

johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: AVR-Fråga, några AVRare här?

Inlägg av johano »

2sek med google:

"#define cli()
Disables all interrupts by clearing the global interrupt mask. This function actually compiles into a single line of assembly, so there is no function call overhead."

http://www.gnu.org/savannah-checkouts/n ... a5973c3162

/johan
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: AVR-Fråga, några AVRare här?

Inlägg av sodjan »

CLI() : BCF INTCON, GIE
SEI() : BSF INTCON, GIE

Ungefär, i alla fall i assembler...
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47013
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: AVR-Fråga, några AVRare här?

Inlägg av TomasL »

Jo det var ungefär det jag gissade mig till.

I wiz-c blir det då bGIE=0, resp bGIE1.
Och i MC18 gissar jag på INTCONBits.GIE=1 typ.
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Re: AVR-Fråga, några AVRare här?

Inlägg av manw »

johano skrev:Disables all interrupts by clearing the global interrupt mask.
Ops! Vad menas med detta egentligen? Trodde bara att den stänger av alla interrupt, eller nollställer den alla inställningar man gjort för olika interrupt? Står ju iofsg "global".
Norpan
Inlägg: 2229
Blev medlem: 12 april 2008, 18:20:27
Ort: Småland

Re: AVR-Fråga, några AVRare här?

Inlägg av Norpan »

Den styr "I", alltså flaggan som behöver vara satt för att processorn ska titta på interrupter överhuvudtaget.
CLI = clear I, SEI = set I
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Re: AVR-Fråga, några AVRare här?

Inlägg av manw »

Norpan skrev:...
OK, det var ungefär så jag tolkat det, att det bara är interrupt av, eller interrupt på, och påverkar inte inställningar för specifika interrupt man konfigurerat.

:arrow: Citerade föregående inlägg eftersom jag kände det som det var "flera bollar i luften" i tråden, men alla kanske inte upplever det så :?:
Senast redigerad av manw 29 januari 2009, 14:51:32, redigerad totalt 2 gånger.
Norpan
Inlägg: 2229
Blev medlem: 12 april 2008, 18:20:27
Ort: Småland

Re: AVR-Fråga, några AVRare här?

Inlägg av Norpan »

Jo, de andra interruptnivåerna påverkas högst betydligt, men ändras inte.
Om du hamnar i en interruptrutin pga en interrupt, så blir I resettad och behöver sättas igen när rutinen är färdig, (vet inte hur högnivåspråk sköter detta) men i asm iallafall.
Detta för att den inte ska få en annan interrupt innan den tycker den är färdig med den den håller på med.
Däremot lagras andra interrupter som kommer när I är av och behandlas när I kommer tillbaka i ordning efter prioritetslistan.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: AVR-Fråga, några AVRare här?

Inlägg av sodjan »

> Om du hamnar i en interruptrutin pga en interrupt, så blir I resettad och behöver sättas igen när rutinen är färdig,...

Men det gör mna väl inte med SEI !?
Norpan
Inlägg: 2229
Blev medlem: 12 april 2008, 18:20:27
Ort: Småland

Re: AVR-Fråga, några AVRare här?

Inlägg av Norpan »

RETI är bättre där.
Eller det går kanske men då måste man ju ändå ha en RET efter som man kanske inte hinner till om nån i-flagga har blivit satt sen blir det jobbigt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: AVR-Fråga, några AVRare här?

Inlägg av sodjan »

Man ska *inte* fippla med I flaggan inne i interruptet om man inte
är helt på det klara med vad man håller på med. Det finns en
anledning till att RETI är en "return" och en "SEI" kombinerat.
Skriv svar