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

 
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
.
Neznanec
Neznanec



Pridružen-a: Pet 01 Okt 2004 1:17
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Pon Jul 18, 2011 10:40 am    Naslov sporočila:  UART Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 788
Aktiv.: 3.32
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Pon Jul 18, 2011 10:51 am    Naslov sporočila:   Odgovori s citatom

Načinov je veliko, eden preprostejših je, da narediš pri pošiljanju med sporočili dovolj dolgo pavzo. Če sprejemnik v določenem času ne sprejme nobenega znaka, privzame, da je prvi naslednji sprejeti znak začetek novega sporočila. Pri tem sistemu moraš zagotoviti, da bo čas med oddajo dveh zaporednih znakov istega sporočila vedno krajši od nekega v naprej določenega časa ter čas med koncem oddaje predhodnega ter pričetkom oddaje naslednjega sporočila vedno daljši od min. zakasnitve.

Druga preprosta možnost je, da začetek sporočila označiš z zastavico, npr. <CTRL-A> (= hex 0x01), konec sporočila pa recimo z zastavico <CTRL-B> (= hex 0x02) ali pa morda CR (in LF). Sistem deluje, če lahko zagotoviš, da sama vsebina sporočila nobenega od teh znakov ne vsebuje v nobenem primeru (npr. da je vsebina sporočila vedno sestavljena le iz ASCII kodiranih alfanumeričnih in posebnih znakov).

V vsakem primeru pravilen prenos vsebine spročila nadzoruj vsaj z neko preprosto kontrolno vsoto če že ne s 16 bitnim CRC.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
GopherB
Član
Član



Pridružen-a: Čet 10 Mar 2011 11:44
Prispevkov: 90
Aktiv.: 0.52
Kraj: Lj

PrispevekObjavljeno: Pon Jul 18, 2011 11:13 am    Naslov sporočila:   Odgovori s citatom

lahko uporabis end-parsing (ali kako se ze rece) - ascii za enter (new line feed), ce bos ti sam pisal tekst.
Saj lahko posiljas paketke podatkov, ki so vecji od 18byte, pa jih uporabis samo 18.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
žrepko
Član
Član



Pridružen-a: Tor 23 Mar 2010 20:12
Prispevkov: 700
Aktiv.: 3.76
Kraj: Ptuj-Maribor

PrispevekObjavljeno: Tor Jan 24, 2012 10:25 am    Naslov sporočila:   Odgovori s citatom

Tudi jaz se počasi iz hardwareskih vod spuščam bolj v software.

Torej iz ene naprave dobivam po UARTu kode kot na primer 3E029D9ED0.
Kako torej to kodo sprejeti na uC in jo obdelati naprej (npr. pošljem po CAN naprej)?

_________________
Štromar ima včasih prav, elektrika pa vedno! Profesor Seliger
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



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

PrispevekObjavljeno: Tor Jan 24, 2012 10:47 am    Naslov sporočila:   Odgovori s citatom

žrepko je napisal/a:
Tudi jaz se počasi iz hardwareskih vod spuščam bolj v software.

Torej iz ene naprave dobivam po UARTu kode kot na primer 3E029D9ED0.
Kako torej to kodo sprejeti na uC in jo obdelati naprej (npr. pošljem po CAN naprej)?


getChar() ? Mr. Green

Poišči knjižnice za tvoj uC za uart in uporabi funkcije za inicializacijo, branje, pisanje...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
žrepko
Član
Član



Pridružen-a: Tor 23 Mar 2010 20:12
Prispevkov: 700
Aktiv.: 3.76
Kraj: Ptuj-Maribor

PrispevekObjavljeno: Tor Jan 24, 2012 11:13 am    Naslov sporočila:   Odgovori s citatom

A bo tako preprosto? Smile

Saj vem,..ni tako preprosto. Se mantram usposobiti UART na BR 9600. Na 115200 mi deluje dobro, naprava mi pa pošilja na 9600.

_________________
Štromar ima včasih prav, elektrika pa vedno! Profesor Seliger
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



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

PrispevekObjavljeno: Tor Jan 24, 2012 11:21 am    Naslov sporočila:   Odgovori s citatom

Če imaš knjižnice za uart za tvoj procesor je nekje kakšen def, kjer nastaviš baudrate oz. pri klicanju inicializacijske funkcije kot parameter. Če ne pa datasheet in ročno postaviti vrednost v register za baudrate.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
žrepko
Član
Član



Pridružen-a: Tor 23 Mar 2010 20:12
Prispevkov: 700
Aktiv.: 3.76
Kraj: Ptuj-Maribor

PrispevekObjavljeno: Tor Jan 24, 2012 12:46 pm    Naslov sporočila:   Odgovori s citatom

Knjižnica ni napisana v tej smeri.
No, pa pojdimo po izračunih:
Koda:
DLest=PCLK/(16xBR)
=12000000/(16x9600)
=78,125
nato odšteješ FRest ki je najbližje 1,125. S tem je DivAddVal 1 in MulVal8
ostane mi 77, ki je v hex napisan kot 0x4D.

tako mi pride v kodi:
  pUart->FDR    = 0x81;                          /* FR 1,125, DIVADDVAL = 1, MULVAL = 8 */
  pUart->DLL    = 0x4D;                           /* 9600 Baud Rate @ 12.0 MHZ PCLK */
  pUart->DLM    = 0;                             /* High divisor latch = 0         */
  pUart->LCR    = 0x03;                          /* DLAB = 0                       */


zakaj mi ta koda noče delovati?

_________________
Štromar ima včasih prav, elektrika pa vedno! Profesor Seliger
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



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

PrispevekObjavljeno: Tor Jan 24, 2012 1:14 pm    Naslov sporočila:   Odgovori s citatom

PCLK imaš pravilno nastavljen? Oz. vzameš pravilno vrednost pri računanju? PCLK ni nujno enak Cclk.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
žrepko
Član
Član



Pridružen-a: Tor 23 Mar 2010 20:12
Prispevkov: 700
Aktiv.: 3.76
Kraj: Ptuj-Maribor

PrispevekObjavljeno: Tor Jan 24, 2012 1:15 pm    Naslov sporočila:   Odgovori s citatom

Imam, saj mi je pri 115200BR dobro delalo, če sem vzel 12MHz.

EDIT:
Bila je res napaka pri računanju. Res je bila frekvenca 25MHz.
Hvala za pomoč.

_________________
Štromar ima včasih prav, elektrika pa vedno! Profesor Seliger
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: 6 dni


Powered by phpBB © 2001, 2005 phpBB Group