Und wie lest ihr dann den Kompass aus? über PWM?
Druckbare Version
Und wie lest ihr dann den Kompass aus? über PWM?
hallo,
Wer schon mal versucht hat, etwas digital zu regeln, weiss: Das ist ist IMMER eine Frage der Zeit, quasi der Performance.Zitat:
Ich glaube bei der Trennung geht es weniger um die Performance, als um die Aufteilung des Problems in zwei Teile. Oder?
Etwas mit PWM auslesen stelle ich mir zumindest sehr tricky vor. Was hat denn dieser Kompass für eine Schnittstelle.Zitat:
Und wie lest ihr dann den Kompass aus? über PWM?
mfg
achim
1234567890
hallo,
Nicht umsonst wird bei (den meisten) Mikrocontrollern das ganze in eine eigenständige Hardwareeinhait USART ausgelagert.Zitat:
Nicht umsonst wird bei Computern das Ganze in eine eigenständige Netzwerkkarte ausgelagert.
Wenn man diesen, mit samt seinen Interrupts und mittels gut organisierter Lese-/Schreibpuffer (RXCINT/DREINT) nutzt,
sehe ich selbst bei hohen bps kaum ein Problem, also m.M.n. kaum mit Ethernet-Zeit- und Kollisionsproblemen zu
vegleichen.
mfg
achim
Hallo,
kann man irgendwie Prioritäten setzen, dass also der Slave nur Senden kann wenn der Master nicht sendet, oder anders gesagt, dass der Master ein Signal schickt, wenn er nichts senden will, dieses Signal aber dann von der Antwort des Slaves überlagert wird?
@Chypsylon: Den kompass lesen wir, wie du bereits vermutet hast, über Pwm aus.
Gruß
Lukas
Es gibt noch die Möglichkeit nach CAN Bus Art. Da kann jeder jederzeit senden. Jedes gesendete Bit wird zeitgleich vom Sender selber gelesen, wird es als überschrieben erkann, geht der Sender vom BUS und sendet neu wenn der Bus frei ist. Das klappt deshalb weil der BUS mittels Pull-Up hochgezogen wird und der Sender diesen auf L zieht, die Daten also L Aktiv sind ein H wird nicht gesendet das ersetzen die Pull-Up.
Der CAN Bus kann aber auch per Polling arbeiten und trotzdem während dessen von Sendern höherer Priorität (mehr L Pegel) unterbrochen werden, so wird gewährleistet das wichtige Meldungen Vorrang behalten. Ähnliches klappt auch mir RS232 und CAN bus Treibern wenn man sich das in ASM selber "Bastelt". Es muss halt JEDES Bit(vom Sender) auf überschrieben geprüft werden.
http://de.wikipedia.org/wiki/Controller_Area_Network
Gruß Richard
So programmieren das der Slave nur antwortet wenn ihm der Master vorher den Befehl dazu gibt und der Master muss dann eben mit dem senden solange warten bis er eine Antwort erhalten hat (oder ein Timeout erreicht ist) ;)
Eine andere Möglichkeit wäre auch noch SPI, wenn euer Controller das kann (was normalerweise der Fall ist). siehe z.b. http://www.ermicro.com/blog/?p=1050
Hallo,
SPI Schnittstelle wäre ebenfalls vorhanden, stimmt.
Ist das die bessere Lösung gegenüber seriell?
Gruß
SPI und I2C kann zur Not auch per Bitbanging in Software gemacht werden.
SPI kann in Harware ne ganze Ecke schneller sein als UART