Forum: Mikrocontroller und Digitale Elektronik Datenübertragung zwischen ATMegas - SPI/TWI/Ser


von alex (Gast)


Lesenswert?

Hallo,

ich möchte gern zwischen 2 ATMegas Daten bidirektional übertragen, wobei 
einer als Master fungiert (d.h. er initiiert die Übertragung).

In meinem Fall möchte ich einen ATMega8 mit 8MHz/intern verwenden, um 
ein GLCD incl. Touchpanel anzusteuern, und eine API zur Ausgabe und 
Eingabe (Text, Buttons ...) zur Verfügung zu stellen. Diese 
"LCD-Einheit" will ich dann in anderen Geräten wiederverwenden. Die 
Ansteuerung dieser "LCD-Einheit" soll über einen anderen µC (z.B. 
ATMega8 @16MHz-extern), der dann als Master dient, erfolgen.
Alle ATMegas werden aber die ISP-Schnittstelle verwenden (die 
"LCD-Einheit" evt. noch den ADS7843 an der SPI haben) und die 
TWI/I²C-Schnittstelle ist auch benutzt (Temperaturfühler, RTC, ...).

Ich würde gern die SPI-Schnittstelle bevorzugen, weiss aber nicht, wie 
ich den dadurch entstehenden Problemen aus dem Weg gehen kann (in der 
ApplicationNote042 habe ich etwas von Widerständen gesehen, um ISP und 
SPI zu verwenden).
Nach meinem derzeitigen Kenntnisstan, würde ich meinen, das die 
Verwendung von TWI leichter umzusetzen ist.
Die serielle Schnittstelle setzt wohl voraus, das ich bei den 
miteinander verbundenen ATMegas externe Taktgeber verwende, den ich aber 
bei der "LCD-Einheit" aus Platzgründen sparen wollte.

Hat jemand schon Erfahrungen sammeln können, um mir hier einige Tipps zu 
geben damit mir einige Tage der Verzweifelung erspart bleiben?

Vielen Dank
Alex

von Michael H* (Gast)


Lesenswert?

ich habe auch mehrere geräte an einem spi-bus hängen und programmiere 
auch die zwei atmels, die daran hängen per isp. geht völlig problemlos. 
du musst nur aufpassen, dass der bus nicht belegt ist, wenn du 
programmieren willst.
dazu evtl deine reset- (und SS-) pins ver-oder-n und jeweils an einen 
portpin der atmels legen. wenn beim oder-gatter eine 1 rauskommt, haben 
alle atmels ruhig zu sein.

von fubu1000 (Gast)


Lesenswert?

Hallo,
du brauchst keine externen Taktgeber bei SPI, du verwechselst das wohl 
mit USART. Aber so weit ich seh, verwendest du den USART noch nicht. 
Also benutz diesen doch einfach und mach den Quarz an deinem Slave, das 
bissl Platz.
Falls viele Daten in kurzer 'Zeit gesendet werden müssen ist SPI wohl am 
besten. TWI und USART sind nit so schnell.
GRUSS und nacht

von Michael H* (Gast)


Lesenswert?

alex wrote:
> Die serielle Schnittstelle setzt wohl voraus, das ich bei den
> miteinander verbundenen ATMegas externe Taktgeber verwende, den ich aber

@fubul1000
er meint damit wohl einen externen baudratenquarz, um fehler zu 
vermeiden, die sich aus unpassender und variirender frequenz des 
internen osziallators ergeben.
außerdem er hat serielle schnittstelle geschrieben, was eher auf die 
uart als auf spi hindeutet...

fubul1000 wrote:
> Falls viele Daten in kurzer 'Zeit gesendet werden müssen ist SPI wohl am
> besten. TWI und USART sind nit so schnell.

twi ist wirklich lahm, dafür hat es das nette feature des automatischen 
adress-vergleichs und sogar bei manchen avrs die möglichkeit, den µc so 
aus dem sleep zu holen.
uart geht iirc mit max fcpu/8, spi geht mit max fcpu/2.
da musst du dann aber schon auf deine leitungen aufpassen.

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.