PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 USB-Serial adapter für andere µC nutzen *gelöst*



axel88
29.11.2009, 14:23
Hallo,
Ich will zwischen meinem Laptop und einem Atmega8 eine UART Verbindung erstellen. Da mein Laptop kein Serial hat und ich auch kein MAX... Pegelwandler hier rum fliegen habe, will ich dafür den USB-Serial adaüter des RP6 nutzen.
Dieser soll laut Datenblatt des Chips ja mit 5V Pegeln klarkommen und einen Rx Tx Inverter haben.
Soweit die Theorie...
Praktisch habe ich aber noch nichts erreicht. Da ich mir bei meinem Atmega8 Aufbau/Programmierung noch unsicher bin, will ich ersteinmal den Uart zum RP6 mit einer anderen Software(möglichst Linux) als dem RP6 loader hinkriegen.

1. Versuch : cutecom -> einziges Ergebnis ist das alle licher am RP6 ausgehen wenn der Port geöffnen wird.
2. Versuch: minicom -> ich empfange bei der Port initialisierung ein Paar Zeichen Datenmüll -> ich vermute das dies die Daten über Batteriestatus etc sind, aber aufgrund der fehlenden Port Invertierung falsch sind.

Hat jemand schonmal den RP6 mit einer anderen Software zum laufen gebracht? Hat schonmal jemand den USB-Serial für andere Projekte verwendet?

mfg Axel

Dirk
29.11.2009, 18:08
Hallo Axel,

eigentlich versuchst du ja 2 Sachen auf einmal:

1. Du willst das USB-Interface auch für andere uCs verwenden.
Das müßte gut gehen, wenn es es nur um eine serielle Verbindung über USB geht. Das Interface ist aber kein Programmer, so dass der andere uC einen Bootloader braucht oder über einen ISP-Programmer programmiert wird.

2. Du möchtest mit dem RP6 über ein anderes Programm vom PC aus kommunizieren.
Das geht z.B. mit hTerm. Aber nicht zum Programmieren des RP6, weil du dann ja die interne Kommunikation zwischen RP6Loader und dem Bootloader auf dem RP6 genau simulieren müßtest. Wenn du das analysiert bekommst, kannst du einen eigenen Loader schreiben.

Gruß Dirk

radbruch
29.11.2009, 18:34
Hallo


...einziges Ergebnis ist das alle Lichter am RP6 ausgehen wenn der Port geöffnen wird.Der Adapter des RP6 kann auch einen Reset ausführen um den Bootloader zu starten. Dazu wird eine RS-232-Steuerleitung verwendet. Diese muss deshalb vom Terminalprogramm auf high gesetzt werden (es war RTS wenn ich mich recht erinere), wenn man nur kommunizieren möchte. Das Setup des RP6-Mega32-USART (aus dem Bootloader) ist 34800,8,none,1

Interessante Idee übrigends, das werde ich auch mal probieren (mit einem Mega16;)

Gruß

mic

axel88
29.11.2009, 20:43
Hallo,

Danke für die schnellen Antworten.

@Dirk
Ums Programmieren geht es mir garnicht, dafür habe ich mir ein USPASP gebaut, der funktioniert super :) ich will nur mit dem UART ein Debug-Infos auf der Konsole ablesen, o.ä.

Werde es gleich mal mit hTerm, auch wenn es leider nicht in den Ubuntu repos ist und ich es erstmal von hand compilieren muss.

@radbruch

Das mit dem Reset klingt sehr plausibel, habe ich auch vermutet. Ich habe bisher nur nicht rausgefunden wie ich mit cutecom oder minicom diesen Pin setze. Ebenso wie ich den Rs Tx Pin invertieren könnte, falls dies nötig ist.

Was ist RTS ? ist das auch ein Programm? Habe da leider nichts ergooglen können.
Find ich gut das du es auch probieren willst, lass mich hören wenn du Erfolge hast ;)

mfg Axel

EDIT: Hab hTerm grad ausprobiert... sieht ganz net aus und der RP6 wird nicht in den Dauerreset gesetzt, aber weitergekommen bin ich noch nicht.

radbruch
29.11.2009, 21:12
RTS ist eine der RS232-Steuerleitungen und bedeutet Request to Send:
http://www.rn-wissen.de/index.php/RS232#Signalerkl.C3.A4rung_der_RS-232-Schnittstelle

axel88
30.11.2009, 10:09
Gibt es denn ein Programm, mit dem man die RTS Leitung von Hand setzen kann?
Ich habe mal gelesen das der MAX232 nicht nur die Pegel anhebt, sondern auch umkehrt. Ferner steht im Datenblatt des IC der auf dem USB-Serial verbaut ist, das dieser Rx oder Tx Invertieren kann. Muss man in dieser hinsicht etwas beachten, oder sollte es prinzipiell sofort klappen wenn ich Pin 2 und 3 des USB-Serial an den Rx und Tx eines µC hänge?

mfg Axel

radbruch
30.11.2009, 10:19
Hallo

Mit hTerm (in der Win-Version) kann man die Steuerleitungen von Hand setzen.

Ich glaube nicht, dass man die Signale invertieren muss, denn beim RP6 gehen die Leitungen des USB-Adapters auch direkt auf die TX/RX-Pins des ATMega32.

Gruß

mic

[Edit]
Glückwunsch zum Teilerfolg :)
Die RTS-Leitung ist nur beim RP6 von Bedeutung. Am Mega8 wird der Resetpin nicht angeschlossen, dann ist der Pegel von RTS uninteressant. Zu Kommunikation reicht natürlich TX/RX und GND.

axel88
30.11.2009, 10:19
So erster Teilerfolg: Mit GtkTerm empfange ich jetzt [RP6BOOT] und [READY] und ich kann das RTS bit setzen. Nun werde ich mich mal an den Atmega 8 begeben.

mfg Axel

axel88
01.12.2009, 11:12
So zweiter Teilerfolg: Der RP6 sendet Datenmüll auf meine Konsole, kann also nur noch ne Frage der Konfiguration und Programmierung sein. Ein Tipp (was ich etwas verdrängt hatte) Das RP6 Flachbandkabel ist verdreht, was am RP6 Pin 2 und 3 sind ist auf der USB Platine 9 und 8...

mfg Axel

EDIT:

So mit der usart lib von http://www.wiki.elektronik-projekt.de/mikrocontroller/avr/avr-gcc-library/usart_library hat es nun geklappt. Nun kann man jederzeit, ohne einen MAX232 nachzurüsten in jedes Projekt eine Debug-Schnittstelle einfügen^^