Archiv verlassen und diese Seite im Standarddesign anzeigen : komonikation zwischen 2 atmega8
hi,
ich hab jez schon ein paar mal gesehen das µC miteinander verbunden sind, und das die iwi über bits komonizieren. ich hab zwa schon ein paar beiträge über sowas gelesen aber ich versteh kein word davon.
mich würde interessieren wie das funktioniert, und ob das schwer zu programmieren ist.
Besserwessi
03.09.2009, 21:36
Für die VErbindung gibt es mehrere Möglichkeiten:
SPI (3-4 Leitungen), UART (1 oder 2 Leitungen), TWI=I2C (2 Leitungen)
Die Programmierung ist nicht besonder schwer. halt so ähnlich wie mit einem anderen HW Teil. Dabei ist der Empfänger Teil (bzw. Slave) in der Regel der schwierigere.
cool,
welche von den beiden möglichkeiten wäre leichter für einen anfänger?
und kennst du eventuell ein Tutorial oder ein anderes beispiel wo ich mir das mal genauer angugen könnte?
Ich persönlich würde dir zum Anfang zu einer Kommunikation über UART raten. Mit Bascom ist die Programmierung nicht allzu schwer.
Zum Beginn würd ich erst mal ne Kommunikation zwischen µC und PC machen, wobei da noch zusätzliche Hardware notwendig ist,s. http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht
Ansonsten kannst du hier mal schauen
http://www.halvar.at/elektronik/kleiner_bascom_avr_kurs/uart_rs232_vom_computer/
Zur Not hab ich irgendwo auch noch ein kleines Beispielprogramm in Bascom. Da Kommunizieren ein ATMEGA8 und ein ATMEGA32 miteinander
wen du mir das mit den ATMEGA8 und ATMEGA32 mal zu kommen lassen könntest wäre das supa. von denen hab ich noch n paar^^
High Light
06.09.2009, 18:13
Hallo zusammen,
genau das selbe Problem habe ich auch.
Wenn ich dieses Beispielprogramm auch mal bekommen könnte,
wäre ich verdammt dankbar.
Welche Verbindung wurde in diesem Beispiel benutzt?
Gruß High Light
High Light
06.09.2009, 18:14
Hallo zusammen,
genau das selbe Problem habe ich auch.
Wenn ich dieses Beispielprogramm auch mal bekommen könnte,
wäre ich verdammt dankbar.
Welche Verbindung wurde in diesem Beispiel benutzt?
Gruß High Light
So es handelt sich um eine "einseitige" Kommunikation, also der ATMEGA32 sendet nur an den ATMEGA8. Wenn gewollt kann man das Programm ja ruhig abändern dass der ATMEGA8 ne Empfangsbestätigung zurückschickt oder was auch immer.
Empfänger:
$regfile = "m8def.dat"
$framesize = 48
$swstack = 64
$hwstack = 64
$crystal = 8000000
$baud = 9600
Dim Empfangen As String * 3 Bei mehr Zeichen einfach die Stringzahl erhöhen
On Urxc Onrxd
Enable Urxc
Enable Interrupts
Do
If Len(empfangen) > 2 Then 'Nur als Prüfung da ich immer 3 Zeichen gesendet habe, kann also auch weggelassen werden
. 'Hier einfach den Code was passieren soll
.
.
Empfangen = ""
End if
Loop
End
Onrxd:
Empfangen = Empfangen + Chr(udr)
Return
Sender:
$regfile = "m32def.dat"
$framesize = 54
$swstack = 128
$hwstack = 64
$crystal = 8000000
$baud = 9600
On Urxc Onrxd
Enable Urxc
Enable Interrupts
Do
.
.
.
Gosub Senden
Loop
Senden:
Print "Zu sendender Text"
Return
icebreaker
06.09.2009, 19:53
könntest du evtl. noch nen Schaltplan dazuposten??
Schaltplan ist eig. nur der Standartaufbau für beide Prozessoren, sprich Spannungsversorung, Quarz und Programmieradapter s.hier http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht
Je nach Belieben kann natürlich gleich noch ein Display drangebastelt werden um die gesendeten Daten auch gleich anzuzeigen.
Anschließend noch beide Prozessoren verbinden (Also RxD und TxD). Dabei muss nur drauf geachtet werden dass die Leitungen gekreuzt werden, also RxD von µC1 geht auf TxD von µC2 und umgekehrt.
fielen dank!
damit kann ich was anfangen^^
da wird jetzt ein text gesendet wen ich das richtig sehe, was muss ich machen wen ich eine funtion senden möchte? wie zB das aktivieren von einem relai? wird das mit einem if/then befehl gemacht oder funzt das ganz anders?
Besserwessi
09.09.2009, 18:59
Wenn man befehle Senden will, muß man sich welche definieren. Man kann z.B. einige nicht druckbare Zeichen für die Befehle (oder nur zum einleiten eines Befehls) reservieren.
Mit if/then ist schon eine gute Idee.
Ganz banal kannst du z.B. folgenden Befehl senden: "Relais ein"
Am anderen µC fragst du die angkommenden Daten ab:
If empfangen = "Relais ein" Then
Portb.1 = 1
End If
An Portb.1 hast du dann z.B. dein Relais angeschlossen.
Jetzt kann man sich noch eine kürzere Schreibform überlegen um Zeit und Arbeit zu sparen.
hey coo,l danke euch^^
probier ich mal aus.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.