William Sandqvist Övning 7 Interrupt, Exeption, Trap.

Slides:



Advertisements
Liknande presentationer
Snabbguide och tips.
Advertisements

BAS-M Hur du på ett enkelt sätt administrerar din båtklubbs register.
Behandlingsfas 1, hjälpmedel
En genomgång av spelet: Dubbelkrig-Grön
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
hej och välkomna EKVATIONER Ta reda på det okända talet.
E-post juni 2013.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Att skriva en artikel.
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
William Sandqvist Datorteknik övning 2 Subrutinanrop William Sandqvist
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
C-programmering ID120V William Sandqvist Länkad lista
William Sandqvist PSpice – hemma Som simuleringsprogramvara använder vi Orcad PSpice, samma program kommer sedan att användas I elektronikkurserna.
Realtidsprog. - Anders Arvidsson1 Realtidsprogrammering En introduktion – Implementering (med exempel från PIC)
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmeringsteknik
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Algebra och ekvationer
OPERATIVSYSTEM WINDOWS
William Sandqvist C:s minnesmodell.
Att sälja Lions Quest-kurser till skolor /14.
Operativsystem Vad är det för något ? Varför har man operativsystem ?
Namnrum, räckvidd och rekursion Linda Mannila
Logikprogrammering 21/10 Binära träd
Google SketchUp Del 1.
Java paket och jar-filer
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 31 March IS1200 Datorteknik föreläsning CE – F2.
William Sandqvist Polling och Interrupt Antag att Du sitter i en skön fåtölj och läser en bok. Plötsligt blir Du avbruten av att telefonen.
Cacheminnen: skrivning ● Träff ● Skrivbuffert ● Miss.
2 April 2015 IS1200 Datorteknik föreläsning CE - F71 IS1200 Datorteknik och komponenter Föreläsning 7 Exceptions Interrupts - Traps.
William Sandqvist ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
William Sandqvist Lab 3 Några slides att repetera inför Lab 3 William Sandqvist
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
William Sandqvist Övning 6 Seriekommunikation - serieport William Sandqvist
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
2 June 2015IS1200, Förel 9, vt08 (Kista)1 IS1200 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) vt 2008 (period.
2 June G1518, Föreäsning 7, vt 2007 (D2)1 2G1518 Datorteknik Föreläsning 7 Exceptions ht vt 2006 (period 2-3) för D2.
2 June 20152G1518, Förel 9 vt2006 (E3)1 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) version vt 2006 för.
6/3/2015© Mats Brorsson1 Hur mycket snabbare blir det med PC133 SDRAM jämfört med PC100 SDRAM?... blir det med en 1,4 GHz Athlon- processor jämfört.
4 June 20152G1518, Förel 9 ht2005 (D3)1 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) version ht 2005 för.
4 June G1518, Föreläsning 9, vt07 (IT/ME/2IT)1 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) version.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)1 IS1200 Datorteknik Föreläsning 7 Exceptions vt 2008 (period 3) för IT/ME och Hing/Kand.
IF1330 Ellära Växelströmskretsar j  -räkning Enkla filter F/Ö1 F/Ö4 F/Ö6 F/Ö10 F/Ö13 F/Ö15 F/Ö2F/Ö3 F/Ö12 tentamen William Sandqvist F/Ö5.
16 July 2015 IS1500 Datorteknik och komponeneter, föreläsning DC-F2 1 IS1500 Datorteknik och komponenter Föreläsning DC F2 Kretsar med återkoppling Minnen.
DA-omvandling, oftast PWM William Sandqvist En DA-omvandlare tar stor plats på processor- chippet. Den vanligaste DA-lösningen är i stället.
Socialpsykologi.
William Sandqvist Datorteknik övning 3 stackhantering subrutin som anropar subrutin programutveckling.
William Sandqvist Övning 7 Interrupt, Exeption, Trap.
IE1206 Inbyggd Elektronik Transienter PWM Visare j  PWM CCP KAP/IND-sensor F1 F3 F6 F8 F2 Ö1 F9 Ö4F7 tentamen William Sandqvist PIC-block.
3 August 2015IS1200 Datorteknik föreläsning 71 IS1200 Datorteknik Föreläsning 7 Exceptions Interrupts - Traps.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
12 October 2015 IS1200 Datorteknik föreläsning CE - F71 IS1200 Datorteknik och komponenter Föreläsning 7 Exceptions Interrupts - Traps.
13 October 2015 IS1200 Datorteknik ht2009, föreläsning 7, (D2)1 IS1200 Datorteknik Föreläsning 7 Exceptions ht 2009 – vt 2010 (period 2-3) för D-2.
Kommunikationspass Jag heter
Anders Sjögren Funktioner något in och något annat ut.
17 October 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 Del 1. CPU-scheduling Del 2. Semaforer (förberedelse till hemlab.
Operativsystem Vad är det för något ? Varför har man operativsystem ? Vilka finns det ?
IT och medier1 Utgående från boken Computer Science av: J. Glenn Brookshear Grundläggande datavetenskap, 4p Kapitel 3 Operativsystem.
Presentationens avskrift:

William Sandqvist Övning 7 Interrupt, Exeption, Trap

William Sandqvist Digitala komponenter Assemblerprogram C In- och utmatning Avbrott och "trap" Cacheminnen Trådar, synkronisering DC F1 DC F2 CE F1 CE F3 CE F4 CE F5 CE F6 CE F7 CE F8 CE F9 CE F10 CE F2 DC Ö1 DC Ö2 CE Ö4 CE Ö1 CE Ö2 CE Ö3 CE Ö10 CE Ö7 CE Ö8 CE Ö9 CE Ö5CE Ö6 lab dicom lab nios2time hemlab C lab nios2io lab nios2int hemlab cache hemlab trådar tentamen Datorteknik & komponenter

William Sandqvist Polling och Interrupt Antag att Du sitter i en skön fåtölj och läser en bok. Plötsligt blir Du avbruten av att telefonen ringer, Du markerar med en blyertspenna var i boken Du befann dig och svarar. Under samtalet ringer det på dörrklockan och Du ber den Du talar med i telefonen med att dröja kvar medan Du går till dörren.

William Sandqvist Interrupt När Du är färdig med ärendet vid dörren återupptar Du telefonsamtalet. När Du efter ett tag har talat färdigt i telefonen och avslutat telefonsamtalet kan Du återvända till fåtöljen och fortsätta med att läsa den goda boken - vid blyertsmärket.

William Sandqvist Polling Om inte interrupt funnes vore man tvungen att rusa runt mellan dörren – står någon där? – telefonen – någon där? och soffan. Det som kallas för polling.

William Sandqvist Interruptmekanismer Global och Local Enable Vill Du inte bli störd kan Du sätta på dig öronproppar – Du har då omöjliggjort interrupt, disable interrupt. Tar Du bort öronpropparna har Du åter möjliggjort interrupt, enable interrupt. Detta kallas för Global Enable. Du har även möjlighet på lokal nivå enabla/disabla inter- rupt, Local Enable. Du kan tex. disabla telefonen genom att dra ur jacket. Då hör Du fortfarande dörrklockan.

William Sandqvist Avbrottssystemet i Nios II Det normala programflödet avbryts. Tre tänkbara orsaker: Interrupt, avbrottssignal från enhet utanför processorn Exeption, felavbrott vid exekvering av instruktion  division med 0 (ej med labdatorn)  oimplementerad instruktion (ej med labdatorn) Trap, instruktionen trap, mjukvaruavbrott

William Sandqvist Återhoppsadress vid avbrott Vid avbrott sparar hårdvaran återhoppsadress i R29, EA exeption return adress register.. Register R31 kan innehålla en returadress som det avbrutna programmet behöver. Måste därför sparas.

William Sandqvist

Trap-instruktion En trap instruktion leder alltid till avbrott. Alla avbrott hanteras av samma hanteringsrutin, som i vårt labsystem ligger på adressen 0x Eftersom alla avbrott hanteras av samma hanteringsrutinen måste den först av allt ta reda på vad som hänt, för att kunna göra rätt åtgärd.

William Sandqvist Interrupt, avbrotts-signal Ett interrupt, en avbrotts-signal, kan inträffa vid vilken instruktion som helst i programmet. Om hanteringsrutinen upptäcker att det gäller ett interrupt, så måste alla register sparas. Återhoppsadressen är en instruktion för stor, så även detta måste justeras.

William Sandqvist Registeranvändning i avbrottsrutinen Interrupt orsakas av händelser utanför processorn, elektriska signaler  Kan hända när som helst under programkörningen  Omöjligt att veta vilka register som är lediga  Bara R24 får användas (et, exeption temporary)  Andra register måste skyddas, sparas på stacken Använd makron PUSHMOST och POPMOST sparar respektive återställer R1…R15 samt R31 skydda även andra register om Du använder dem

William Sandqvist Vid interrupt! Skyddar Du de register Du använder. Använder Du dessutom subrutin så måste DU skydda alla dessa register! Makron PUSHMOST POPMOST Skydda! Om Du använder. Registerhantering vid Interrupt!

William Sandqvist PUSHMOST POPMOST.macro PUSH reg subi sp,sp,4 stw \reg,0(sp).endm.macro POP reg ldw \reg,0(sp) addi sp,sp,4.endm.macro PUSHMOST PUSH r1 # at PUSH r2... PUSH r14 PUSH r15 PUSH r31 # ra.endm.macro POPMOST POP r31 # ra POP r15... POP r3 POP r2 POP r1 # at.endm Observera! Omvänd ordning!

William Sandqvist Exeption, felavbrott I vårt labsystem tar vi inte hand om några felavbrott. Eftersom Nios-II-processorn är en softprocessor där användaren har möjlighet att skapa upp till 256 egna (oprövade?) instruktioner, så är felavbrott i allmänhet en nödvändig del av avbrotts-hanteringen.

William Sandqvist 16 st Control-register CTL0 status, med bit 0 PIE CTL1 estatus, med bit 0 EPIE ( EPIE är sparad version av PIE ) CTL3 ienable, 32 interrupt enable bits CTL4 ipending, 32 pending interrupt bits Bara fyra av de 16 kontrollregistren är av intresse för oss. Kontrollregistren läses med instruktionen rdctl ReadControl, och skrives med instruktionen wrctl WriteControl.

William Sandqvist Interrupt-logiken Device Enable, Local Enable, och Global Enable

William Sandqvist 7.1 Avbrottshanteringen Sammanfattning. Hårdvaran gör följande:  Programräknarens värde kopieras till R29 (ea, exeption address register) så programmet kan hitta tillbaka.  STATUS (CTL0) kopieras till ESTATUS (CTL1) så att programmet kan undersöka värdet  STATUS ändras så att PIE = 0, vidare avbrott avstängda  Programräknaren sätts till 0x800020, och programkörningen fortsätter därifrån.

William Sandqvist 7.2 En ”stub” Vid avbrott styrs exekveringen till adressen 0x800020, men där finns inte plats för någon omfattande hanteringsrutin. Vi måste vidarebefordra anropet från denna adress till en annan adress i vår text-area.

William Sandqvist ”Eftersändning” av avbrottet Vi måste placera följande ”eftersändningskod” på adress 0x movia et,exc_handler # adress till hanteringsfunktionen jmp et Observera att ET, exception temporary, R21, är det enda register som får ändras vid avbrott. Först placerar vi denna kod före main (så att den aldrig körs): stub: movia et,exc_handler jmp et Därefter får main kopiera koden från ”stub” word för word till rätt plats (0x800020).

William Sandqvist

stub: movia et,exc_handler # körs ej, det är bara koden jmp et # vi är ute efter! main: movia r8,stub # adressen till stub-koden movia r9,0x # eftersändningsadressen ldw r10,0(r8) stw r10,0(r9) ldw r10,4(r8) stw r10,4(r9) ldw r10,8(r8) stw r10,8(r9) # klart, stubben är tre instruktioner mainloop:... # här är vårt omfattande main-program br mainloop exc_handler:... # här är den omfattande hanteringsfunktionen eret

William Sandqvist stub: movia et,exc_handler # körs ej, det är bara koden jmp et # vi är ute efter! main: movia r8,stub # adressen till stub-koden movia r9,0x # eftersändningsadressen ldw r10,0(r8) stw r10,0(r9) ldw r10,4(r8) stw r10,4(r9) ldw r10,8(r8) stw r10,8(r9) # klart, stubben är tre instruktioner mainloop:... # här är vårt omfattande main-program br mainloop exc_handler:... # här är den omfattande hanteringsfunktionen eret Tror Du att det skulle gå att använda br i stället för jmp ? stub: br exc_handler main: movia r8, stub movia r9,0x ldw r10,0(r8) stw r10,0(r9) Nej! br är självrelativ, hoppet sker relativt där instruktionen står, och det fungerar ju inte om instruktionen flyttas någon annanstans!

William Sandqvist 7.3 Avbrottsrutinen Avbrottsrutinen kontrollerar orsaken  Interrupt, trap (eller felavbrott) Om det var Interrupt, dvs. avbrotts-signal:  subtrahera 4 från det sparade programräknarvärdet  behandla avbrottet (tex. hämta indata)  kvittera avbrottet (nollställ enhetens avbrotts-signal) returnera från avbrottet med instruktionen ERET

William Sandqvist Överblick över avbrottsrutinen

William Sandqvist Vad hände? Var det interrupt? Dubbeltest: Är interrupt enablat? Läs ctl1, estatus, (kopia av statusregistret) och biten EPIE (kopia av PIE ). Är EPIE =0 så är interrupt inte enablat! – måste varit en Trap (eller annat). Finns väntande interrupts? Läs ctl4 ipending. Är ipending = 0 har inga interrupt skett! – måste varit en Trap (eller annat). Om vi passerar båda testen så rör det sig om ett interrupt!

William Sandqvist Assemblerkod, interrupt?.text.align 2 exchand: rdctl et,estatus # ctl1 med bit EPIE andi et,et,0b01 # maska EPIE-biten beq et,r0,not_int # interrupt ej enablat rdctl et,ipending # ctl4 med ev väntande interrupt beq et,r0,not_int # inga väntande interrupt br exc_was_interrupt # det var ett interrupt! not_int:... # inget interrupt, testa mer...

William Sandqvist assemblerkod, Trap? not_int: PUSH r8 movia r8,0x003b683a # detta är maskinkoden för TRAP! ldw et,-4(ea) # läs instruktionen före returadressen cmpeq et,et,r8 # jämför, 1 i et om TRAP-instruktion! POP r8 bne et,r0, exc_was_trap # det var en trap-instruktion spurious: # vi vet inte vad som hände, störning?... eret exc_was_trap:... # trap-action eret

William Sandqvist Vilket interrupt var det? exc_was_interrupt: subi ea,ea,4 # justera returadress först som sist! rdctl et,ipending andi et,et,0b0100 bne et,r0,keys4 rdctl et,ipending andi et,et,0b01000 bne et,r0,toggles18... rdctl et,ipending andi et,et,0b bne et,r0,timer1 br spurious # inget känt avbrott ? Delrutinerna för alla de möjliga avbrotten avslutas med eret.

William Sandqvist Interrupt-logiken Device Enable, Local Enable, och Global Enable

William Sandqvist Device Enable KEYS TOGGLES  Enable på Device-nivå. Varje IO-enhet har möjlighet att generera interrupt. För KEYS4 och TOGGLES18 kan man enabla varje tryck-knapp eller varje strömställare var för sig. Detta gör man genom att skriva ”1” i motsvarande bitpositioner i interrupt mask registren.  Undersöka orsaken till interruptet på device-nivå. Varje förändring (trycka/släppa, byta läge) genererar interrupt. Den/de bitpositioner som förändrats, har ”1” i edge capture registren. Data registren ”1” / ”0” visar om en knapp är uppe/nere.  Kvittera interruptet (acknowledge). Genom att skriva vad som helst till edge capture registret 0-ställs bitarna.

William Sandqvist Device Enable TIMER  Enable på Device-nivå. Varje IO-enhet har möjlighet att generera interrupt. För TIMER1 kan man enabla interrupt vid Timeout. Detta gör man genom att skriva ”1” till ITO biten.  Undersöka orsaken till interruptet på device-nivå. TO Timeoutbiten sätts vid timeout.  Kvittera interruptet (acknowledge). Genom att skriva vad som helst till status registret 0-ställs TO biten (flaggan).

William Sandqvist Device Enable UART  Enable på Device-nivå. Varje IO-enhet har möjlighet att generera interrupt. För UART kan man enabla interrupt för mottaget tecken, RxRdy eller för tomt i sändar- registret, TxRdy. Detta gör man genom att skriva ”1” till motsvarande bit i control registret.  Undersöka orsaken till interruptet på device-nivå. Bitarna RxRdy eller TxRdy, i status registret markerar orsaken.  Kvittera interruptet (acknowledge). Genom att läsa RxData eller skriva till TxData 0-ställs respektive bitar (flaggor) i status registret. Man behöver inte göra någon ytterligare åtgärd för att kvittera interruptet.

William Sandqvist Local Enable Local Enable. Skriv ”1” i de positioner som skall enablas. Använd instruktionen ori eftersom man inte vill påverka andra bitpositioner oavsiktligt. rdctl et,ctl3 ori et,et,0b wrctl ctl3,et

William Sandqvist IPENDING registret Bitarna i IPENDING registret talar om från vilket device avbrottet kommer. rdctl et,ctl4 andi et,et,0b bne et,r0,TimerInt # det var timern!

William Sandqvist Global Enable Tillåt Globalt Enable först när alla enheter är initialiserade och allt övrigt Enablat. wrctl status,r0 # Disable interrupt PIE=0 movi et,0b01 wrctl status,et # Enable interrupt PIE=1

William Sandqvist 7.4 Interrupt från Timer IO är mappade till minnesadresser. 0x920 … 0x934 timer_1 IRQ index 10

William Sandqvist 7.4 main stub: movia et,exchandler jmp et main: movia r8,stub movia r9,0x ldw r10,0(r8) stw r10,0(r9) ldw r10,4(r8) stw r10,4(r9) ldw r10,8(r8) stw r10,8(r9) # instruktionerna movia och jmp # kopieras till avbrottsadressen!

William Sandqvist (5.6) inittimer().equ timer, 0x920.text.align 2.global inittimer # synlig i andra filer inittimer: movia r8,timer # basadressen till timern movia r9,49999 # R9 = srli r10,r9,16 # 16 höga bitar kvar stw r10,12(r8) # periodh 16 höga bitar andi r9,r9,0xFFFF # behåll 16 låga bitar stw r9,8(r8) # periodl 16 låga bitar movi r9,0b0111 # R9 = 0b0111 (start=1 cont=1 ito=1) stw r9,4(r8) # skriv till control ret Denna gång skall vi ha interrupt vid timeout! Device Enable

William Sandqvist 7.4 Lokalt Enable i main rdctl et,ienable # ctl3 ori et,et,0b wrctl ienable,et Ettställ bit 10 i IENABLE (CTL3), men bara denna bit! Här använder vi et i main innan interuptet blivit globalt enablat.

William Sandqvist 7.4 Globalt Enable i main movi et,0b01 wrctl status,et # Enable interrupt PIE=1 Ettställ PIE bit 0 i STATUS (CTL0) Här använder vi et i main innan interuptet blivit globalt enablat. Därefter får et endast användas i avbrottsrutinen!

William Sandqvist 7.4 Huvudloop i main

William Sandqvist 7.4 Avbrottsrutinen exchandler: rdctl et,estatus # för att undersöka EPIE andi et,et,1 beq et,r0,noint # interrupt är disablat rdctl et,ipending beq et,r0,noint # inga väntande interrupt inthandler: subi ea,ea,4 # glöm inte justera returadress rdctl et,ipending # vilket interrupt väntar? andi et,et,0b bne et,r0,TimerInt # det var timern! noint: # trap-instruktionen ej med i detta exempel error: eret # spurious interrupt?

William Sandqvist 7.4 TimerInt TimerInt: PUSHMOST # spara de flesta register movia r8,0x920 # basadress till timer1 # kvittera interruptet genom att ”skriva” # något till device status register stw r0,0(r8) # device acknowledge movia r4,mytime call tick movia r4,mytime call puttime POPMOST # återställ register eret Eftersom vi använder subrutin måste vi skydda de flesta registren med PUSHMOST/POPMOST

William Sandqvist 7.8 Avbrott i avbrott?

William Sandqvist 7.8 Avbrott i avbrott

William Sandqvist 7.8 Avbrott i avbrott

William Sandqvist 7.8 Avbrott i avbrott Om rutinen får avbryta sig själv:  Spara ESTAUS och EA  Kvittera det egna avbrottet (device acknowledge)  Sist: ettställ PIE, Globalt Enable … Här kan rutinen bli avbruten …  Nollställ PIE, Globalt Disable  Återställ ESTATUS och EA  ERET Om rutinen får avbrytas av andra (ej sig själv):  Spara ESTAUS och EA  Kvittera det egna avbrottet (device acknowledge)  Förbjud det egna avbrottet i IENABLE, Lokalt Disable  Sist: ettställ PIE, Globalt Enable … Här kan rutinen bli avbruten …  Nollställ PIE, Globalt Disable  Återställ ESTATUS och EA  ERET

William Sandqvist 7.11 Vektoriserat avbrott

William Sandqvist 7.11 Vad gör Alteras ”Wrapper”

William Sandqvist 7.11 Hanteringsrutin i C

William Sandqvist 7.11 Funktionsprototyp för Hanteringsrutin

William Sandqvist 7.11 Initialisering

William Sandqvist Serieport

William Sandqvist 7.14 initfix_int()

William Sandqvist Avbrott i avbrott

William Sandqvist Anrop

William Sandqvist ienable (ctl3)

William Sandqvist