PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : komonikation zwischen 2 atmega8



Gary
03.09.2009, 19:50
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, 20: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.

Gary
05.09.2009, 19:37
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?

MelMan
05.09.2009, 19:48
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

Gary
05.09.2009, 20:15
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, 17: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, 17: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

MelMan
06.09.2009, 18:07
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, 18:53
könntest du evtl. noch nen Schaltplan dazuposten??

MelMan
06.09.2009, 22:37
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.

Gary
09.09.2009, 14:39
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, 17: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.

MelMan
09.09.2009, 18:59
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.

Gary
28.09.2009, 16:24
hey coo,l danke euch^^
probier ich mal aus.