UART

OP #531877
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???
Gast #532083
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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren