Forum: Mikrocontroller und Digitale Elektronik USART Sendeinterrupt für AT91SAM7S


von Jason Lie (Gast)


Lesenswert?

Hallo,

weiß jemand vielleicht wie man für den AT91SAM7S einen USART TXRDY 
Interrupt einrichtet?
Bis jetzt habe ich es so gemacht, dass ich immer die uart0_puts Funktion 
innerhalb der while(1)-Schleife der main.c aufgerufen habe.

Wie könnte man die uart0_puts Funktion interrupt gesteuert 
implementieren?

//UART Ausgabe Funktionen

int uart0_putc(int ch)               //Character über UART ausgeben.
{
  while (!(USART_pt ->US_CSR & AT91C_US_TXRDY));   /* Wait for Empty Tx 
Buffer, a character is in the US_THR waiting to be transferred to the 
Transmit Shift Register. */
  return (USART_pt ->US_THR = ch);                 /* Transmit 
Character, Transmit Holding Register */
}


int uart0_putchar (int ch) {                     /* Write Character to 
Serial Port */

 // if (ch == '\n')
 //  {                                   /* Check for LF */
 //   uart0_putc( '\r' );                          /* Output CR */
 // }

  return uart0_putc( ch );                       /* Transmit Character 
*/
}


int uart0_puts ( char* s )        // String über UART ausgeben.
{
  while ( *s )             // so lange *s != '0' also ungleich dem 
"String Endzeichen"
  {
    uart0_putchar( *s++ );      // Inkrementiere zunaechst den Pointer 
und gebe danach den Inhalt aus, auf den der Pointer zeigt.
  }

  return 0;
}

Vielleicht hat jemand einen Tipp für mich! Danke im voraus!

Jason

von gerhard (Gast)


Lesenswert?

hallo jason,
ich würde die ausgabe ohne interrupt aber dafür mit dem pdc ausführen.

gruss
gerhard

von Jason Lie (Gast)


Lesenswert?

Hallo Gerhard,

danke für den Hinweis! Kennst du vielleicht einige Beispiele, die zeigen 
wie der PDC im C Code implementiert wird?

Jason

von gerhard (Gast)


Lesenswert?

hallo jason,
im sog. software package solltest du fündig werden:
http://www.atmel.com/dyn/resources/prod_documents/at91sam7s-ek.zip

gruss
gerhard

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.