PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Irgendeine Kommunikationsmöglichkeit M32 zu M8



Lunarman
10.06.2007, 19:41
Hallo,
für meinen Roboter brauche ich die Möglichkeit irgendwie einem Mega8 zwei Zahlen bis 255 mitzuteilen. Ich hab bereits einen UART ausprobiert, das hat gar nicht gefunzt. Habt ihr vielleicht noch andere Ideen? I2C find ich ziemlich kompliziert, SPI auch. Aber vielleicht gibts ja auch noch irgendwelche nicht so herkömmliche Kommunikationsmethoden?

Programmiert werden soll das ganze in Bascom.

adrisch
10.06.2007, 20:15
Vielleicht über RS232?
PS: Ich kenn mich da auch nich so aus, würde mich auch mal interessieren.

s.o.
10.06.2007, 20:34
Der war gut... (sorry für das Kommentar;Aber das kann ich mir nicht verkneifen)...

UART=RS232, jedenfalls soweit ich weis bei den AVRs, bis auf dass die Arbeitsspannung verschieden ist.

Schau dich mal im Wiki um, da gibts viele nette Beschreibungen.

Der Mega32 hat schon I2C per Hardware... Wäre also das "simpelste"... bei deinem anderen µ bin ich mir nicht sicher...

adrisch
10.06.2007, 20:45
Sry...
In RN_Wissen wird dann also Uart immer als RS232 bezeichnet...

Rofo88
10.06.2007, 20:53
UART = Universal Asynchronous Receiver Transmitter

das mit speziellen Spannungspegeln ist dann RS232

Drumm kommt zwichen PC und µC immer ein Pegelwandler da die AVRs mit 5V und die RS232 mit +/-12V arbeitet.

@Lunarman
Wenn Du noch ein paar Pins freihast kannste dir ja ne parallele Schnittstelle aufbauen aber warum mit Kanonen auf Spatzen schießen. UART ist ned schlcht und geht auch was für ein problem hattest Du denn?

MfG

Lunarman
10.06.2007, 21:02
Mein problem war, das nie was angekommen ist. Beim m32 musste ich halt soft uart benutzen, da der hardwareuart ja auf dem RN-Control schon besetzt ist.

Die codes:


$regfile = "m32def.dat"
$crystal = 16000000
$baud = 2400

Print "funktioniert rs232"
Waitms 1000

Config Portc.0 = Output
Portc.0 = 0

Open "Comd.6:2400,8,n,1" For Output As #1
Open "Comd.3:2400,8,n,1" For Input As #2
Dim Text As String * 16
Dim Textneu As String * 16

Input "Zeichen eingeben " , Text
Print "RN sagt " ; Text
Print #1 , "RN sagt " ; Text
Input #2 , Textneu
Print "RN sagt " ; Textneu


End

$regfile = "m8def.dat"
$crystal = 1000000
$baud = 2400

Do
Dim Text As String * 16


Config Portb.0 = Output
Portb.0 = 1

Input , Text

Portb.0 = 0


Print "M8 sagt " ; Text

Loop

End

Und was im Terminal ankommt:

funktioniert rs232
Zeichen eingeben abcd
RN sagt abcd
RN sagt
M8 sagt RN sagt

Das ganze ist sehr merkwürdig, da ganz eindeutig eine stabile Kommunikation stattfindet (RN sagt M8 sagt RN sagt), aber der eigentliche String abcd, den ich eingebe, nicht übertragen wird. Auch kann ich mir den Zeilenumbruch nicht erklären. Bin aber auch grad zu müde.

pongi
11.06.2007, 07:52
Naja die SoftUART und SoftI2C Sachen haben bei mir auch nie richtig funktioniert. Aber wenn du I2C überhaupt nicht anderswo benutzt, bietet sich das ja wunderbar an, und ist sowohl beim M32 als auch beim M8 hardwaremäßig vorhanden. Und SoftwareLibs gibts auch zu genüge (zB für C von Peter Fleury). Und für BASCOM sollte es sogar schon dabei sein. Da musst du nur I2cInit, I2cStart, I2cSend/receive und I2c/stop Befehle benutzen, es ist nicht viel komplizierter als UART.