Hallo, Ich möchte jede 100ms ein Erreignis vom µC ausgeführt bekommen. Das werde ich über den Timer Interrupt machen. Der µC kommuniziert mit einem IC mittels SPI. Ausserdem möchte ich wie geschieben jede 100ms (muss nicht sehr genau sein) z.b. ein Pin toggeln. Wenn der Interrupt zum toggeln wärend der SPI Verbindung ausgelöst wird, wird ja die SPI-Verb. unterbrochen (oder?). Das kann ich gar nicht gebrauchen. Richtig wäre: Timer läuft über -> Wenn Datenübertragung stattfindet, dann warten -> Datenübertragung zu ende -> Pin toggeln. Komme nicht drauf, wie ich das machen soll. Kann, bitte Einer helfen? Danke Gruss Alex
Als erstes solltest Du mal mitteilen, welchen µC Du verwendest!. Je nach Typ ist das Verhalten unterschiedlich. Läuft die SPI Kommunikation auch über Interrupts? Eventuell während der Datenübertragung einfach Interrupts ausschalten? Was willst Du noch alles im Timerinterrupt erledigen?
Siehe Interrupt. >Wenn der Interrupt zum toggeln wärend der SPI Verbindung ausgelöst wird, >wird ja die SPI-Verb. unterbrochen (oder?). Wieso? Ausserdem kann man das sinnvoll so zusammstellen, dass sich garantiert nix gegenseitig behindert, siehe Multitasking. MfG Falk
Ich verwende den atmega32 und "programmiere" in Bascom. Wärend der Interrupts wird eine andere Bootschaft über SPI geschickt. Ein Beispiel: Ich schicke auf den Bus ständig die Uhrzeit (ca. 300ms). Unabhängig davon will ich auf den Bus (ca. jede 100ms) eine andere Nachricht schicken, deren Inhalt immer gleich ist. Hoffe das ist verständlich genung. Gruss Alex
Was bringt Dich nun, im Lichte des im Datenblatt beschriebenen, auf diese Frage? D.h. wenn Du Dir die Beschreibung im Datenblatt durchliest, was genau scheint Dir Deine Frage notwendig zu machen? Ansonsten könnte man hier nämlich nur das Datenblatt wiedergeben und dazu habe ich keine Lust.
> Ein Beispiel: > Ich schicke auf den Bus ständig die Uhrzeit (ca. 300ms). > Unabhängig davon will ich auf den Bus (ca. jede 100ms) eine andere > Nachricht schicken, deren Inhalt immer gleich ist. > > Hoffe das ist verständlich genung. Natürlich ist es das. Und, wie löst du das im täglichen Leben? Du hast ein Funkgerät. Alle 3 Sekunden sagt Franz laut die Uhrzeit während du jede Sekunde "Links", "Rechts", "Oben", und "Unten" ja nachdem was erforderlich ist, dem Kranführer mitteilst. Dein Kranführer versteht nichts, weil ihr beide durcheinander quatscht. Wie löst du dieses 'Problem'? (Hinweis: Wie hat es die Nasa früher gemacht und macht es heute noch? Da sind 30 Techniker in einem Raum, jeder vor seiner Konsole. Alle wollen was vom Astronauten. Die Nasa hat für so etwas einen CAPCOM. Das ist ein Mann im Kontrollzentrum. Jeder der etwas von einem Astronauten will, muss sich beim CAPCOM melden, der das dann zum Astronauten durchgibt. Wie kann so ein Vorgehen die beschriebene Problematik lösen, dass der Astronaut am anderen Ende nix versteht?)
>Wärend der Interrupts wird eine andere Bootschaft über SPI geschickt. Vergiss es. Ins SPI schreibst du entweder nur im Interrupt oder nur in der Hauptschleife. >Ich schicke auf den Bus ständig die Uhrzeit (ca. 300ms). >Unabhängig davon will ich auf den Bus (ca. jede 100ms) eine andere >Nachricht schicken, deren Inhalt immer gleich ist. Dann setzt du in deinem Interrupt ein Flag wenn er aufgetreten ist und sendest deine 100ms Message in der Hauptschleife. Dann zählst du im Interrupt noch bis drei und setzt ein Flag das du bis drei gezählt hast. Dann sendest du deine 300ms Message in der Hauptschleife.
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.