Forum: Mikrocontroller und Digitale Elektronik AVR + I2C eine Lösung für den Anfang und für mich


von Marcus K. (schnassi)


Lesenswert?

Hallo!

Ich hoffe ich bin bei euch richtig...?

Kurze Vorgeschichte
Ich möchte meine Ampelsteuerung an meiner Modellbahn ein wenig 
erneuern.Nun habe ich ein Programm geschrieben für den PC zur Steuerung 
(Software).Für die Steuerung der Hardware wollte ich nun mehrere ATmega8 
einsetzen...
Den ersten als Zentrale (Master) der die Befehle vom PC über RS 232 
bekommt, das funktioniert auch und dann die dementsprechende Anzahl an 
Slave's für jede  Kreuzung. Das Programm in den ATmega's einzeln gesehen 
läuft ...
           und nun muß ich sie noch irgentwie zusammenbasteln
                            aber wie ???  :-((

Ich habe mir damals ein AVR Buch (Roland Walter) und das Board gekauft 
und dies auch schon mehrfach gelesen. Das mit dem I2C ist nee tolle 
Sache, wenn man weiß wie.Das Grundprinzip davon habe ich ja verstanden, 
aber mit der Umsetzung  da klemmt es gewaltig. Vielleicht könnte jemand 
so nett sein (und die Zeit aufbringen) mir zu helfen. Ich brauch immer 
ein wenig die Praxis um zu kapieren was da abläuft. Also ein Kurzer Code 
(wenn's den gibt ?) wäre das optimalste (Master-Slave1+Slave2 , LED in 1 
an + LED in 2 an- gesteuert vom Master).

Mir kommt es darauf an wie ich die Adresse im Slave bestimme bzw. 
vergebe? Gibt es da nur bestimmte Pins  oder gibt es da einen Befehl den 
man verwenden muß damit der Slave weiß wo er die Adresse sucht?
Und kann ich dann evt. auch auf Ereignisse reagieren die am Slave 
eintreffen, so das sie über den  Master zum PC kommen? (erst wenn ich 
den ersten Teil verstanden habe)
Ich verwende Bascom 1.11.8.3 und kann mit C oder Assembler nichts 
anfangen.

Auf alle Fälle bin ich sehr lernwillig.....:-))) und ein kleiner 
Ahhhhh...
Effekt wäre das tollste..

Danke schon mal im voraus
Marcus

von unbeschreiblicher Rahul (Gast)


Lesenswert?

Wieso willst du gleich zu anfang mit einem der kompliziertesten Themen 
des AVR anfangen?

von Uwe .. (uwegw)


Lesenswert?

Wenn du fertige I2C-ICs wie den PCF8574 (acht digitale Aus/Eingänge) 
verwendest, wird die Adresse über die Beschaltung von eingen Pins am PCF 
festgelegt.

von Marcus K. (schnassi)


Lesenswert?

Hallo Rahul!
Also danke erstmal für die Antworten!

Ich dachte nicht, das das mit dem I2C das komplizierteste ist als ich 
damit anfing. Und einmal angefangen versuche ich es auch bis zum Ende zu 
bringen - koste es was es wolle und wenns auch ein paar µC sind. Naja 
und dann fange ich immer vorn an mit lesen und mir fällt immer zu jedem 
Thema was ein; so als Modellbahnfreund; da gibt es immer was. Nun bin 
ich beim I2C angelangt und das ist dabei rausgekommen.

Marcus

von Marcus K. (schnassi)


Lesenswert?

Hallo Uwe!

Danke dir auch für die schnelle Antwort.

Gute Idee , darüber hatte ich noch nicht nachgedacht. Nachdem ich das 
Board hatte , habe ich mir 10 ATmegas bestellt. Bei 1,80€ fand ich das 
nicht als zu teuer. Und die Möglichkeiten sind ja rießig mit den µC. 
Dann hieß es esrt mal lesen und losbasteln, an Ideen sollte es nicht 
mangeln. Auch wenn man dies mit den I2C-IC machen kann , würde mich die 
Umsetzung mit den ATmega interessieren. Vieleicht kann man es ja später 
nochmal gebrauchen. Ich hefte mir soetwas immer ab und weiß dann wo es 
steht.

Marcus

von Pete (Gast)


Lesenswert?

Suche mal nach einer I2C Bibliothek hier oder im Internet. Z.B. bei 
Peter Fleury.
Leider sind die meisten Bibliotheken in C geschrieben (denke ich), so 
dass Du vielleicht etwas mehr suchen musst.

Das Benutzen von fremden Bibliotheken ohne das man sie genau versteht 
ist IMHO nicht so schlimm, dazu sind es ja "fertige" libs.

Also nur Mut und viel ausprobieren. Darin liegt ja auch der Reiz eines 
Hobbies. Ist alles erst einmal fertig, wird es langweilig ...

von Marcus K. (schnassi)


Lesenswert?

Hallo Pete!

Danke dir auch für deine Antwort.
Ich werde mich gleich mal auf die Suche machen, vieleicht finde ich ja 
was dazu.
Und zum letzten Satz ... wie wahr, wie wahr

Marcus

von unbeschreiblicher Rahul (Gast)


Lesenswert?

Bzgl. I²C und BASCOM:
Wirf doch einfach mal einen Blick ins BASCOM-Handbuch.
Eigentlich müsste es dazu einen "Programmierbaustein" geben.

Wundere dich aber bitte nicht darüber, dass die I²C-Kommunikation ab 
einer gewissen Entfernung schnarchlangsam ist.
Das Ding nennt nicht umsonst "inter IC communication" und ist eigentlich 
nur für den Datentransfer auf Platinen gedacht (gewesen).

Aber ich habe ja eigentlich gar keine Ahnung...

von Marcus K. (schnassi)


Lesenswert?

Hallo Rahul!

Danke für den Tip.Ich schau mal rein, vieleicht finde ich was 
brauchbares. Der Master in meinem Projekt soll ja den Slave's nur sagen 
Ampel x an oder aus.Die Steuerung ist ja dann im Slave und schaltet die 
Ampelphasen. Aber erst mal den einen Schritt und dann den nächsten.In 
dem Buch was ich habe ist das mit dem I2C ja auch beschrieben. Da ist 
der ATmega ein Master  aber der Slave ist halt ein EEprom und der hat ja 
in dem Fall nur 8 Pins. Die 3 Pins die dort für die Adresse noch zur 
Verfügung stehen sind  oder stehen fest. Sie werden ja mit Masse oder 
Vcc verbunden. Beim ATmega hat mir jemand gesagt  ich soll die Pins high 
oder low setzen, naja soweit so gut. Ich würde sie erstmal als Eingang 
deffinieren, dann auf High oder low setzen und dann muß ich doch aber 
dem Ding sagen : " das ist dein Adressport " oder kann ich nur bestimmte 
Pins für die Adresse nutzen, so das der ATmega automatisch dort 
nachschaut und sagt ich bin gemeint ???
Ich weiß nur nicht, ob ich da mit meinen Gedanken richtig liege, und 
wenn "ja" ,fehlt nur noch der "kleine" Schritt zur Umsetzung.Dafür hatte 
ich vorhin am Anfang nach dem Code gefragt...
So nun schau ich erstmal ins Handbuch.

Marcus

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.