Forum: Mikrocontroller und Digitale Elektronik UART-USB Gateway auf dem AVR Xplained A1


von Uli (Gast)


Lesenswert?

Hallo zusammen,

hat jemand evtl. ein funktionierendes Codebeispiel für mich, wie ich 
zwischen PC und Xplained-Board via der eingebauten USART-USB Bridge 
kommunizieren kann.
Bitte keine extra Mühe geben, zur Not finde ichs alleine raus, also nur 
wenns jemand einfach so rumliegen hat.
Möchte gerade eine Verbindung zwischen RFM12-Boards testen, und hätte 
gerne eine bequeme Lösung die einfach geht, um nicht hier wieder 
ursachen für fehler zu haben.

Besten Dank.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Die benötigte Baudrate ist 57600. Dieses Beispiel benutzt ASF und AVR 
Studio 5:
1
#include "usart.h"
2
#define USART USARTC0
3
#define USART_SERIAL_EXAMPLE             &USARTC0
4
#define USART_SERIAL_EXAMPLE_BAUDRATE    57600
5
#define USART_SERIAL_CHAR_LENGTH         USART_CHSIZE_8BIT_gc
6
#define USART_SERIAL_PARITY              USART_PMODE_DISABLED_gc
7
#define USART_SERIAL_STOP_BIT            false
8
// USART options.
9
10
static usart_rs232_options_t USART_SERIAL_OPTIONS = {
11
  .baudrate = USART_SERIAL_EXAMPLE_BAUDRATE,
12
  .charlength = USART_SERIAL_CHAR_LENGTH,
13
  .paritytype = USART_SERIAL_PARITY,
14
  .stopbits = USART_SERIAL_STOP_BIT
15
  };
16
17
// serial output
18
static void uart_put(char c) {
19
    while( (USART.STATUS & USART_DREIF_bm) == 0 ) {}
20
    // Now transmit the character
21
    USART.DATA = c;      
22
}
23
//serial output
24
char conin(void) {
25
 while((USART.STATUS & USART_RXCIF_bm) == 0 ){};
26
 return USART.DATA;  
27
}
28
int main (void)
29
{
30
   sysclk_enable_peripheral_clock(&USARTC0);  
31
   sysclk_enable_module(SYSCLK_PORT_C, PR_USART0_bm);
32
// ASF takes care of configuing the port pins
33
   usart_init_rs232(USART_SERIAL_EXAMPLE, &USART_SERIAL_OPTIONS);
34
// more in main.......
35
}

von Uli (Gast)


Lesenswert?

Besten Dank!
Ich seh jetzt zumindest schon mal Ausgaben am virtuellen COM-Port am PC, 
wenn auch noch nicht ganz die erhoften... 57k 8N1 HW ist korrekt?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Uli schrieb:
> 57k 8N1 HW ist korrekt?

Werte stimmen, aber Hardware Handshake gibts nicht.Ist ja USB auf der PC 
Seite.

von Uli (Gast)


Lesenswert?

Ja, aber ist ja der virtuelle COM-Port 7 bei mir der über USB 
eingebunden ist... Also einfach Handshake auf Aus?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ja.Der Kommentar zum 2ten Unterprogramm 'conin' soll natürlich heissen 
'serial input', statt 'serial output'

von Uli (Gast)


Lesenswert?

Okay, danke nochmal, jetzt läuft alles... Hatte noch nen kleinen Fehler 
in meinem Code..
Und vielen lieben Dank für das stoßen auf die ASF. War mir bisher nicht 
geläufig!

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.