Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega 16
luigi1999
20.01.2013, 22:00
Hallo,
Ich wollte fragen ob man einen Atmega16 mit anderen dieser Art verbinden kann also mehr Anschlüsse auf zwei oder mehr Microcontroller hat. Kann man da z.b einen Haupt Microcontroller einrichten der Befehle an andere gibt oder so ähnlich?
Gruß Luigi
Sicher kann man ;-)
Man kann dazu z.B. einfach die UART verweden (wenn man nur zwei Microcontroller hat), oder auch I²C, damit kann man viele µC´s verbinden.
Wenn man gerne erfinderisch sein möchte, kann man sich auch mit ein paar Pins selbst etwas zusammen basteln, also z.b. ein paar Pins als Datenleitungen benutzen, die der andere ausliest, wenn ein bestimmer Pin "hochgezogen" wird.
Einfacher ist aber wahrscheinlich UART oder I2C.
Im rn-wissen.de gibt es einige sehr hilfreiche Artikel zur Verwendung dieser Schnittstellen, je nach dem welche Sprache man zur Programmierung verwenden möchte:
I²C:
http://www.rn-wissen.de/index.php/I2C
Mfg Thegon
radbruch
20.01.2013, 22:08
http://lmgtfy.com/?q=avr+twi+i2c
Hey,
du kannst das, wie schon gesagt, über I²C machen (hier ein Beispiel wie ich mein Raspberry mit 4 CapSense Feldern und einem ADC ausstatte):
http://kampis-elektroecke.de/?page_id=2802
Oder per UART, SPI, RS422, RS485, etc.
Die Fragen sind nur:
a) Was willst du realisieren?
b) Für welche Entfernungen willst du den Bus auslegen?
c) Wie komplex wird es werden?
d) Was für Kenntnisse hast du?
Ansonsten: Google ist dein Freund ;)
luigi1999
21.01.2013, 07:08
a) Einprojekt das eben mit mehreren Ic's läuft da ich mehr digitale ein und Ausgänge brauch
b) höchstens 1 Meter
c) naja Zeit so ich möchte halt wie gesagt mehr digitale Ausgänge haben
d) Ich kenne mich gut mit Elektronik aus aber fange mit IC,s gerade an
Hey,
wenn du mehr GPIOs brauchst kannst du auch einfach einen PCF8574 Portexpander nutzen.
Du kannst bis zu 8 Stück an einem Bus betreiben und jeder gibt 8 digitale I/O.
Hallo,
oder alternativ Schieberegister für die Ausgänge und Multiplexer für die Eingänge verwenden.
Grüße, Bernhard
luigi1999
21.01.2013, 16:25
köntest du mir ein passendes Angebot z.b auf e-bay zeigen, dass meine Vorstellungen erfüllte
Das hat zwar 7€ Versand aber ich persönlich würde das nehmen:
http://www.ebay.de/itm/PCF8574-IO-Expansion-Board-I2C-bus-to-8-bit-parallel-/250846403731?pt=LH_DefaultDomain_0&hash=item3a679c5c93#ht_1311wt_952
luigi1999
21.01.2013, 17:10
OK dass ist sicherlich gut aber ich meine eher ein Modul, dass man verlöten kann z.b auf einer Platine. Sodass man in der Software mehrere digitale Ausgänge benennen kann. Geht es vielleicht so, dass ich einfach TX und RX mit einander verbinde also über kreuz da das eine ein Sender ist und das andere ein Empfänger?
Hey,
das Modul was ich dir da gepostet habe verwendet I²C.
Du kannst es natürlich auch so machen wie du gesagt hast, dass du zwei Mikrocontroller nimmst und die über Kreuz mittels Rx und Tx verbindest.
Dann verwendest du die UART Schnittstelle beider Controller.
Wenn du was lötbares haben willst und bei I²C bleiben willst, bleibt dir wohl nichts anderes übrig als den Teil mit dem PCF8574 händisch nach zu bauen.
luigi1999
21.01.2013, 17:35
Ich würde das dann mit TX und Rx ,machen nur eine Frage. Kann ich beim Programmieren einfach die digitalen Kanäle weiter zählen also bis z.b. 20?
luigi1999
21.01.2013, 18:06
Ein Atmega16 hat 13 digitale Kanal. Wenn ich einen Atmega programmierte dann spreche ich den Kanal 1-13 an. Wenn ich nun einen zweiten atmega nutze programmierte ich einfach weiter also dass ich die Kanäle des zweiten atmega von 13-26 programmierte?
Nein das verstehst du falsch.
Du hast zwei voneinander getrennte µC, die du auch einzeln programmieren musst!
Du kannst aber sagen das du bestimmte Befehle von Controller A zu Controller B schickst und Controller B interpretiert diese dann und führt dann ein Kommando aus.
Beispiel:
Controller A und B sind über den UART miteinander verbunden.
Controller B empfängt Befehle über den UART und wertet diese aus.
Du sendest mit Controller A den Befehl "Set D2"
Controller B empfängt den Befehl und analysiert diesen. Anschließend weiß er, dass du einen Pin setzen willst (Befehl "Set"). Bei dem Pin handelt es sich um den Pin D2
Im Grunde schreibst du für den Controller B einfach nur eine Software die bestimmte Befehle, die über den UART gesendet werden, erkennt und passend umsetzt (für einen Anfänger würde ich aber eher die I²C Methode empfehlen - sprich PCF8574. Der ist super einfach anzusteuern und bereitet nicht so viele Probleme).
porter91
21.01.2013, 19:41
Ein Atmega16 hat 13 digitale Kanal. Wenn ich einen Atmega programmierte dann spreche ich den Kanal 1-13 an. Hat ein Atmega 16 nicht 4 Ports a 8 Pins aslo sprich 28 und wenn du dann ja zwei verbinden möchtest z.b. über I2C hast du immer noch 26.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.