mikrocontroller.net

Forum: Compiler & IDEs USART mit Mega16


Autor: Moritz Veit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich hab ein kleines problem beim Senden über das UART des Mega16. Ich
habe das eigendlich so gemacht wie es im AVR-GCC Tutorial
vorgeschrieben ist nur die entsprechenden Register gegen die Richtigen
ausgetauscht so sieht der source aus


#include <avr/io.h>
#include <stdarg.h>
#include <ctype.h>
#include <string.h>


#define F_CPU                   8000000         // 16Mhz
#define UART_BAUD_RATE          9600            // Baud 9600

// Berechnen des Inahltes des UBBRL Registers
#define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*16l)-1)

// Datentypedefinieren
typedef unsigned char   BYTE;
typedef unsigned short  WORD;

// Funktionsprototypen
void UartInit (void);
void UartWrite (BYTE c);

int main (void)
{
// Initalisieren des UARTs
UartInit ();

//for (;;) {
// sende ein t
outp ('t',UDR);
//}
}

void UartInit (void)
{
//UART Control Register Laden
outp ((1 << TXEN), UCSRB);
// Baudrate setzen
outp ((BYTE) UART_BAUD_SELECT, UBRRL);

}

Der MAX232 Arbeitet richtig und die Signale die rauskommen kommen auch
am pin 2 des kabels an. Also an der Hardware kanns eigendlich nicht
leigen ... ich benutze im moment noch den internen Oszilator mit 8Mhz
)

Moritz Veit

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was kommt denn am PC an? - wenn nur verstümmelte zeichen ankommen deutet
das darauf hin, dass deine UART-Frequenz nicht ganz stimmt. Wenn du ein
OSZI hast, kannst du auch mal prüfen ob was herauskommt.
Noch was: bevor du ein zeichen in das sende-Register schreibst,
solltest du prüfen ob es leer ist. Also vorher UDRE im UCSRA auf log. 1
testen und dann erst byte in register schreiben.
Ich schreibe das immer so:

void send_char(unsigned char zeichen)
{
  while(!(UCSRA&(1<<UDRE)));

  UDR=zeichen;
}


Gruß, Florian

Autor: Moritz Veit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI,
es kommt leider gar nichts am PC an. mit dem Oszi hab ich es schon
durchgescheckt es kommt ein komisches signal an das nicht grad nach ne
com signal aussieht ist ne runde aufsteigende flanke und dann ne steile
abfallende. Gestern ahtte ich auch das Phenomen das das signal so
ausgesehen hat :
- -- - -- - -- - --
 - -- - -- - -- -

mfg
Moritz

Autor: Moritz Veit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI,
ich habs es lag nicht am programm sonder an der Hardware ;-) Jetzt
funktioniert es einwand frei g
Trotzdem danke für dei antworten.
Moritz

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.