Forum: Mikrocontroller und Digitale Elektronik UART


von Mathias K. (underworldgamer)


Lesenswert?

Wenn ich denn Simulator 4.12 von AVR Studio 4.12 verwenden bleibt der 
Simulator bei


--------------------
void uart_putc(unsigned char c)
{


      while (!(UCSRA & (1<<UDRE)))  //warten bis senden möglich ist
      {
      }
      UDR = c;

           //Ausgabe des Zeichens über UDR
}


hängen????
----------------

void uart_init()
{
    // UART Transmitter anschalten
    // Data mode 8N1, asynchron 4800 1MHZ

    UBRRH  = 0;                   // Highbyte ist 0
    UBRRL  = 207;                  // Lowbyte ist 12 ( dezimal )
    UCSRB  = (1 << TXEN)|( 1 << RXEN );        // UART TX RX einschalten
    UCSRC  =(1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);



}

void uart_putc(unsigned char c)
{


      while (!(UCSRA & (1<<UDRE)))  //warten bis senden möglich ist
      {
      }
      UDR = c;

           //Ausgabe des Zeichens über UDR
}

unsigned char uart_receiver(void)
{
  while (!(UCSRA & (1<<RXC)));   /* Wait for incomming data */
  return UDR;
}

void uart_puts (char *s)
{
  //schleife wird so lange ausgeführt bis kein Zeichen mehr kommt
    while (*s)
    {

        uart_putc(*s);
        s++;

    }
}


int main(void)
{

  DDRC = 0x00;

     uart_init();


for(;;)
{


   if(!(PINC & 0x01))
  {

    uart_putc(0x01);
  //while((PINC&0x01));
    }


  else if(!(PINC & 0x02))
  {
  //  time();
    uart_putc(0x02);

    //_delay_ms(100);
  //  while((PINC&0x02));
  }

  else if(!(PINC & 0x04))
  {
  //  time();
    uart_putc(0x04);

    //_delay_ms(100);
  //  while((PINC&0x02));
  }


   }


wo liegt der Fehler begraben???

von Rene (Gast)


Lesenswert?

Tja, offensichtlich ist die Bedungung nicht erfuellt. Am Besetn nimmst 
du einen freien Pin und clockst die verschiedenen Werte seriell raus. 
Dann dort mit dem Scope schauen was kommt.

von johnny.m (Gast)


Lesenswert?

> Dann dort mit dem Scope schauen was kommt.
Das geht im Simulator ziemlich schlecht...

@Mathias:
Welchen µC simulierst Du denn? Bei einigen AVRs gibts im Simulator 
bekannte Probleme beim Schreiben der Register UBRRH und UCSRC (z.B. beim 
ATMega16/32).

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
Noch kein Account? Hier anmelden.