Hallo,
folgende Situation:
Ich habe an einem Master-Atmega 4 Slave-Atmegas andere hängen. Die
Pinbelegung ist zufällig und fest auf der Seite des "Masters".
Ich würde gerne bestenfalls ohne Quarze für die Slaves auskommen (die
machen nur zeitunkritische Sachen). UART fällt also raus, hab sämtliche
Beiträge im Forum gelesen^^ Also nur synchrone Übertragung. Zur
Verfügung stehen maximal 5 Pins für jeden Slave am Master.
Jetzt also die Frage:
Was benutze ich bestenfalls für die Vernetzung? Auf der Seite des
Masters sollte das ganze in Software implementiert sein (zufällige
Pinbelegung), auf der Seite der Slaves bestenfalls mit einer der
Hardware schnittstellen.
Die Übertragungsrate ist ziemlich egal, die Kommunikation soll immer
durch den Master gestartet werden und mit einer Antwort (Ergebnis) durch
den Slave erwidert werden.
Hoffe auf den passenden pointer.
Grüße
Hallo,
danke für die Antwort. Wie beschrieben ist der Pin Aufbau unabänderlich
am Master (Platine ist schon fertig, war vorher für ne andere
Ansteuerung gedacht).
Ausserdem kann ich auf Grund dass die slaves an und abgesteckt werden
keine festen IDs vergeben, muss aber trotzdem erkennen können, wo der
jeweilige Controller sitzt.
Grüße
>UART fällt also raus, hab sämtliche>Beiträge im Forum gelesen^^ Also nur synchrone Übertragung.
Warum ? Hast Du extreme Temp.-schwankungen?
Mit einem kallibrierten int. Osz. sollte es laut
Datenblatt, bei kleinen Übertragungsraten, sicher gehen.
@ Falk
>wieder einer der keine Datenblätter lesen kann.
schau Dir bitte mal unter "Typical Characteristics"
die Diagramme der "FREQUENCY vs. TEMPERATURE" an.
Dann entscheide selbst für Dich, ob Du keine Prozentrechung
kannst.
Im Bereich um Zimmertemp. (0..40Grad), bei 2400 Baud und
einer Taktfreq. des µC von 4Mhz, geht das vom Feinsten!
:)
@ Klaus (Gast)
>Dann entscheide selbst für Dich, ob Du keine Prozentrechung>kannst.
Keine Bange, Ich kann die ganz gut. Du aber weniger.
>Im Bereich um Zimmertemp. (0..40Grad), bei 2400 Baud und>einer Taktfreq. des µC von 4Mhz, geht das vom Feinsten!
"bei kleinen Übertragungsraten,"
Dein Frequenzfehler durch Temperaturdrift ist immer gleich. Damit ist es
egal ob man auf 2400 Baud kalibriert oder auf 115200.
Der SYSTEMATISCHE Fehler durch nicht ganzzahliges Verhältnis von
Oszillatortakt und Baudrate gemäss bekannter Formel ist vollkommen
temperaturunabhängig.
Man kann also auch genauso gut bzw. schlecht den Oszillator auf eine
Baudratenfrequenz kalibrieren und mit 115k2 RS232 betreiben.
MFG
Falk
Mensch Falk, laß den beratungsresistenten Klaus doch auf die Nase
fallen.
Alle anderen nehmen bitte einen keram. Resonator oder Quarz zum Betrieb
der UARTs, um dieses "Märchen" noch einmal zu erzählen.
Hallo Klaus,
nur weil du die Baudrate runter drehst und keine Lust hast auf den
Fehler zu warten heisst das noch lange nicht das es keine gibt. Hast
wohl die Matrix repariert ? lol
VOTE:
[X] Klaus raus
Hi Gasst,
kannst Du auch keine Datenblätter lesen?
Je höher die Taktfreq. des µC ist, desto höher ist auch die
prozentuale Freq.- Drift über den Temperaturbereich,
aber umso kleiner ist der Fehler der Freq.-Abweichung auf der RS232.
Ich freu mich schon jetzt auf eine Schaltung von Euch, die
in größeren Stückzahlen hergestellt wird. :)
Miles wrote:
> Hallo,>> folgende Situation:>> Ich habe an einem Master-Atmega 4 Slave-Atmegas andere hängen. Die> Pinbelegung ist zufällig und fest auf der Seite des "Masters".>> Ich würde gerne bestenfalls ohne Quarze für die Slaves auskommen (die> machen nur zeitunkritische Sachen). UART fällt also raus, hab sämtliche> Beiträge im Forum gelesen^^ Also nur synchrone Übertragung. Zur> Verfügung stehen maximal 5 Pins für jeden Slave am Master.>
Hallo,
3 Pins für USART (RX, TX und CLK)
2 Pins für 2 Multiplexer/Demultiplexer 4:1
Gruß,
Michael
Hi Michael,
>3 Pins für USART (RX, TX und CLK)>2 Pins für 2 Multiplexer/Demultiplexer 4:1
*Variante 1:*
oder gleich 4 Pins für CS, dann spart er sich den Decoder.
"Platz" hat er ja am Master.
(Summe 7 Pins) + GND
*Variante 2:*
soft Adressierung
Master sendet Adreesse des Slavs + Befehl und Slave sendet
in Abhänigkeit des Befehle Daten zurück.
(Summe 3 Pins) + GND
TX der Slaves AND verküpft auf auf RX vom Master
Das alte Parallelprinterport hatte
8 Datenleitungen
eine Leitung Strobe (Daten sind bereit)
eine Leitung Ack (Daten sind angenommen)
Bau das prinzipiell nach, dann ist egal wie schnell / wie langsam der
Sender oder der Empfänger arbeiten.
Du brauchst ja nicht umbedingt 8 Datenleitungen, Weniger sind auch gut.
Dann hättest Du eine 1-Bit Handshake-Übertragung.
Eine vierte Leitung würde ich dann vielleicht für das Rückstellen
verwenden.
Master Slave
legt Datenbit an
Strobe=1
Liest Daten
Ack=1
Strobe=0
Ack=0
Problematisch wird es sein, eine einmal außer Tritt geratene
Komminuikation wieder aufzusetzten:
Vielleicht dann x 0-Bits senden