www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

UART pošiljanje byte

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Tor Jul 14, 2015 9:16 am    Naslov sporočila:  UART pošiljanje byte Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 13.23
Kraj: Lovrenc na P.

PrispevekObjavljeno: Tor Jul 14, 2015 9:21 am    Naslov sporočila:   Odgovori s citatom

Terminali ponavadi pretvorijo v ascii, zato so čudni znaki.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dejko1
Član
Član



Pridružen-a: Ned 16 Mar 2008 0:21
Prispevkov: 265
Aktiv.: 1.36
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jul 16, 2015 7:50 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
xfce
Član
Član



Pridružen-a: Čet 28 Jul 2011 8:06
Prispevkov: 521
Aktiv.: 3.38

PrispevekObjavljeno: Čet Jul 16, 2015 9:27 am    Naslov sporočila:   Odgovori s citatom

@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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group