Stránka 1 z 1

SAM D - UART

Napsal: 30 led 2018, 19:10
od 666mb
Jak mám odeslat přes UART v mikroprocesoru Atmel SAM D10 více než 8 bitů dat? Třeba celý řetezec?

Cílem je naprogramovat velice podobnou funkci jako je v Arduinu Serial.
Tedy abych v main napsal: Serial.print("abc"); A přes UART by mi to poslalo celý řetezec?

Zkouším tuto funkci naprogramovat sám, ale stále mi to nefunguje. Jde funkcí

Kód: Vybrat vše

void Serial(char buffer[])
přeposlat celý řetězec z main do zmíněné funkce, která tedy buffer[] = "abc"?

Napsal: 30 led 2018, 20:25
od FHonza
Teda nevím jestli jsem tvůj dotaz úplně pochopil, ale takhle:

Kód: Vybrat vše

void SendString(char *str)
/*
vysle na UART null-terminated string
*/
{
  while (*str)
  SendChar(*str++);
}
SendChar je funkce, která vyšle přes UART jeden byte. Volání je pak SendString("abc");

Napsal: 31 led 2018, 16:32
od petus
Funguje mi správně (Arduino)
Serial.print("BlaBlaBla");

Napsal: 31 led 2018, 16:55
od FHonza
Já sem nepochopil jestli autor dotazu se ptá na syntaxi v C nebo jak se konkrétně obsluhuje UART u Atmel SAM.

Pro pochopení jak je v Arduinu naprogramován objekt Serial je dobré se podívat do zdrojáků.
Serial je instance třídy HardwareSerial. Ta je potomkem třídy Stream. No a ta je potomek třídy Print.
Odkazy na zdrojové kódy:
Print
Stream
HardwareSerial

Případně celé "jádro" na GitHub