Hi,
mit welcher Taktfrequenz läuft dein Mega8? Vielleicht kommt er mit dem internen Takt und zwei UARTs nicht mehr nach...
Evtl. mal mit einer niedrigeren Baudrate zum Mega32 fahren und wenn möglich mit einem LCD schauen, was ankommt.
Hallo Zusammen,
ich habe ein Problem in Bascom.
Und zwar soll ein PC Terminal Befehle an einen Mega8 schicken, und dann von diesem aus über SoftUART an einen Mega32.
Die Verbindung zwischen PC & Mega8 funktioniert.
Allerdings funktioniert das SoftUART zum Mega32 nicht richtig.
Hier das Programm des Mega8:
Und hier das des Mega32:Code:'//////////Ports Konfigurieren\\\\\\\\\\ Config Serialin = Buffered , Size = 40 'RS232 per Interrupt buffern Config Serialout = Buffered , Size = 40 Open "COMC.3:9600,8,n,1" For Output As #1 'Txd zum M32 Enable Interrupts '//////////Aliasnamen <Start>\\\\\\\\\\ Dim Serinput As Byte Dim Command As String * 24 Dim Items As Byte Dim Arr(2) As String * 10 '//////////Hauptprogramm <Start>\\\\\\\\\\ Do Gosub Communicate 'Bluetooth PC Kommunikation Loop Communicate: If Ischarwaiting() = 1 Then Serinput = Inkey() 'Ein Zeichen holen While Serinput > 0 ' Solange noch Zeichen in der Warteschleife sind If Serinput = 13 Then ' Zeile ende Items = Split(command , Arr(1) , " ") If Command = "move forward" Then Print "forward" Print #1 , "forward" Print #1 , 13 End If If Command = "move stop" Then Print "stop" Print #1 , "stop" Print #1 , 13 End If Command = "" ' Neu initialisieren Else Command = Command + Chr(serinput) End If Serinput = Inkey() Wend End If Return Close #1 End
Es wird nur der 1. Befehl ausgeführt.Code:Do If Ischarwaiting() = 1 Then Serinput = Inkey() 'Ein Zeichen holen While Serinput > 0 ' Solange noch Zeichen in der Warteschleife sind If Serinput = 13 Then ' Zeile ende 'Commands Abfragen If Command = "forward" Then Speed_left = 200 End If If Command = "stop" Then Speed_left = 1 End If Command = "" ' Neu initialisieren Else Command = Command + Chr(serinput) End If Serinput = Inkey() Wend End If Loop
Also wenn ich am PC forward printe spring der Motor am M32 an.
Wenn ich dann stop printe passiert aber nichts mehr.
ABER: Wenn ich den M32 direkt mit dem PC verbinde geht es.
Es muss also am SoftUART liegen, ich weiß nur überhaupt nicht warum das net geht, bzw nur einmal.
SEROUT hab ich auch schon probiert.
Ich hoffe das Problem ist noch relativ übersichtlich.
Gruß
Lenox
RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de
Hi,
mit welcher Taktfrequenz läuft dein Mega8? Vielleicht kommt er mit dem internen Takt und zwei UARTs nicht mehr nach...
Evtl. mal mit einer niedrigeren Baudrate zum Mega32 fahren und wenn möglich mit einem LCD schauen, was ankommt.
Mit 16 Mhz.
Ein LCD anzuschließen wäre mit sehr großem Aufwand verbunden, ich werd wohl mal die Baudrate runterschrauben.
Laut Oszilloskope kommt ein Signal heraus, nur blöd das ich nicht messen kann welches.
RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de
Mir ist eben noch ne Idee gekommen.
Einfach beide Hardware Rxds und Txds verbinden und dann zum Pc.
Zusätzlich dann noch eine Busy Leitung für Txd, damit nicht beide gleichzeitig senden (per Software).
RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de
Auch eine gute Idee, aber es wäre auch interessant zu wissen, warum das nicht wie ursprünglich gedacht ging :-D
Ich hab gerade ein ähnliches problem. ich versuche mit nem M32 an nen M8 Befehle zu senden. Diese werden aber nicht richtig ausgeführt. So soll er bei "vor" den Motor langsam beschleunigen, ich hör aber nur ein Klicken. Wenn ich dem m8 einfah hart eincode , dass der empfangene text "vor" ist (einfach input text durch text = "vor" ersetzt), dann läuft alles.
der m32 hat soft-uart, der m8 halt hardware-uart. Der m32 rennt mit 16 Mhz, der m8 mit 1Mhz, beide sind auf 9600 eingestellt und der m32 auf 8m1, da ich nicht wusste ,wo ich das beim m8 einstellen muss.
Code:$regfile = "m8def.dat" $crystal = 1000000 $baud = 9600 Dim Text As String * 16 Dim Speed As Byte Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Output A Alias Portc.0 B Alias Portc.1 C Alias Portc.2 D Alias Portc.3 Config Portb.1 = Output Config Portb.2 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 Speed = 50 Do 'Input Text hab ich wie beschrieben auskommentiert, stattdessen halt text = "vor" geschrieben Text = "Vor" If Text = "Vor" Then A = 0 B = 1 C = 0 D = 1 Speed = 50 Do Compare1a = Speed Compare1b = Speed Waitms 4 Speed = Speed + 1 Loop Until Speed = 150 End If If Text = "Rueck" Then A = 1 B = 0 C = 1 D = 0 Do Compare1a = Speed Compare1b = Speed Waitms 2 Speed = Speed - 1 Loop Until Speed = 150 Waitms 1000 End If If Text = "Links" Then A = 1 B = 0 C = 0 D = 1 End If If Text = "Rechts" Then A = 0 B = 1 C = 1 D = 0 End If If Text = "Stop" Then A = 0 B = 0 C = 0 D = 0 End If If Text = "Kurverechts" Then A = 0 B = 1 C = 0 D = 1 Do Compare1a = Speed Waitms 2 Speed = Speed - 1 Loop Until Speed = 50 End If If Text = "Kurvelinks" Then A = 0 B = 1 C = 0 D = 1 Do Compare1b = Speed Waitms 2 Speed = Speed - 1 Loop Until Speed = 50 End If Loop EndCode:$regfile = "m32def.dat" $crystal = 16000000 Config Portc.1 = Output Config Portd.2 = Output Config Portd.7 = Output Config Portd.6 = Output Open "comd.7:9600,8,n,1" For Input As #1 Open "comd.6:9600,8,n,1" For Output As #2 Dim Entfernung As Integer Dim Text As String * 16 Text = "Vor" Do Waitms 500 Portc.1 = 1 Waitms 500 Portc.1 = 0 Print #2 , "Vor" Loop End
o
L_
OL
This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!
http://de.youtube.com/watch?v=qV1cZ6jUeGE
Ich habe schon öfteren von Problemen mit UART und 1 MHZ gehört, kann das aber selber nicht bestätigen, da noch nie probiert Vielleicht liegt's daran.
Nein, das ganze war eigene Blödheit. Ich hab gerade eben entdeckt, dass man besser nicht den Sendepin vom Atmega32 auf den pin legen sollte, an dem auch der Beeper angeschlossen ist
Jetzt funktionierts.
o
L_
OL
This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!
http://de.youtube.com/watch?v=qV1cZ6jUeGE
Der Mist funzt doch nicht. Ich weiß echt nicht, was ich da falsch baue.
o
L_
OL
This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!
http://de.youtube.com/watch?v=qV1cZ6jUeGE
Lesezeichen