Autor |
[Atmega32] USART sendet nicht |
|
|
|
|
BID = 587446
pippo Gesprächig
Beiträge: 183
|
|
Im Moment will ich einfach nur, dass der uC irgendwas an den PC schickt und wenn es nur Müll ist, aber es kommt nix. Im Anhang ist der Schaltplan, im übrigen schon der 2. Entwurf, da die 1. Platine keine Sockel und Messpins hatte
Hier ist noch der Codeauszug:
Code : |
void USART_init(void);
void uart_putc(char);
int main() {
uint8_t bytes=0;
DDRB = (1 << DDB0) | (1 << DDB1);
PORTB|=(1<<PB0);
USART_init();
uart_putc(bytes);
}
void USART_init(void){
/* Set baud rate */
UBRRH = (unsigned char)(115200>>8);
UBRRL = (unsigned char)115200;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 1stop bit */
UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);
}
void uart_putc(char c){
while(!(USR & (1<<UDRE)));
UDR = c;
}
|
|
Das externe BaudrateQuarz mit 7,28Mhz wurde über die Fuses aktiviert und wird auch verwendet. Zur Verbindung mit dem PC verwende ich ein Nullmodemkabel, hab die Kontakte 2 und 3 aber bei 1 Stecker getauscht. Bin jetzt aber an einer Stelle, an der ich nicht mehr weiter weiß. Such seit Wochen das Internet ab. |
|
BID = 587468
Jornbyte Moderator
Beiträge: 7178
|
|
Software nicht angesehen.
Hardware: an der 9Pol Sub-D Pin 2 und 3 tauschen.
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten. |
|
BID = 587470
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| aber es kommt nix |
Woher weisst du das ?
Häng mal eine LED an die Ausgangsleitung und schau ob sie flackert.
Es ist genausogut möglich, dass der PC nicht zuhört, weil die Handshake-Leitungen nicht bedient werden.
Das muss man zwar auch nicht unbedingt, aber dann sollte man das dem PC-UART während der Initialisierung sagen.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 587484
Houwdy Stammposter
Beiträge: 408 Wohnort: Graz
|
Welchen Sinn hat das Gatter zwischen µC und Max 232, wenn du dein Projekt mit Code Vision AVR in c machst kannst du mit Getchar und Putchar die RS 232 bei richtiger Konfiguration ansprechen sonsten heist das Register UDR in welches du deinen Wert schreiben musst... soweit muesste es funktionieren..
du koenntest ja einfach mal
while (1) {
putchar 'a';
delay_ms(1000);
}
ps achtung pseudocode
_________________
lg Marian Guggenberger
Lieber polyglott als monogam!
|
BID = 587522
pippo Gesprächig
Beiträge: 183
|
@ Jornbyte
Warum sollte ich die Pins tauschen? Richtig angeschlossen sind sie doch.
@ perl
Weil am PC nix angekommen ist ging ich davon aus. Wenn ich ne LED hinhäng, so leuchtet sie dauern, wenn eine Verbindung vom uC zum PC besteht und geht aus, sobald ich den Stecker zieh. Sehr seltsam.
@ Houwdy
Es befindet sich noch eine 2. Schnittstelle auf der Platine, deshalb das Gatter
|
BID = 587534
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Wenn ich ne LED hinhäng, so leuchtet sie dauern, wenn eine Verbindung vom uC zum PC besteht und geht aus, sobald ich den Stecker zieh. Sehr seltsam. |
Nicht seltsam, sondern das bedeutet, dass die Leitung vom PC mit dessen Sendedaten gespeist wird.
Wie Jornbyte schon sagte: 2 und 3 vertauschen.
Am besten nimmst du 2 antiparallele LEDs mit einem Vorwiderstand von vielleicht 5..10kOhm.
Dann kannst du an der einen LED die Ruhepolarität beobachten und die andere blitzt kurz auf, wenn Daten fliessen.
Das dann mit roten und grünen LEDs für alle Schnittstellenleitungen aufgebaut (ausser Masse natürlich), ergibt einen richtigen kleinen Schnittstellentester.
[ Diese Nachricht wurde geändert von: perl am 11 Feb 2009 23:26 ]
|
BID = 587537
pippo Gesprächig
Beiträge: 183
|
Ach sorry, mein Fehler. Ich meinte das Programmierkabel, also die ISP-Schnittstelle.
Ich hab den uC jetzt aber komplett vom Strom weg und wieder angeschlossen, nun ists wider ok und unabhängig vom Programmierkabel.
Jetzt ist es so, dass die LED zu leuchten beginnt, sobald ich die Funktion USART_init aufrufe. Alle Zeilen und Funktionen, die mit dem Senden zu tun haben, sind auskommentiert
Edit: Sch..., das Signal ist ja invertiert und somit ganz normal, dass die LED dauernd leuchtet. Hab das ganz vergessen. Ich geh jetz besser ins Bett.
[ Diese Nachricht wurde geändert von: pippo am 12 Feb 2009 0:09 ]
|
BID = 587565
hajos118 Schreibmaschine
Beiträge: 2453 Wohnort: Untermaiselstein
|
Nur zum Test:
Die ser. Sendeleitung mal direkt mit dem Treiber (unbenutzter Kanal) verbinden und dessen Ausgang über 2. SUB9 an PC anschliessen.
Evtl. kann der 232-Treiber nicht mit CMOS Bausteinen (oder nur mit pull-up/pull-down)
_________________
Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Wer einen Fehler findet, darf ihn behalten!
|
BID = 587683
pippo Gesprächig
Beiträge: 183
|
Problem gelöst. Ich traus mich fast net sagen, dass ich das erst jetz gemerkt hab. Bitter. Der Sub-D Stecker ist in der Eagle Libary falsch dargestellt. Eagle zählt die Pins von links nach rechts wenn man von hinten draufsieht, leider wird aber von rechts nach links gezählt.
Und dafür hab ich jetz 2 Platinen gebraucht
|
BID = 587686
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Eagle weiss das eigentlich, wie es richtig ist, aber vielleicht hast du den Stecker auf der falschen Seite der Platine eingebaut oder Männchen und Weibchen vertauscht.
Beidesmal gibts es dann das spiegelverkehrte Lochmuster.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 587690
pippo Gesprächig
Beiträge: 183
|
Hmm, da könntest sogar recht haben Das muss tatsächlich die Buchse sein, aber da ich nichtmal was dafür. Das Symbol für den "Stecker" hab ich damals von der Ingenieur in bekommen, die uns in Eagle eingeführt hat
|