Serielle Schnittstelle muckt

Gast #3067913
Lesenswert?
• ▲
▼
Hallo,
ich habe zwei Beispielprogramme aus dem Atmel Software Framework 
ausprobiert welche die serielle Schnittstelle benutzen; bei keinem 
funktioniert die Übertragungsrichtung PC -> SAM3X.
Die Daten kommen physikalisch am Board an, ich sehe es am blitzen der 
Leds.
Die Settings sind default 115200,8,n,1.




Analog-to-Digital Converter (ADC/ADC12B) example for SAM.

main() {
configure_console();
...
...
set_adc_test_mode();
}


1
/**
2
 *  Configure UART console.
3
 */
4
static void configure_console(void)
5
{
6
  const usart_serial_options_t uart_serial_options = {
7
    .baudrate = CONF_UART_BAUDRATE,
8
    .paritytype = CONF_UART_PARITY
9
  };
10
  
11
  /* Configure console UART. */
12
  sysclk_enable_peripheral_clock(CONSOLE_UART_ID);
13
  stdio_serial_init(CONF_UART, &uart_serial_options);
14
}
15

16

17
static void set_adc_test_mode(void)
18
{
19
  uint8_t uc_key;
20
  uint8_t uc_done = 0;
21

22
  while (!uc_done) {
23
    while (uart_read(CONSOLE_UART, &uc_key));
24

25
    switch (uc_key) {
26
    case '0':
27
      g_adc_test_mode.uc_trigger_mode = TRIGGER_MODE_SOFTWARE;
28
      break;
29
    ...
30
    ...
31
    ...
32

33
}


Mich irritiert, daß der serielle Puffer vor dem Empfang nicht geflusht 
wird. Braucht man das denn nicht?

Ich hab in dem anderen Beispiel eine Led zum debuggen hinter der Zeile
switch (uc_key) {
zum prüfen reingehängt und abgefragt ob diese Zeile überhaupt 
entsprechend erreicht wird. Das Ergebnis war nicht eindeutig...

Das Ganze kann eigentlich nichs Großes sein, bin im Moment aber trotzdem 
ratlos.
Gast #3069499
Lesenswert?
• ▲
▼
ARMer Wicht schrieb:
> ich habe zwei Beispielprogramme aus dem Atmel Software Framework
> ausprobiert

Tja, meine Empfehlung: Schau ins Manual und schreibe dir deinen Code 
selber, ohne dich auf irgendwelche ominösen Atmel Frameworks etc. zu 
verlassen.

Abgesehen davon frag ich mich, was das bedeuten soll:
  while (uart_read(CONSOLE_UART, &uc_key));

Bei mir ginge das so:

main ()
{ ...

immerzu:

   if (CharAvailable(UART0)
   { DoSomething(GetChar(UART0));
   }

   ... etc etc ...
goto immerzu;
}


W.S.

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.