Forum: Mikrocontroller und Digitale Elektronik sam4s Xplained pro uart Embedded Debugger


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Paul (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi ich habe ein Problem mit dem Embedded Debugger über UART und dem 
Evalboard vom Sam4s. Mein Signal UART-Signal kommt bis zum Ausgang vom 
Sam, das habe ich mit dem Oszi gemessen. Am PC kommt dann mein Signal 
nicht mehr an. Im Debug-Modus geht das 'a' auch raus aus dem Register. 
Muss ich auf etwas spezielles beim Einstellen meines Terminals achten 
außer, dass ich den Virtuel Com-Port nehme.

Hier mein Code:
1
#define UART_SERIAL_BAUDRATE     115200
2
#define UART_SERIAL_MODE         UART_MR_PAR_NO
3
4
#define PINS_UART1_PIO      PIOB      
5
#define PINS_UART1_ID       ID_UART1
6
#define PINS_UART1_TYPE     PIO_PERIPH_A  
7
#define PINS_UART1_ATTR     PIO_DEFAULT
8
#define PINS_UART1_MASK     (PIO_PB2A_URXD1| PIO_PB3A_UTXD1 )
9
10
void configure_uart(void){
11
  pio_configure(PINS_UART1_PIO, PINS_UART1_TYPE, PINS_UART1_MASK, PINS_UART1_ATTR);
12
  pmc_enable_periph_clk(ID_UART1);
13
  
14
  const sam_uart_opt_t uart1_sett = { 
15
    sysclk_get_cpu_hz(), 
16
    UART_SERIAL_BAUDRATE, 
17
    UART_SERIAL_MODE 
18
  };
19
  
20
  uart_init(UART1,&uart1_sett);
21
}
22
23
int main (void)
24
{
25
   sysclk_init();
26
   board_init();
27
   
28
   wdt_disable(WDT);  
29
      
30
   configure_uart();
31
     
32
   while (1)
33
   {
34
     uart_write(UART1, 'a');
35
         }
36
}

von Adam P. (adamap)


Bewertung
0 lesenswert
nicht lesenswert
Hey,

also ich hab dein Code mit meinem SAM4E Xplained und dem EDBG getestet 
und es funktioniert. Klar ich musste die Pin-Defines anpassen, aber das 
wars dann auch schon.

Terminal auf richtige Baud eingestellt?

Und warum holst du dir sysclk_get_cpu_hz() und nicht 
sysclk_get_peripheral_hz().

von Paul (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich habs raus gefunden. Man muss im Terminalprogramm dem DTR aktivieren 
um über den Embedded Debugger am Virtual Comport was zu lesen.

Ja Terminal war richtig eingestellt.
Stimmt eigentlich die peripheral_Clock ist sinnvoller vielen Dank für 
den Tipp Adam.

von Adam P. (adamap)


Bewertung
0 lesenswert
nicht lesenswert
Steht zwar auch so im "Atmel EDBG USER GUIDE" unter "Virtual COM Port":

-->
Note that the UART pins of the EDBG are tri-stated when no terminal 
program is connected to the Virtual
COM Port on the computer. This mechanism relies on the terminal program 
sending a DTR signal.
<--

Und genau das gleiche Verhalten habe ich auch beim HTerm, jedoch 
verwende ich TeraTerm und dort muss ich nichts konfigurieren  ändern  
anpassen, vllt. weiß ja jmnd den Grund dafür.

Finde dort auf anhieb auch keine Info darüber.
Wäre nur interessant zu wissen warum es im TeraTerm (ohne DTR) 
funktioniert.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.