Pretpostavljam da bi bilo kupaca. Pogotovo ako se razvije do razine za izvoz. Ako vec programiras, onda mozes isprogramirati mogucnosti poput memoriranja jedne recenice, modificiranja pojedinog karaktera i slanja na izlaz. Uz biranje baud ratea, itd. To je ono sto bih ja napravio da znam kako :)
E da, 4800 se koristi u brodskoj navigaciji.
Didn't find your answer? Ask the community — no account required.
T
toni_mostar
Oni displeji za kupca ¹to sam spominjao rade fiksno na 9600, unutra je atmelov microcontroller, ako se dobro sijeæam onda je to 89S2051, ali ne sijeæam se koji je kvarc unutra. Kori¹tenjem kvarca dvostruko manje frekve displej bi radio na 4800
Jo¹ ako bi netko disassemblirao program koji se nalazi unutra, mogao bi cijelu stvar prilagoditi tvojim potrebama bez dodatnog kontrolera.
Neki univerzalni terminal koji bi nosio u torbi alata neæe¹ uspijeti lako sagraditi, mo¾es samo naèiniti nesto dosta uske namjene. Mo¾e¹ li postati uzorak tih ascii podataka? Mora¹ ne¹to znati o formatu podataka da bi ih ispisao na displej. Primjerice GPS ureðaj ¹alje ne¹to ovako:
$GPRMC,183032,A,blabla....*5C
dakle da bi podatke ispisao u jednom redu na displeju mora¹ prepoznati znak "$" za poèetak reèenice, i znak "*" za kraj reèenice. Iza zvjezdice idu jo¹ dva znaka koja predstavljaju èeksum reèenice. Zato da bih ti pomogao treba mi uzorak podataka kakve oèekuje¹. Ako oèekuje¹ vi¹e razlièitih tipova podataka, vi¹e razlièitih formata reèenica onda tvoj ureðaj mora biti u stanju prepoznati svaku takvu reèenicu, i onda nekim preklopnikom li jumperima filtrirati onu koju ¾eli¹ vidjeti na ekranu. Ako se misli¹ baviti elektronikom i mikrokontrolerima onda ima¹ savr¹en poligon za treniranje, konkretan problem koji ako rije¹i¹ mo¾da daje veæi efekt po novosteèenom znanju nego po stvarnoj vrijednosti konkretnog rje¹enja. Sretno.
toni
H
Hani
Krenuli smo u dobrom smjeru... Radi se doista o NMEA sentencama, uredjaj koji sam spomenuo je poligon za naucit programirat ako pocnem raditi. Slijedece bi bilo, i to od stvarne komercijalne primjene, konverzija NMEA
1.5 i 2.0 u IEC-61162 ili npr. GPRMC u GPGGA ili GPGLL... Ali treba krenut od neceg "jednostavnijeg"...
D
Damir Seligo
Mozda u tom slucaju vremena za LCD ne bi dobra. Da li mozda i te LCD-e treba inicijalizirati (ili jos nesto slati uz podatke koje treba ispisati)?
Damir
T
toni_mostar
Super, ja sam uspje¹no filtrirao reèenicu GPRMC za potrebe sata (zbilja samo sata), stvar je bila jednostavna jer sam na samome poèetku trebao izdvojiti
6 karaktera, dok æe malo dalje biti jaaaako komplicirano. Sve je lak¹e kada toèno zna¹ gdje su ti podaci koji te zanimaju, a kako podaci nemaju uvijek leading zero, a ponekad imaju i prazne podatke onda æe¹ morati preæi na "brojanje zareza", dakle podatke neæe¹ moæi prepoznavati po apsolutnom polo¾aju u reèenici, nego po relativnom polo¾aju u odnosu na zareze. Primjerice treba ti sedmi podatak, nakon ¹to prepozna¹ $GPRMC, kao poèetak reèenice, onda se tvoj ¾eljeni podatak nalazi izmeðu sedmog i osmog zareza.
Ja sam radio sa PIC16F876A, i evo ti nekih natuknica:
; Prepoznavanje sekvence "$GPRMC,"==================== call RxLoop ; xorlw '$' ; $ btfss STATUS, Z ; goto Main ;
call RxLoop ; xorlw 'G' ; G btfss STATUS, Z ; goto Main ;
call RxLoop ; xorlw 'P' ; P btfss STATUS, Z ; goto Main ;
call RxLoop ; xorlw 'R' ; R btfss STATUS, Z ; goto Main ;
call RxLoop ; xorlw 'M' ; M btfss STATUS, Z ; goto Main ;
call RxLoop ; xorlw 'C' ; C btfss STATUS, Z ; goto Main ;
call RxLoop ; xorlw ',' ; , btfss STATUS, Z ; goto Main ; ; kraj prepoznavanja sekvence "$GPRMC," ----------------
do sada smo prepoznali $GPRMC,
sada èitamo 6 karaktera za UTC vrijeme, zatim jo¹ jedan zarez i jo¹ jedan karakter:
; ocitavanje UTC vremena i statusa ValidPosition ======= ; i pretvorba brojeva iz ASCII u BCD
call RxLoop ; ovaj podatak nam ne treba (",") call RxLoop ; A = valid position, V = invalid movwf ValidPosition ; ;-------------------------------------------------------
Ovdje gore su ascii kodirane znamenke 0-9 dobile svoje BCD vrijednosti 0-9
Ovo je bilo jednostavno, ali kad treba prepoznati vise razlicitih recenica onda moramo uvrstiti grananje. Dakle prepoznamo $, oèitamo slijedeæi karakter, mo¾e biti G ili P (mo¾da i ne¹to treæe), recimo da je G, slijedi karakter P, a sada mo¾e doæi G, R, ili V, dakle trostrano grananje, ako je treæi karakter G onda èetvrti mo¾e biti G, S, L....... tako da je broj grananja veliki.
Drugi naèin bio bi da nakon znaka $ jednostavno uèita¹ 5 slijedeæih karaktera, i onda ide¹ na prepoznavanje o kojoj NMEA reèenici se radi. To æe smanjiti broj grananja na onoliko koliko ima¹ razlièitih NMEA moguæih reèenica, s tim da treba¹ znati da reèenica GPGSA unutar sebe ima jo¹ 3 do
12 grananja...., ali mora¹ razvrstavati cijele dijelove reèenica poredeæi karakter po karakter
Ja imam u Visual Basicu rije¹eno prepoznavanje svih NMEA reèenica koje podr¾ava Garmin GPS18, i bez problema mogu operirati s tim podacima. Mogu jednostavno slo¾iti neki drugi format podataka i to spremiti na drugi comm port vanka na bilo kojem baudrejtu.
Èeksum iza zvjezdice je tu reda radi. Ako ima¹ pouzdane vodove koji nisu pretjerano izlo¾eni smetnjama mo¾e¹ jednostavno zanemariti èeksum (checksumm).
toni
H
Hani
Hvala na natuknicama, vracat cu se jos na ovaj mail dok budem razradjivao projekt.
Da u startu znam, koji jezik koristiti? U basicu sam radio prije 10-ak ili vise godina, nece biti problem sjetiti se, ali tu u tutoralu spominju i asembler. Ima li smisla koristiti ga, pretpostavljam da pru¾a bolju kontrolu nad onim sto se dogadja?
B
Boris Vuletic
Asembler i C su uglavnom jezici najprimjereniji programiranju mikrokontrolera, izmedju ostalog jer mogu dati kompaktan kod i vecu kontrolu nad cpu-om i izvrsavanjem programa. Ima i jezika posebno za tu svrhu, neki od njih lice na Basic, takav je recimo Atmelov bascomp, besplatnu verziju (za programe do 2k!) mozes skinuti sa njihovih stranica. Za 8052 postoji Intelov Basic, razvijen bas za mikrokontroler nije nesto najnovije ali je sad public domain. Jedna zgodna alternativa je Forth, ako ga mozes nabaviti za zeljeni procesor i naravno ako uopce zelis raditi u Forthu :-) Programirao ti u C-u ili asembleru ili cemu vec kad je rijec o mikrokontrolerima poznavanje arhitekture procesora i onoga sto se dogadja na strojnom nivou je vrlo pozeljno. Ako se ne mozes odluciti za jezik probaj nauciti asembler za pocetak, koristit ce ti i ako poslije predjes na C ili sl. BTW, jako lijepo prezentaciju i tutorial kako raditi sa LCD displejima mozes naci na
formatting link
Boris
B
Boris Vuletic
Ne mogu biti siguran za te, ali oni 'obicni' paralelni LCDi generiraju svoj clock interno, tako da su potpuno neovisni o clocku mirkokontrolera
Mislim da ne. Koliko sam shvatio, ove mozes 'isprogramirati' koliki baudrate hoces i sl., on to interno zapamti i onda ga koristis kao obicni terminal
B
Boris Vuletic
Da mozes ga disasemblirati ako govoreci hipotetski uspijes procitati kod koji je upisan u interni ROM kontrolera a ako su bili dovoljno pametni a pretpostavljam da jesu da isprogramiraju i security bit to ce biti prilicno tesko :-( Ja sam sad malo pregledao svoj POS program koji je negdje 1998-e bio napravljen da podrzava serijske displeje za kupca koji su se onda mogli nabaviti i sad vidim da su ti radili bez ikakve posebne inicijalizacije, samo ga upalis i kako mu saljes ASCII kodove tako ih prikazuje. Onaj na kojem sam to isprobavao je koliko se sjecam bio toliko luksuzan da je imao i DIP switcheve na kojima se mogao namjestiti baudrate i jos ponesto
Boris
T
toni_mostar
Ma ne radi se o inicijalizaciji nego o samo nekoliko kontrolnih kodova. Recimo da si u jednom redu ispisao rijec od 5 slova, i sada zelis preko te rijeci ispisati neku drugu, ili u nastavku zelis dopisati neku trecu... naravno da ti trebaju neki kontrolni karakteri kako bi displej znao gdje ce sto smjestiti. Naravno sve ove kodove dobijes u user manualu. Hani ocekuje recenice koje pocinju sa $ a zavrsavaju sa *xx, kako ce neki POS displej "znati" gdje je pocetak a gdje kraj neke recenice? Dva su rjesenja, jedno je da prepravlja postojeci kod u postojecem MCU, a drugo je da umetne jos jedan MCU koji ce filtrirati i preformatirati podatke pa ih onda slati POS displeju. Slazes se?
toni
PS prekosutra cu vidjeti user manual pa cu vam izdvojiti neke kodove
A ako æe to iæi raditi mo¾e iæi i na paralelni LCD - jeftiniji su i lak¹e nabavljivi, a nisu ne¹to te¾i za isprogramirati - par redaka za inicijalizaciju.
Damir
D
Damir Seligo
Mislio sam na vrijeme koje treba pricekati nakon slanja komande ili nakon resetiranja.
Damir
B
Boris Vuletic
Pa ako usporis clock moze raditi samo bolje (sto se tice cekanja) :-) Problematicno bi moglo biti ako ubrzas clock
Boris
H
Hani
Hvala na linku, ubacio sam ga pod favorite...
OK, za sada sam na asembleru. Kupio sam si knjizicu "Mikroracunala i Mikroupravljaci" za elektrotehnicke skole, opisuje 8051, sve je prepuno primjera u asembleru. Sjecam se da sam i u njemu programirao kad sam pred puno puno godina dobio Comodore 64 sa uputstvima na njemackom (tada nisam znao beknut ni na engleskom), i nisam znao kako se pokrecu igre. Jedino sto sam znao bilo je prepisivati primjere programa u Basicu i nesto malo u Asembleru. Dobar dio mog znanja i karijere, ali vise mog brata (koji sad briljira u nekim visim jezicima i mreznim aplikacijama) rezultat je tog neznanja.
Ako ti odgovara, mislim da ga lako mo¾e¹ podesiti da radi 4800bps.
Damir
H
Hani
Na prvi pogled, to je to. Moram jos detaljnije prouciti sto su tu i kako napravili, pa krenuti na posao.
Inace, sto koristite za programiranje PIC-eva (osim PC-a)? Ima za kupit tih programatora? Ili je obicaj izraditi ih?
B
Boris Vuletic
Ima. Samo cini mi se da ovi jeftiniji programatori samo za PIC nisu nista bitno bolje od samogradnji. Shema za PIC programator imas na sve strane, mislim da cak i Microchip daje neke sheme za samogradnju. Srecom PIC programatori se hardverski dadu vrlo jednostavno i jeftino realizirati, najvaznije je da uz programator ide dobar software kojim to PC pogoni. Program naravno mozes izmisliti i sam ako bas zelis :-) Od gotovih programatora kod nas za koje ja znam ima ih
formatting link
Boris
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.