Forum: Mikrocontroller und Digitale Elektronik AVR Atmega8 und I2C Netzwerk


von Klaus T. (utanne)


Lesenswert?

Hallo Leute,

ich möchte Euch um eine Einschätzung bitten, ob der Atmega8 folgendes 
kann. Ich bitte bei meiner Frage um Nachsicht, da ich bisher keine 
Erfahrung mit Atmega8 habe.
Ich möchte ein I2C-Netzwerk mit bis zu 10 Atmegas aufbauen, wobei einer 
per USB (PB2 und PB2) vom PC aus gesteuert werden kann. Dieser Atmega 
fungiert als I2C-Master für die anderen per I2C angeschlossenen Atmegas. 
Die I2C-Slave Atmegas sollen jeweils 4 Relais (PD2-PC5) steuern können. 
Über jeweils 5 Taster (PC0-PC4) möchte ich einen manuellen Betrieb 
ermöglichen. Über einen Ausgang (PB0) möchte ich einen, in gewissen 
Grenzen per PC einstellbaren Takt erzeugen, den ich auch per Taster 
zuschalten kann. Eine RS232 Schnittstelle möchte ich pro Slave auch noch 
einbauen. Damit möchte ich Daten auslesen und über den I2C Bus an den 
Master und von dort an den PC senden.

- uC soll per USB vom PC gesteuert werden können
- uC soll alternativ per I2C gesteuert werden können
- uC soll eine RS232 Schnittstelle realisieren
- 5 Taster
- 4 Schaltausgänge
- zuschaltbarer Taktausgang

1) Reichen die Resourcen des Atmega8?
2) Ist dies Software-Technisch überhaupt zu realisieren?
3) Kann der Atmega erkennen, ob er am USB oder I2C hängt und somit die 
entsprechende Rolle automatisch ausführen kann?

Vielen Dank, µTanne

von Lehrmann M. (ubimbo)


Lesenswert?

Thomas T. schrieb:
> 1) Reichen die Resourcen des Atmega8?
> 2) Ist dies Software-Technisch überhaupt zu realisieren?
> 3) Kann der Atmega erkennen, ob er am USB oder I2C hängt und somit die
> entsprechende Rolle automatisch ausführen kann?

1. ja
2. ja ist aber kein Anfängerprojekt
3. selbstverständlich

Ich muss dir ehrlich sagen, dass das Projekt gut zu machen ist und auch 
nicht sonderlich komplex. Ich muss dir aber auch sagen, dass ich nicht 
der Meinung bin, dass auch nur die geringste Chance besteht, dass du 
dieses Projekt mit deinem jetzigen Wissenstand erfolgreich beenden 
kannst.

Du musst dich wirklich für AVR interessieren - nur wegen einem Projekt 
anzufangen das geht daneben. Garantiert. Wenn dann musst du dich richtig 
einarbeiten und das macht man nicht wegen einem Projekt. Deine Fragen 
stellen sich nach diesem Vergleich: 'Ich: Das ist ein Airbus 380' - 'Du: 
kann der auch fliegen?'. Das ist einfach Grundwissen. Ich will dich 
nicht runtermachen aber du solltest dir genau überlegen, ob du mit AVR 
anfangen willst, weil du einen Hausbus billig haben möchtest oder ob du 
dich wirklich für AVR interessierst. Ich kann dir aus Erfahrung sagen, 
dass Vertreter der ersteren Gattung nach 1-2 Wochen desillusioniert über 
ihrem Projekt sitzen und das ganze im Endeffekt in der Ecke landet. 
Lehrgeld nennt man das. 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

So nun mal zum Technischen: Was genau willst du denn realisieren? Dir 
muss klar sein, dass der I2C sinnvoll nur wenige Meter verwendet 
werden kann. Für alles über 2m würde ich dringendst RS-485 bzw. CAN 
empfehlen. Ich persönlich bin kein sonderlich großer Freund von I2C über 
die Platine hinaus - danach ist der Bus einfach viel zu anfällig und 
hängt sich in meinen Augen ein bisschen zu oft auf, ect... der Kampf mit 
den Übertragungsfehlern halt. CAN z.B. hat damit wenige Probleme.

von Frank Q. (franki)


Lesenswert?

Thomas T. schrieb:
> Über einen Ausgang (PB0) möchte ich einen, in gewissen
> Grenzen per PC einstellbaren Takt erzeugen,

Das ist mir zu schwammig.
Aber warum 10 ATmegas? Einer würde doch reichen.

von Klaus T. (utanne)


Lesenswert?

Hallo Michael,

vielen Dank für Deinen Beitrag. Du hast es richtig erkannt. Ich habe mit 
Atmegas sehr wenig Erfahrung. Vor vielen Jahren habe ich 80C5x und FPGAs 
programmiert. Aber 10Jahre sind Lichtjahre bei der Elektronik. Die Zeit 
dazwischen habe ich mit Software verbracht. Anyway, det muss! Ich habe 
dafür 5Monate Zeit. Reicht das?

Deine Antwort hilft mir sehr. Somit habe ich schon die erste Hürde 
genommen und eine vernünftige HW ausgewählt.

Nun zur Technik. Ziel ist es, für einen Messplatz eine kleine 
Steuerkiste zu erstellen an die die Testobjekte angeschlossen werden 
können. Um den Durchsatz zu erhöhen, können 1, 2, 10 oder mehr 
Steuerkisten hinzugefügt werden. Jede Kiste hat also einen Eingang und 
Ausgang für Stromversorgung, I2C und Messleitungen. Die Steuerkisten 
liegen dicht beieinander. CAN-Bus anstelle von I2C zu verwenden wurde 
auch schon diskutiert und wurde mit dem Argument, "es sei zu 
kompliziert" verworfen. Ich habe mit CAN-Bus keine Erfahrung und lasse 
mich gern von einer besseren und sicheren Lösung überzeugen.
Der Ablauf sieht vor, dass immer nur eine Steuerkiste aktiv ist. Es 
werden auch keine riesigen Daten über den Bus geschickt. Im Vordergrund 
steht das Zuschalten der 4 Relais und das Aktivieren des Taktsignals. Es 
geht hier eher gemächlich zu. Der Takt soll zwischen 2 und 10 Hz liegen.

Kannst Du mir bitte Deinen bevorzugten Programmer und Software nennen. 
Ich weiss, dass es hier im Forum gute Literatur gibt. Aber eine 
persönliche Empfehlung ist etwas anders.

VG µTanne

von Oliver J. (skriptkiddy)


Lesenswert?

Thomas T. schrieb:
> Ich habe
> dafür 5Monate Zeit.

Sagt wer? Dein Chef?

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.