Archiv verlassen und diese Seite im Standarddesign anzeigen : Irgendeine Kommunikationsmöglichkeit M32 zu M8
Lunarman
10.06.2007, 20: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.
Vielleicht über RS232?
PS: Ich kenn mich da auch nich so aus, würde mich auch mal interessieren.
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...
Sry...
In RN_Wissen wird dann also Uart immer als RS232 bezeichnet...
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, 22: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.
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.