Hallo! Habe ein Problem mit einer neuen Schaltung mit MAX232 und Atmega16: Ich kann nur Zeichen an den PC senden (kommen auch richtig an), jedoch weigert sich die Schaltung Zeichen zu empfangen. Das Programm hierfür habe ich vorhher an einer anderen Platine(auch atmega16+max232)erfolgreich getestet. Die Verdrahtung und deren Durchgang sind geprüft: OK Auch der Einbau eines neuen Max 232(diesmal von ST-micro...) hat keinen Unterschied gemacht. Kann es sein das am Atmega die RX-Leitung defekt ist oder was könnte eine andere Ursache hierfür sein und vorallem wie kann ich dies herausfinden? Gruß
>Kann es sein das am Atmega die RX-Leitung defekt ist oder was könnte >eine andere Ursache hierfür sein und vorallem wie kann ich dies >herausfinden? Mit ner Lupe.
NickNack schrieb: > Kann es sein das am Atmega die RX-Leitung defekt ist oder was könnte > eine andere Ursache hierfür sein und vorallem wie kann ich dies > herausfinden? Verbinde Rx und Tx direkt am Controller. Dann kann er sich selbst was ins Ohr flüstern. mfg.
Thomas Eckmann schrieb: > Dann kann er sich selbst was ins Ohr flüstern. Aber nur, wenn der Max232 nicht dazwischen quatscht oder auch an der Empfangsleitung zerrt.
Habe RX und TX am Atmega zusammen gelötet und wie es scheint kann er sich selbst etwas senden (also auch empfangen). Anschließend habe ich die Brücke wieder entfernt und eine hinter den MAX232 gehängt und es scheint auch zu funktionieren. Danach wieder USB<->RS232-Wandler angeschlossen aber es kommt nur einmal das Zeichen "A" an und danach ist funkstille, egal was ich sende. Anderen USB<->RS232-Wandler angeschlossen: Selbes Problem-.-
1 | /*
|
2 | * UART_TEST.cpp
|
3 | *
|
4 | * Created: 01.08.2012 19:24:17
|
5 | * Author: NICK-DESKTOP
|
6 | */
|
7 | |
8 | #define F_CPU 3686400UL
|
9 | #include <avr/io.h> |
10 | #define BAUD 9600
|
11 | #include <util/setbaud.h> |
12 | |
13 | void uartinit (void) |
14 | {
|
15 | UBRRH = UBRRH_VALUE; |
16 | UBRRL = UBRRL_VALUE; |
17 | UCSRB |= (1<<RXEN)|(1<<TXEN); // UART TX einschalten |
18 | UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N |
19 | }
|
20 | |
21 | int main(void) |
22 | {
|
23 | uint8_t VAR = 'A'; |
24 | uartinit(); |
25 | while(1) |
26 | {
|
27 | while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */ |
28 | {
|
29 | }
|
30 | UDR = VAR; /* sende Zeichen */ |
31 | while (!(UCSRA & (1<<RXC))) // warten bis Zeichen verfuegbar |
32 | {
|
33 | }
|
34 | uint8_t VAR = UDR; // Zeichen aus UDR an Aufrufer zurueckgeben |
35 | }
|
36 | }
|
ähm beim Probieren haben sich in den Code ein paar ungereimtheiten eingeschlichen, sry
@Magnus Müller falsch beschriftet: sind 10kOhm Widerstände
>falsch beschriftet: sind 10kOhm Widerstände
Die gehören da nicht hin.
@Holger so hat man es mir mal gezeigt(Lehrer: Kurzschlussschutz) und bisher mit Erfolg in jeder Schaltung so betrieben!
>so hat man es mir mal gezeigt(Lehrer: Kurzschlussschutz) und bisher mit >Erfolg in jeder Schaltung so betrieben! MAX232 ist am Ausgang schon strombegrenzt. Der braucht die 10k nicht. Die stören nur.
Gut zu wissen und du hattest recht: ausgelötet und durch Drahtbrücken ersetzt und er empfängt etwas, ABER es kommt Bullshit an!
NickNack schrieb: > @Holger > so hat man es mir mal gezeigt(Lehrer: Kurzschlussschutz) und bisher mit > Erfolg in jeder Schaltung so betrieben! Halte dich ans Datenblatt, nicht an überschlägige Faustformeln... Und zudem: 10k sind weit jenseits von Gut und Böse. Da kann ja nicht mal ein läppisches mA fliessen. Sobald da die kapazitive Last ein wenig grösser wird (Leitungslänge) ist bei 300Baud Schluss...
wenn ich "B" sende kommt ein "/" zurück wenn ich "C" sende kommt ein "^" zurück wenn ich "Z" sende kommt eine ")" zurück
"Ich mach 2 Schritt auf einmal und fall aufs Maul." Probiers doch erst mal 1 Schritt: Sende mit dem uC dauernd das selbe Zeichen und mach dazwischen 100ms Pause. Kannst du das Zeichen empfangen? Dann kannst du den 2. Schritt machen: sende ein Zeichen mit dem PC und zeig das auf Leds an. Und dann kommt das, was du jetzt schon machen willst. BTW: die Klammern in deinem Code sind sehr verwirrend platziert.
Habe jetzt nochmals den anderen USB-rs232-wandler angeschlossen, dann geht es-.- Bovor ich mich daran weiter aufrege belasse ich es für heute dabei und mache morgen die Platine neu (ohne die 10kOhm-Widerstände;)) Danke und bis bald
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.