SAM D - UART

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
666mb
Příspěvky: 68
Registrován: 23 úno 2014, 01:00

SAM D - UART

#1 Příspěvek 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"?

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#2 Příspěvek 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");

Uživatelský avatar
petus
Příspěvky: 594
Registrován: 12 led 2009, 01:00
Bydliště: Pelhřimov
Kontaktovat uživatele:

#3 Příspěvek od petus »

Funguje mi správně (Arduino)
Serial.print("BlaBlaBla");
Pokud něco chcete a neodpovídám,pošlete SZ :)
https://chiptron.cz - novinky ze světa elektro (Arduino, Raspberry Pi, ESP8266, STM32, ESP32...)
Peťus

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#4 Příspěvek 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

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“