|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.66 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Tor Jul 14, 2015 9:16 am Naslov sporočila: UART pošiljanje byte |
|
|
Pozdrav,
ker si mi nekako ni dalo pisati svoje funcije za UART ipd. sem vzel eno knjižico, ki ima napisano funkcijo za pošiljanje stringa, ko string razbije pošlje ostale znake.
jaz bi pa rabil poslati takšen niz podatkov:
{0x55, 0x00, 0x07, 0x07, 0x01, 0x7A, 0xF6, 0x50, 0x00, 0x11, 0x30, 0x06, 0x30, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x9C};
ne znakov ampak bytov,
pa sem gledal kako je lib narejen:
Koda: |
void Serial_printString( uint8_t portNum, char *BufferPtr)
{
while( *BufferPtr )
{
Serial_write( portNum, *BufferPtr++);
}
} |
Koda: |
void Serial_write( uint8_t portNum, uint8_t send)
{
if ( portNum == 0 )
{
/* THRE status, contain valid data */
while ( !(UART0TxEmpty & 0x01) );
LPC_UART0->THR = send;
UART0TxEmpty = 0; /* not empty in the THR until it shifts out */
}.... |
jaz pa sem spremenil funkcijo write
v tole: in jo klical iz main programa:
Koda: |
void Serial_wChar( uint8_t portNum, [color=red][b]char send[/b][/color])
{
if ( portNum == 0 )
{
/* THRE status, contain valid data */
while ( !(UART0TxEmpty & 0x01) );
LPC_UART0->THR = send;
UART0TxEmpty = 0; /* not empty in the THR until it shifts out */
} |
Koda: |
for(ip = 0; ip < 21; ip++){
Serial_wChar(3, line1_ON[ip]);
} |
ko gledam na terminalu kaj dobim, dobim v bistvu neke znake ... tako kot bi mi pretovrilo v ASCII.
Polje imam tipa const unsigned char _________________ Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega |
|
Nazaj na vrh |
|
|
MarkoM Član
Pridružen-a: Tor 12 Sep 2006 15:29 Prispevkov: 2825 Aktiv.: 13.18 Kraj: Lovrenc na P.
|
Objavljeno: Tor Jul 14, 2015 9:21 am Naslov sporočila: |
|
|
Terminali ponavadi pretvorijo v ascii, zato so čudni znaki. |
|
Nazaj na vrh |
|
|
dejko1 Član
Pridružen-a: Ned 16 Mar 2008 0:21 Prispevkov: 265 Aktiv.: 1.35 Kraj: Ljubljana
|
Objavljeno: Čet Jul 16, 2015 7:50 am Naslov sporočila: |
|
|
Na ARM platformi (oz. na večini platform) je unsigned char ekvivalenten uint8_t in char ekvivalenten int8_t, vendar se bo compiler še vedno pritoževal če ju uporabljaš skupaj.
Če želiš videt podatke v HEX obliki si to lahko nastaviš v katerem terminalskem programu ki to omogoča, npr. Bray terminal, RealTerm. |
|
Nazaj na vrh |
|
|
xfce Član
Pridružen-a: Čet 28 Jul 2011 8:06 Prispevkov: 521 Aktiv.: 3.36
|
Objavljeno: Čet Jul 16, 2015 9:27 am Naslov sporočila: |
|
|
@drVrh
Program termite omogoča, da podatke prikazuješ tudi v hex, kar dobiš po UART.
Sicer ne vem zakaj rabiš, lahko si znake pošiljaš na terminal tudi kot desetiške ali šesnajstiške znake.
Naprimer char pretvoriš s tem: printf("%04x",c); in ga potem šele pošlješ. |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 70 dni
Powered by phpBB © 2001, 2005 phpBB Group
|