Hur hanteras interrupt i högnivåspråk?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Hmm... Även programvarustack borde kunna vara helt ISR-kompatibel. Så länge det bara är samma kompilator (eller en medveten assemblerkodare) som genererar koden till både ISR:en och huvudprogrammet så borde det kunna fungera precis lika säkert som en hårdvarustack.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Visst !
Men diskutionen tidigare rörde bl.a om en kompilator lägger till
egna disable/enable av interrupt. Just kodavsnitt som
hanterar en programvarustack kan vara kondidater för just det.

Det var bl.a det jag menade med "synkning" mellan main och ISR,
att interrupt helt enkelt stängs av under "känsliga" partier.

Med rätt hantering i alla led, så ska det naturligtsvis fungera... :-)
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Då är jag med på vad du menade. :-)

Jag tolkade det först som att du menade att en programvarstack i sig själv skulle bli osäker om den användes vid avbrott. Som du säger, så det ju en given kandidat för att stänga av under vissa delar där själva stacken hanteras.
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Ja, det är sant. En programvarustack skulle ju kunna implementeras.

Knudsens kompilatorer är kända för att generera en liten mängd instruktioner, vilken antagligen även betyder att det går snabbt. Finns exempel på att storleken blivit mindre än hälften vid byte till hans kompilator. (vid bästa/sämsta kombinationen)

Det kanske till stor del är tack vare att han inte använder programvarustack som han lyckas minska storleken så mycket. Jag menar; det går ju åt mycket mer kod att inför varje funktion spara varje argument indirekt i minnet än om man bara flyttar dem till en fast ledig minnesplats, tar även kortare tid. Förmodligen har han ansett att det är så sällan en programvarustack verkligen behövs att vinsterna i storlek/hastighet överväger stackens möjlighet till flexibilitet.

Tillägg: Jag är inte köpt av knudsen... :lol:
henkebenke
Inlägg: 520
Blev medlem: 31 maj 2003, 10:42:37
Ort: Helsingborg

Inlägg av henkebenke »

Det är inte helt ovanligt att kompilatorn använder en speciell stack i interrupt. IAR gör det iallafall.
Skriv svar