Hallo Wenn ein SPI Gerät in einer While(1) Schleife ständig gepollt wird, so sollte man drauf verzichten durch eine Interruptroutine (im Host) ein SPI Kommando zu senden. Durch die While Schleife die ständig ausgeführt wird, kann es sein, dass gerade das /CS aktiv (Low) ist und Datenaustausch stattfindet. Kommt jetzt ein hochpriorer Interrupt (z.B Taste) und veranlasst ein SPI Kommando, so würde die aktuelle Übertragung gestört, und das System verhält sich komisch. Kann man sowas irgendwie umgehen?
du könntest z.b. bein eintritt in die SPI tx/tx funktion global alle interrupts sperren und am ende wieder einschalten. wenn das nicht geht (weil interrupts währenddessen laufen sollen) eine art spinlock benutzen...
Hallo, ohen jetzt auf Dein Konzept (Pollen und IRQ für SPI) eingehen zu wollen oder zu können: wenn in einer eben nötigen Poll-Routine kein IRQ auftreten darf, muß man den eben solange sperren... Bei den üblichen CPUs wird er dann nach Freigabe abgearbeitet und da ist der Poll-Zyklus ja dann sicher zu Ende. while { IRQ sperren pollen IRQ freigeben } Ob es im Konzept einen Sinn macht, überhaupt so zu verfahren, mußt Du wissen. Gruß aus Berlin Michael
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.