UART Ausgabe geht nicht

OP #594603
Lesenswert?
• ▲
▼
Hallo zusammen,
ich möchte mit einem ATMEGA32 zeichen über die serielle Schnittstelle an 
den Rechner senden. Habe hierfür ein kleines Tesprogramm geschrieben 
welches auf Tastendruck von 0 bis 9 zählt und jeweils die Zahl auf einem 
Display und der Seriellen Schnittstelle ausgibt. Die Anzeige auf dem 
Display funktioniert einwandfrei, jedoch die Übertragung zum PC nicht. 
Habe ich da eventuell noch einen Fehler drin?

#include <avr/io.h>
#include <avr/delay.h>
#include <LCD4b.c>
#include <serial.c>

int main (void)
{
  DDRB = 0b11111111;      //Pins 0-7 als Ausgänge
  DDRC = 0b00000000;      //Pins 0-7 als Eingänge
  PORTC = 0xff;
  _delay_ms(100);
  _delay_ms(100);
  lcd_init();
  lcd_clear();
  serial_init();

  int tastenzaehler=0x30;

  while (1)
    {

    if ( !(PINC & (1<<PINC0)) )       // Taste ?
      {
        _delay_ms(50);
          lcd_out(&tastenzaehler);     // Zahl ausgeben
        tastenzaehler +=1;
        if(tastenzaehler == 0x3a)    // ei 9 wieder auf 0 setzen
          {
            tastenzaehler=0x30;
          }
        serial_send_char(tastenzaehler); // Zahl senden
      }



    }
}



//***********************************
// ***** serial.c *************

#include <avr/io.h>
#include <avr/delay.h>


int serial_init()
{
  UCSRB |= ( 1 << TXEN );            // UART TX einschalten
    UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);  // Asynchron 8N1
    UBRRH  = 0;                                 // Highbyte ist 0
    UBRRL  = 103;                               // Lowbyte ist 103 ( 
9600 Baud bei 16 Mhz )                               // Lowbyte ist 51 ( 
dezimal )
  return 0;
}


int serial_send_char(unsigned char serial_char)
{
  while (!(UCSRA & (1<<UDRE)))          /* warten bis Senden moeglich 
*/
    {
    }
    UDR = serial_char;                        /* schreibt Zeichen auf 
die Schnittstelle */
  return 0;
}

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.