AVR32 stdout umleiten

OP #1097149
Hallo!

Ich möchte auf einem EVK1100 die Ausgabe auf eine serielle Schnittstelle 
umleiten, so wie es in 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Nutzung_von_printf 
beschrieben ist. Gibt es solch eine Lösung auch für AVR32? Oder was muss 
ich ändern?

LG
#1097154
Auf dem Grasshopper mit Standard-C (also kein Linux) funktionierte das 
so:
1
//--- setup UART0 one for stdio (e.g. printf....)
2
  set_usart_base((void*)AVR32_USART0_ADDRESS);  // init UART driver (set UART0 adress)
3
  usart_init(115200);                            // init UART0 with 115200 baud
4
  
5
//--- We are finish to send the world a message
6
  printf("\r\nHello World\r\n");

Die sind irgendwo in der newlib vergraben (auch als Source zum 
"nachlesen").

Gruß 900ss
OP #1099270
Danke für deine Hilfe! Hat leider nicht ganz so geklappt, meine Lösung:
1
#if BOARD == EVK1100
2
#  define _USART_              (&AVR32_USART1)
3
#  define _USART_RX_PIN        AVR32_USART1_RXD_0_PIN
4
#  define _USART_RX_FUNCTION   AVR32_USART1_RXD_0_FUNCTION
5
#  define _USART_TX_PIN        AVR32_USART1_TXD_0_PIN
6
#  define _USART_TX_FUNCTION   AVR32_USART1_TXD_0_FUNCTION
7
#endif
8

9
// 
10
...
11
//
12

13
  static const gpio_map_t USART_GPIO_MAP = { 
14
      { _USART_RX_PIN, _USART_RX_FUNCTION }, 
15
      { _USART_TX_PIN, _USART_TX_FUNCTION } 
16
    };
17
  
18
  // USART options.
19
  static const usart_options_t USART_OPTIONS = { 
20
      .baudrate = 57600,
21
      .charlength = 8, 
22
      .paritytype = USART_NO_PARITY,
23
      .stopbits = USART_1_STOPBIT, 
24
      .channelmode = USART_NORMAL_CHMODE 
25
    };
26
    
27
  // Switch main clock to external oscillator 0 (crystal).
28
  pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP);
29

30
  // Initialize the USART
31
  set_usart_base( ( void * ) _USART_ );
32

33
  // Initialize USART in RS232 mode.
34
  usart_init_rs232(_USART_, &USART_OPTIONS, FOSC0);
35
  
36
  gpio_enable_module(USART_GPIO_MAP, sizeof(USART_GPIO_MAP )
37
      / sizeof(USART_GPIO_MAP[0] ));
38

39
// 
40
...
41
//
42
  printf("write something\n\r");

Wie kann ich aber nun etwas empfangen? ähnlich scanf? Ich dachte das 
müsste nun auch funktionieren...

LG

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.