-
Ich habe auch noch was gefunden. Bei Atmel gibt es einen Appplication note : AVR302: Software TWI Slave Implementation.
Den Link finde ich gerade nicht, da ich mir das PDF gesichert hatte.
Vielleicht hilft das ein klein wenig. [-o<
Viele Grüße
Helge
-
Zurück zum UART:
Da gibt es noch eine ganz andere Lösung, für die du allerdings etwas Hardware brauchst (MOS4551, 1.10€ bei Reichelt).
Mit einem analog-Schalter wie dem CD4551 = MC14451 könntest du RxD und TxD zwischen Slave und PC umschalten.
"Quad 2-Channel Analog Multiplexer/Demultiplexer"
Am Master bräuchtest du eine I/O-Line zum Schalten, der Slave (Sensor-Daten-Sammler) sieht aus wie sonst auch.
Schaltest du Richtung Slave, kannst du mit ihm eine Kommunikation starten und Daten senden/abfragen. Initiiert wird die Abfrage der Daten vom Master.
Um Daten zum PC zu übertragen/abzufragen, schaltest du Richtung PC.
Falls du Daten vom PC zum µC schicken willst (PC initiiert), dann käme noch eine Flusssteuerung hinzu XON/XOFF (Software) oder RTS/CTS (Hardware).
An weiterer Hardware noch 2 Widerstände als Pullups, damit offene Leitungen nicht rumhampeln.
-
des wär auch eine idee...aber des würd nicht gehen bei mir...weil so wie ich des verstanden habe, is immer nur eine verbindung aktiv..wenn ich sag ich mal meine ausgewerteten daten an den pc schicke, kann ich mit dem hauptproz. nicht mehr auf die sensor daten reagieren, evt. ausweichmanöver einleiten..etc. weil er sie in dem moment ja nicht empfangen kann oder seh ich des falsch?
des is doch schon seltsam...alle schreiben bei so einer frage gleich: da ist am besten i2c zu benutzen..aber anscheinend hat des noch keiner in bascom gemacht?!
@helgeK:
des hab ich auch schon gefunden..ist aber ja auch eine softwareseite lösung und zudem noch kostenpflichtig oder?
gruss hacker
-
Naja, wenn du zB über I2C oder sonst irgendwas mehrer µC zusammen hängst, dann kannst du auch nicht *gleichzeitig* Sensordaten ampfangen *und* was vom Master zum PC schicken. Alles, was du machen kannst, ist sequenziell zu arbeiten; du hast ja keinen parallel-Rechner.
Was zum PC schicken dauert ja nicht so lange. Oder sind es MB-weise Daten?
Selbst wenn, kannst du ne Pause machen, den Slave auf Daten abfragen und danach weiter mit dem PC reden. Wenn du alle 1 ms auf die Daten des Slaves schaust, sollte das doch zu machen sein.
Alternativ legst du ne Leitung vom Slave auf einen externen Interrupt des Masters, um ihn wachzurütteln daß er endlich seine Daten abholt.
Und es ist nicht so, daß der Slave unaufgefortet schickt, sondern die Daten werden vom Master abgefragt. Ein Protokoll dazu must du dir eben überlegen (musst du bei I2C oder wie auch immer ja auch).
Und was I2C in BASCOM angeht, da gibt es I2C-Master-Routinen.
Für den Slave genügt es prinziell das Handbuch zu haben, zu wissen, wie man auf Register zugreift und etwas Gehirnschmalz. Das geht oft schneller und besser als sich im Web den Wolf zu suchen und Zeug zu finden das dann doch nicht geht ;-)
-
ok, dann guck ich mal..:) aber die fragen werden wieder kommen ^^
gruss hacker