Hi, ich möchte einen atmega über UART mit dem PC verbinden, habe aber keinen COM-Port. Daher wird ein USB-Interface nötig. Möglichkeit 1: http://www.mikrocontroller.net/wikifiles/9/91/Usb_io_expander_layout_usb_sch.png Vorteil: Galvanische Trennung Nachteile: - FT232 nicht auf die Schnelle in München kaufbar - Teileauswahl nicht ganz klar (Optokoppler, DC/DC) - SMD (nicht wirklich tragisch) Möglichkeit 2: http://www.conrad.de/ce/de/product/197326/MINI-USB-TO-UART-CONVERTER/SHOP_AREA_17348 Vorteil: DIL Nachteile: - teuer - Galvanische Entkopplung unklar: -- Kann ich meinen uC währenddessen über ein Programmierkabel verbinden? -- Dann also Massen und Grounds von UART und SPI verbinden? Klingt gewagt. -- Ich versorge meinen uC über Trafo & 7805. Auch verbinden? Welche Möglichkeiten habe ich noch? Ein funktionierendes Handykabel liegt hier nicht rum!
Bei ELV gibt es ein solches Modul für 5.95€: http://www.elv.de/Mini-USB-Modul-UM2102,-Komplettbausatz/x.aspx/cid_74/detail_10/detail2_28776
Klar kannst du die Massen verbinden. Galvanische Trennung ist nur nötig, wenn du an 230V direkt arbeitetst, zum Beispiel mit einem Kondensator-Netzteil oder sowas. Wenn du da einen Trafo hast, ist das kein Problem. Wichtig ist nur, dass du die Masse auch auf beiden Seiten anschließt. Sonst lautet deine nächste Frage, wieso der COM Port nur geht, wenn das Programmierkabel steckt.
A. S. schrieb: > Welche Möglichkeiten habe ich noch? Auf galvanisch Trennung bei 1) kannst du normalerweise verzichten. A. S. schrieb: > -- Kann ich meinen uC währenddessen über ein Programmierkabel verbinden? Warum nicht. Solange du dir einig bist, woher die Versorgungsspannung für den µC kommt. Was soll sich da ins Gehege kommen, wenn du die Grounds verbindest. Falls du in deiner Schaltung größere Ströme schaltest oder wenn empfindliche Analogelektronik dabei ist, solltest du dir allerdings Gedanken um ein sauberes Massekonzept machen.. Aber wozu? Lade einen Bootloader in den µC und schick das Programm über die Serielle Schnittstelle rüber.
ah okay, das sind gute Nachrichten! War mir nicht ganz sicher, wie die Spannungswandler im PC arbeiten. Schließlich sind am Ende LTP-Programmer UND USB mit meinem uC verbunden. Was gibt es denn für Alternativen zum FT232? Wie gesagt: den müsste ich bestellen.
Mit dem myUSBtoUART hast du alles fertig für eine serielle Verbindung zum µC http://shop.myavr.de/Bauelemente%20und%20Controller/myUSBtoUART.htm?sp=article.sp.php&artID=200024
Es gibt in jedem Computerladen für ein paar Euro USB auf RS232 Adapter. Damit brauchst du auf der AVR Seite höchstens einen MAX232 oder im simpelsten Falle 2 inverter , gerne auch aus 2 Transistoren.
danke für die vielen Tipps. Ich muss aber nochmal fragen: aus dem USB-Modul vom C kommen ja 5V heraus. Und diese 5V mit dem Ausgang des 7805 auf meiner Platine zu verbinden erscheint mir seltsam. Ich habe oben in der Hektik "Masse und Ground" geschrieben, wollte aber auf das VCC heraus. Hängen die 5V aus dem Modul also in der Luft und nur die Massen sind verbunden?
A. S. schrieb: > Hängen die 5V aus dem Modul also in der Luft und nur die Massen sind > verbunden? Korrekt.
A. S. schrieb: > Hängen die 5V aus dem Modul also in der Luft und nur die Massen sind > verbunden? Du könntest aber auch den 7805 weglassen und die Versorgung direkt vom USB Wandler holen...
hmnein - ich gehe davon aus, dass meine Anwendung (Lötofensteuerung nach Thomas Pfeifer) auch stand-alone genutzt wird. Also 5V baumeln lassen. Firma dankt!
so ich muss diesen Thread mal wiederbeleben. Habe nun alle Hardware da. Hab's aber nicht geschafft, die Verbindung herzustellen. Der Anschluss, die Fuses und die Treiberinstallation sind korrekt. Ich verwende einen CP2102 (Aus Möglichkeit 2 vom C - es musste einfach schnell gehen). hier mal mein aktuelles programm (eben abgewandelt von Thomas Pfeifer) --> kleinstes (nicht)laufendes Beispiel
1 | #include <avr/io.h> |
2 | #include <stdio.h> |
3 | #include <stdlib.h> |
4 | |
5 | #define BAUD 4800 |
6 | #define F_CPU 8000000 |
7 | #include <util/setbaud.h> |
8 | |
9 | |
10 | #ifdef oldgcc |
11 | #include <avr/delay.h> |
12 | #else |
13 | #include <util/delay.h> |
14 | #endif |
15 | |
16 | void adcinit(); |
17 | int getadc(uint8_t channel); |
18 | void waitms(int ms); |
19 | void error(); |
20 | void control(int t_ist, int t_soll); |
21 | int updateProfile(int t); |
22 | |
23 | int profile_t[10]; |
24 | int profile_T[10]; |
25 | |
26 | static int uart_putchar(char c) |
27 | //############################################################################ |
28 | { |
29 | if (c == '\n') |
30 | uart_putchar('\r'); |
31 | //Warten solange bis Zeichen gesendet wurde |
32 | loop_until_bit_is_set(UCSRA, UDRE); |
33 | //Ausgabe des Zeichens |
34 | UDR = c; |
35 | return (0); |
36 | } |
37 | |
38 | void UART_Init (void) { |
39 | //Enable TXEN im Register UCR TX-Data Enable |
40 | UCSRB=(1 << TXEN); |
41 | //Teiler wird gesetzt (setbaud.h) |
42 | UBRRH = UBRRH_VALUE; |
43 | UBRRL = UBRRL_VALUE; |
44 | |
45 | |
46 | |
47 | #ifdef oldgcc |
48 | //öffnet einen Kanal für printf (STDOUT) |
49 | fdevopen (uart_putchar, NULL, 0); |
50 | static int uart_putchar(char c, FILE *stream); |
51 | #else |
52 | static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,_FDEV_SETUP_WRITE); |
53 | stdout = &mystdout; |
54 | #endif |
55 | } |
56 | |
57 | |
58 | |
59 | int main (void) { |
60 | UART_Init(); |
61 | while(1) |
62 | printf("ok\n"); |
63 | } |
Ich benutze also das HyperTerminal (nur weiß ich nicht, ob ich erst das HT oder erst den ATMEGA starten soll) und erstelle eine Verbindung mit der entsprechenden COM-Nummer: 4800 bits pro Sekunde 8 Datenbits keine Parität 1 Stoppbit Flusssteuerung Hardware der Treiber des USB-Wandlers ist identisch eingestellt. in der Zeile: " static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,_FDEV_SETUP_WRITE);" erhalte ich eine Warnung "../Laminator.c:66: warning: initialization from incompatible pointer type" wie dem auch sei. Im Terminal kommt nichts an. Ich hätte da ständig "ok"s erwartet. Was fehlt? Die Verbindung ist ja sofort offen, wenn ich das richtig sehe. Im Treiber könnte ich den FIFO-Puffer deaktivieren wenn ich keinen 16650-kompatiblen UART habe?
Hallo, http://www.watterott.com/de/Breakout-Board-mit-FT232RL-USB-Seriell-Wandler Das Modul ist in einigen meiner Projekte (roboter, entwicklungsumgebung) mit erfolg verbaut und funktioniert einwandfrei und zuverlässig. Gruss und guten rutsch Stefan
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.