Hallo, ich hoffe ich finde hier Hilfe. Bei meinem jetzigen Problem bin ich trotz 2 monatiger Recherche in einer Sackgasse gelandet. Folgendes vorab geschildert : Ich habe einen Mega8 mit angeschalteten MAX232 und nachgeschalteten Max481 (RS485 BUS). Der Max 481 (Pin 2+3 auf Low) befindet sich permanent im Sendemodus. Die Taktfrequenz für den Mega8 ist ein 14,7456Mhz Oszillator wegen der 0% Fehlerquote bei Serieller Datenübertragung. Die Baudrate beträgt 9600 Baud. Zum Test der RS485 Verbindung verwende ich einen RS485 auf RS232 Konverter der direkt mit der seriellen Schnittstelle meines PCs verbunden ist. Als Testsoftware auf meinem PC verwende ich HTERM. Sende ich nun Daten per Print Befehl -- Print Chr(02) ; "Hier meine Daten an die Kamera" ; Chr(03) (Info: ASCII 02 ist Stx und ASCII 03 ist Etx) empfängt HTERM die Daten Korrekt und Sauber. Am selben RS485 Bus hängt auch eine steuerbare Kamera mit dran, die ich vom Mega8 aus steuern möchte. Die Kamera zeigt jedoch keine Reaktion. Sende ich aber mit HTERM dieselben Daten zurück an meinen RS485 BUS reagiert die Kamera. WARUM ??? Kenntnis: Meine Schaltung sowie meine RS485 Verbindung (zumindest vom Mega8 zum PC) funktioniert. Das Datenpaket ist korrekt, da ich ja vom PC aus die Kamera damit ansprechen kann. Wieso lässt sich vom Mega8 die Kamera nicht über RS485 ansprechen ???? Ich bitte um Hilfe da ich mittlerweile schon davon träume. Wer hat noch eine Idee ? Vielen Dank für jede Anregung schon mal.
Gibt es zu der Kamera bzw. deren Protokoll auch Unterlagen?
>Der Max 481 (Pin 2+3 auf Low)befindet sich permanent im Sendemodus.
Und wenn die Kamera irgedwas zurücksenden will?
Bei der RS485-Übertragung muss man das TXC-Flag des UART auswerten.
Hallo, vielen Dank für die Info. Es handelt sich um eine Panasonic
Kamera mit dem New Panasonic Protokoll. Der Aufbau sieht so aus:
>STX<ADxx;GC7:yyyyyyy>ETX< xx=die Kameraadresse und yyyyyyy=den zu
sendenden Befehl. Ich habe mit VisualBasic 2008 ein kleines Programm
geschrieben, welches mir die Kamera steuert. Das Programm funktioniert
obwohl ich auch nur Daten sende und keine Empfangsdaten auswerte. Die
Daten sende ich in meinem VB-Programm ebenfalls als String, genauso wie
von meinem Mega8 aus. Von VB funktioniert es vom Mega8 nicht mehr obwohl
die mitgeloggten Daten exakt übereinstimmen.
Das TXC-Flag soll Später mit ausgewertet werden. Bis jetzt gibt es aber
nur meinen Sender und EINEN Empfänger, somit denke ich ist das TXC-Flag
vorerst nicht relevant. Es ist mir ein Rätsel.
tja, Du sendest zwar mit dem PC nix anderes, aber du lässt mit dem Mega den Bus nicht mehr frei im Gegensatz zur PC-Ansteuerung. Möglich dass die Kamera das merkt. Daher ist Config Print (Bascom -> Hilfe -> Suche) Dein Freund. Auch möglich, dass vom PC die Daten nicht so aus der Kanone geschossen kommen wie vom ATMega, der die Bytes doch sehr akkurat aneinander reiht. Eventuell mal mit n paar Millisekunden zwischen den Bytes probieren. ach so: Print Chr(02) ; "AD01;GC7:9030001" ; Chr(03) kann man machen, ich machs anders: Print "{002}AD01;GC7:9030001{003}"
@Fhutdhb Ufzjjuz ich danke dir für den Tip. Du hast mich direkt mit der Nase darauf gestoßen. Ich habe es so gelöst (Vielleicht habe ich damit auch eine/n Andere/n helfen können) $regfile = "m8def.dat" $crystal = 14745600 $baud = 9600 Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 1 Config Serialout = Buffered , Size = 18 Enable Interrupts Dim Puffer(18) As Byte Usart_tx Alias Portd.1 Config Usart_tx = Output Puffer(1) = &H02 Puffer(2) = "A" Puffer(3) = "D" Puffer(4) = "0" Puffer(5) = "1" Puffer(6) = ";" Puffer(7) = "G" Puffer(8) = "C" Puffer(9) = "7" Puffer(10) = ":" Puffer(11) = "9" Puffer(12) = "0" Puffer(13) = "3" Puffer(14) = "0" Puffer(15) = "0" Puffer(16) = "0" Puffer(17) = "1" Puffer(18) = &H03 Do Ucsrb.txen = 0 Usart_tx = 0 Waitus 200 Usart_tx = 1 Ucsrb.txen = 1 Waitms 2000 'Evtl anpassen. Printbin Puffer(1); Loop End ' Es muss halt noch eine Flussteuerung für den Max481 mit eingebaut werden; ' Der nach dem Sendevorgang einfach den Max481 auf Low schalten und den ' 485 Bus frei gibt, da sonst keine anderen Teilnehmer senden können Linux
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.