1234567890
1234567890
Geändert von i_make_it (01.02.2015 um 17:31 Uhr)
hallo,
Nicht umsonst wird bei (den meisten) Mikrocontrollern das ganze in eine eigenständige Hardwareeinhait USART ausgelagert.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
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
Vor den Erfolg haben die Götter den Schweiß gesetzt
IMHO nach schon aber über UART (seriell) ist es wahrscheinlich einfacher und sollte genauso funktionieren wenn du es so machst wie ich es oben geschrieben habe.
Ich würde vorschlagen ihr probiert es einfach zuerst über seriell und dann könnt ihr ja immer noch auf SPI umsteigen...
Hallo allerseits,
ich hab hierzu auch ne Frage
Wenn ich (nur) zwei atmega8 miteinander "reden" lassen will reicht es doch wenn ich rx mit tx und andersrum verbinde und dann noch die massen verbinde oder?
mfg Sebastian
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
Lesezeichen