Hi, ich habe folgende Frage: Bietet der 18F458 Software Interrupts? Habe es im Moment so gelöst, dass ich einen Interrupt aktiviere (z.B. INT0) und diesen per Software setze. Finde das UNSCHÖN. Hätte gerne Software IRs, die ich bequem setzen und rücksetzen kann und trotzdem alle I/O IRs nutzbar bleiben. Im Datenblatt habe ich leider nix darüber gefunden. Gruß O'
Was ist der Unterschied zwischen einem Softwareinterrupt und einem Call zu einer Funktion, die zu Anfang die Interrupts sperrt ? Keiner. Peter
OK, dankeschön Programmiere in C. Muss ich das dann mit inline_Assembler machen oder gibts da Funktionen/Befehler. Vielen Dank O'
Da wird es sicher einen Befehl zum setzen/löschen des GIE (Global Interrupt Enable) Flags geben. Das sollte in der Doku zum Compiler stehen.
So könnte ein selber gebastelter SoftwareIR aussehen: Void call_SWIR(char IRNr) { // Deactivate Interrupts INTCONbits.GIEH = 0x00; INTCONbits.GIEL = 0x00; switch(IRNr) { case1: // CODE // ……. break; default: break; } // Reactivate Interrupts INTCONbits.GIEH = 0x01; INTCONbits.GIEL = 0x01; } Gruß Steff
Hi, danke für die Antworten. Habe n bissel nachgeforscht (C18 Users Gide) Wenn ichs richtig verstanden habe übernimmt die ISR das Deaktivieren der Interrupts und letztendliche Reaktivieren beim Verlassen. Das bedeutet, dass ich meine SoftwareIRs wie folt realisieren könnte: Struktur strctSWIR erstellen mit x gewünschten IR_Status_Bits. Im Code: .. .. .. strctSWIR.SWIR1 = 0x01; high_isr(); .. .. In der high_ISR frage ich einfach strctSWIR.SWIR1 ab, so wie ich die I/O-Interrupts auch abfrage. Müsste funktionieren oder? Gruß O'
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.