Forum: Mikrocontroller und Digitale Elektronik Atmegas verbinden (SPI?)


von Miles (Gast)


Lesenswert?

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

von Klaus (Gast)


Lesenswert?

Kommste da nicht mit I2C besser?
Das spart Pins am Master. Ist dann aber kein Sternbus mehr.

von Klaus (Gast)


Lesenswert?

edit:

Sternbus -> Sternnetzwerk

von Miles (Gast)


Lesenswert?

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

von Klaus (Gast)


Lesenswert?

>Wie beschrieben ist der Pin Aufbau unabänderlich
>am Master (Platine ist schon fertig

sorry hab ich überlesen :(

von Klaus (Gast)


Lesenswert?

>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.

von genau so (Gast)


Lesenswert?

Neben den Daten kann man uebrigens auch einen Clock verbinden, dh die 
UART waeren dann wieder synchron....

von Klaus (Gast)


Lesenswert?

natürlich noch besser "genau so"!

von Falk B. (falk)


Lesenswert?

@  Klaus (Gast)

>Mit einem kallibrierten int. Osz. sollte es laut
>Datenblatt, bei kleinen Übertragungsraten, sicher gehen.

Und wieder einer, der die Prozentrechung nicht verstanden hat . . .

http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART

von Klaus (Gast)


Lesenswert?

@ 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!

:)

von Falk B. (falk)


Lesenswert?

@  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

von Klaus (Gast)


Lesenswert?

ich kanns langsam nicht nehr höhren!

Diese Märchen von 27 pF am Quarz, kein RS232 ohne Quarz.

von Klaus (Gast)


Lesenswert?

HaHa,

der "Der SYSTEMATISCHE Fehler" ist absolut nicht Taktfreq.
abhänging.?!!?!!

lautes lach

von Falk B. (falk)


Lesenswert?

@  Klaus (Gast)

Wie dumm bist du eigentlich? Wer lesen kann ist klar im Vorteil.

von Klaus (Gast)


Lesenswert?

@ Falk

ohne Kommentar.

(wer Datenblätter lesen kann, mit einem Taschenrecher
auf du steht, wird das feststellen)

von Gasst (Gast)


Lesenswert?

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.

von KlausRaus (Gast)


Lesenswert?

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

von Klaus (Gast)


Lesenswert?

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. :)

von Michael A. (micha54)


Lesenswert?

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

von Klaus (Gast)


Lesenswert?

... wie recht Du hast. Das hilft "Miles" nicht weiter.

von Klaus (Gast)


Lesenswert?

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

von Hans-jürgen H. (hjherbert) Benutzerseite


Lesenswert?

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

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
Noch kein Account? Hier anmelden.