Zwei Atmega 32 vernetzen

technicus123

Neues Mitglied
13. Feb. 2009
118
0
0
Sprachen
Hi,

ich würde gerne mal wissen, wie ich am einfachsten und ohne großer Programmierung zwei Atmega 32 Prozessoren verbinden kann, wo einer Master ist und der andere ein Slave ist. Der Slave soll nur vom Master gesagt bekommen, das dieser etwas ein oder ausschalten soll und die Ist- und Sollwerte vom A/D-Wandler übermittelt. Von Bus/Seriell-programmierung oder sonstwas habe ich gerade kein Grundwissen. Wie war das mit Inputbin oder so? hat jemand mal ein Beispiel für mich, was man mir mal vernüftig erklären könnte? Das wäre sehr nett :D ....

Achso... Ich benutze Bascom :)

Gruß
Jens
 
Hallo Jens,

du kannst zwischen den beiden Mikrocontrollern relativ einfach Daten via SPI übertragen, auch mit USART und TWI (I2C) ist das möglich. Ich vermute mal, dass du ein Beispiel in BascomAVR brauchst, da kann ich dir leider nicht weiterhelfen, da ich mich mit Bascom nicht auskenne. Auf der Seite von mcselec findest du aber bestimmt hierzu einige Beispiele.

Grüße,
Dirk
 
Hi Dirk,

da habe ich auch schon nachgeschaut. Leider stehe ich da ein wenig aufm Schlauch. Ich bräuchte mal jemand, der mir Anhand eines Beispiel etwas erklären kann...

Gruß
Jens
 
Hallo Jens!

Die einfachste Variante ist in der Tat die serielle Verbindung....
Dafür kannst du dann die Befehle:
"Printbin" und "Inputbin"
arbeiten.

Wirf einfach noch mal einen Blick in die BASCOM-Hilfe.
Es ist wirklich einfach!

Du kannst dir auch zwei freie Pins als TxD und RxD selbst aussuchen und gibst dies nur in der Config-Zeile mit an.
Zum Beispiel so:
Code:
' Zur Komunikation mit dem Slave --------------------------------------
Open "COMC.5:9600,8,N,1,inverted" For Output As #1          'PC.5 = TxD

Genauso kannst du es mit dem Input machen:
Code:
' Zur Komunikation mit dem Master --------------------------------------
Open "COMC.6:9600,8,N,1,inverted" For Input As #2          'PC.6 = TxD


Im Programm kannst du deine "Anweisungen" oder Werte mit:
Printbin #1 , Variable1
bzw. mit
Inputbin #2 , Variable2
senden bzw. empfangen.

Letztlich gibt es aber dadurch keinen echten Master und Slave. ;)

Was du im Programmablauf ggf. berücksichtigen solltest.....
Beim Befehl Inputbin wartet das Programm immer solange, bis Daten eingehen!
Nicht das du dich wunderst, dass dein Programm "stehen" bleibt und nicht weiter abgearbeitet wird. ;)

Probiere es aber einfach erst mal aus....

Gruß,
Cassio
 
Hi Cassio,

könnte man den Inputbin etc. nicht in einer subroutine laufen lassen? Ich wollte es so machen, das ein atmega32 etc. die Werte auf ein GLCD 240*128 anzeigt und über einen Touchscreen verändert werden können. Der andere Prozessor soll halt nur Regeln, Messen und die Werte wieder auf den Prozessor weitergeben, der den GLCD steuert. Hat sich schonmal jemand in des Thema "Using the UART" eingearbeitet?

Gruß
Jens
 
Hi Jens!

Sicher kannst du das Abfragen von Inputbin per Sub erledigen....
Wenn aber keine Daten eingehen, kannst du nicht per Return zum Hauptprogramm zurück.
Evetuell müsstest du dir einen Interrupt via Timer bauen, der dann einen Return auslöst.

Einfacher ist aber, wenn immer Daten vom Slave zurück gesendet werden.... auch wenn sich nichts geändert hat. ;)

Ich würde sagen, spiel einfach mal ein paar kleine Tests durch, dann findest du am schnellsten für dich eine spezielle Lösung. :)

Gruß,
Cassio
 
Hallo zusammen,

wie wär es mit Interrupts ? Da gibt es einen, der reagiert wenn was im
Empfangsbuffer ist. Und dann einfach mit InputBin einlesen (oder so)

Gruß
Dino
 
Hi Jens,

schau Dir mal mein Projekt Zisternenfüllstandsanzeige an. Dort habe ich einen Mega16 mit einem Mega8 gekoppelt. Mega8 macht Messungen auf Anfrage und sende diese über RS232 an den Mega16. gut, der Mega16 wartet nach dem Messkommando auf die Daten aber ich habe auch bereits Empfangsbuffer implementiert damit mir keien Werte verloren gehen und ich auc asyncron arbeiten kann. Der Rest lässt sich siche rmit wenig Aufwand dazubauen.

Link: http://www.avr-praxis.de/forum/showthread.php?t=266

Grüße,
Ma
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)