Fórum témák
» Több friss téma |
Kösz a tippet akkor valószínű így lesz a dolog...
De sajnos az UART még mindig nem működik, rádugtam a Pickit2-re logiaki analizátor módban a Pic-et és a 38400baud-on az első sor megérkezék és utána a következő sorokoból már csak töredékek, néhány mp után pedig az egész adat összevissza karakterekből áll... Ez lehet az miatt mert ilyen nagy sebességhez már külső precíz órajel kell?
Válaszoltál egy 2006os kérdésre! Velem is előfordult már, hogy elkezdtem olvasni és gondolkodni, hogy mi lehet a megoldás és csak utána vettem észre, hogy a dolog 35oldallal tovább haladt már!
Nekem is volt már ilyen gondom, megjött az NMEA sor és elkezdtem feldolgozni, de nem végzett mire jött a következő.
A $GPGSV az 3 sor és egyszerre jön le... Nincs idő az 1. és 2. sor között fel is dolgozni PIC-el.
Mert nem is kell rögtön feldogozni! Én azt csináltam, hogy miközben jött a NEMA mondat, az elején beazonosítottam, hogy melyik az pl "$PGRMV,x,x,x*hh
A $-ből tudom, hogy új mondat Az első vesszőig tudom, hogy a mondat azonosító Utána számolom a vesszőket és rögtön írom memóriába a szükséges adat előtti vessző után mindent a következő vesszőig. Miután megérkezett az utolsó mondat záró Nálam állítható volt a NEMA mondat csoportok küldése közt eltelt idő. Assszem én felemeltem pár másodpercre.
De egyébként ő nem azt mondja, hogy meg sem érkeznek neki a karakterek helyesen egy idő után? Csinál ő már egyáltalán bármi feldolgozást?
Bocsánat igazad van! Nem volt ma még erőm, hogy átbogarásszam a forráskódját mit is csinál!
Hmm.. lehet kicsit pontatlan voltam...
rádugtam a pickit2-t logikai analizátor módban a GPS-re => működött, adta az NMEA mondatokat összekapcsolva a fogadó PIC-el => nem működött ekkor jött az ötlet, hogy felprogramozok egy másik f690-est, szimulálva a GPS-t, hogy adjon ő is egy NMEA mondatot 38400baud-al A kódja így nézett ki:
ezt rákötöttem megintcsak a pickit2-re és első sor megjött, a többi meg folyamatosan 'pusztult' le, a végén már az egész adat összevisszaság lett Ebből arra következtetek, hogy 1) vagy a mikroC PRO for PIC compiler UART kezelője rossz, így ha nem képes normálisan átküldeni, akkor fogadni sem képes a GPS szabványosan megérkező adatait 2) vagy én írtam hülyén a programot 3) vagy valami más...
A kvarc freki se mindegy.
Én uartos fejledztéseknél mindig baudos kvarcot használok, ugyan annyiért lehet kapni. 11.059.200 14.745.600 18.432.000 22.118.400 ... Ezek pont baudos kvarcok, a hibaszázalék 0!
Számítógépes kommonikációnál azt is jártam már meg ,hogy a pic amikor nem adott elengedte a lábait .A vevő ezzel nem tudott mit kezdeni így a kommunikáció káoszba fulladt.
Hát igen, csak a PICkit2-be is egy sima JWT20.000 Mhz kvarc van.
Az nem lehet, hogy mivel egyszerre 5sort küld a GPS felülírja a pufferbe az adatokat mielőtt feldolgoznám?
olvasd el a #460131-es beirást
Ha jól van beállítva, akkor max 3 sor, de a leghosszabbak.
Amit bemásoltam kód egy weboldalról lett lementve ahol a csávónak működött a GPS-el, nekem viszont az első néhány karaktert sem hajlandó beolvasni, a kód végére én még odatettem annyit, hogy az RX beérkező adatot tegye át egyből a tx-re oda rákötöttem logikai anaizátor és teljesen jó volt mind az 5sort láttam az UART toolba, viszont az LCD kijelzőn csak összeveissza karakterek láthatók, nemhiszem hogy ennyire különbözne egymástol egy pic16f690 és egy pic18f4550, mindekttőnek ugyanazt a kódot kéne végrehajtania... Mindegy....
Na viszont innentől nem mindegy az az órajel! Kérdés ahonnan szedted a forrást ott mekkora órajelen ment a PIC! Ugyanis ha jól tudom a tied max 20Mhz-ről mehet (de te 8Mhz-en járatod most!) ellenben egy 18f4550 akár 48Mhz-ről is mehet! Nem kis különbség!
Mi az a link egyébként ahonnan szedted?
8Mhz-ről ment mindkét projektben...
a forrás: Bővebben: Link ez sem megy és ez sem: Bővebben: Link azt hiszem repül a kukába a 690-es egyik sem megy rajta íg valszeg nem képes ennek a gps dolognak a meghajtására... tudtok ajánlani vmi jobb 20lábú pic-et erre a dologra? (a helytakarékosság miatt kellene 20lábú ) Hivatkozásokat légy szíves a "LINK" gombot használva beszúrni, a másolgatást senki sem szereti. Javítottam. -- kobold
8MHz-en ne lenne képes feldolgozni egy 38400bps-en bejövő jelet egy kontroller? Na ne szórakozz már... Inkább a hibát kellene megtalálni! A hiba lehet a fordító beépített rutinjában is!
Ha a bemenetet visszafordítva a kimenetre mindent jól látsz akkor az adatfeldolgozásban keresd a hibát szerintem.(a koordinátákat az enyém 4800 bauddal küldi ,csak ha extrákat akarsz akkor kell a nagyobb sebességű módba kapcsolnod,a 4800 baudot meg aztán végképp tudnia kell.)
A modul alapól 38400-on ad, biztos van valami input message amivel fékezni lehet, ha végképp nem működik akkor lelassítom ...
potyo: az egyik .c fájlt a mikroC 8.0.0.0-val a másikat a mikroC for PIC 2009-el fordítottam, és a vicc az, hogy a szimulátorban (Proteus) működik, szóval a kód szerintem 99.9%-ban jó. És lehet hogy a fordítóban van a hiba, történetesen a 690-eseket nem komálja. Megpróbálom egy 877-esel, bár az erre a célra pazarlás... és ha azzal sem megy akkor én vagyok a lúzer.... Ja, bocs a linkért...
Nos ez történik ha a sorvége karakterig beolvastatom az RX vonalon az adatot és kiratom az LCD-re. De ha viszont az RX-ről a TX-re irányítom akkor tökéletesen átküldi, nem tudom mi lehet a probléma, szóval ha tudtok valami működő forráskódot mikroC 8.0 vagy CCS C-ben at nagyon megköszönném Neten már mindehol körbenéztem de mindegyik a "nagy" (877, 18F4550 stb.) PIC-ekre van.
Ez nekem eléggé memóriaszemétnek tűnik. Talán nemjó memóriabank kerül kiválasztásra olvasáskor illetve íráskor? A 877-es forráskódja nem jó a 690-hez? Nem ugyanolyan az UART moduljuk?
Egyszerű a dolog.
Az LCD-re kiküldött adat ideje nagyon hosszú. Az RX 1 byteja kiküldve a TX-re ugyan annyi idő és nincs szünet, csak 1 byte késleltetés. Amíg az LCD-re küldesz, addig áll a forgalom... Megszakításból csinálod? Azzal kellene...
Na, átírtam megszakításosra íme:
és ez történt, beraktam egy másik 690-est gondolván arra hogy lehet vmi az USART-al de az eredmény nem valami bíztató
Ha az LCD-n ennyire hülyeség jelenik me, akkor az LCD kommunikációval van baj...
Pl nem bírja a tempót. Ezért nem programozok C-ben, mert nem tudom mit fordít ASMre és mennyi a veszteség. Az XMega prociknál akadtam ki, PORTF_OUT=$55 utasítást 4 ASM utasításra kódolta, amíg 1 max 2 ASM kézzel... Na meg a LCD_Chr(1,1,NMEA[7]); utasítások sora.. mindig pozicionál is biztos.. nem csak kiszórja a karaktereket egymás után, hanem elötte koordinálja is...
Hmm... tegyük fel hogy azzal van a gond, történetesen hogy olyan gyorsan kapja az adatokat (ha jól tudom 270kHz-es az órajele), hogy nem képes feldolgozni és ezért firkálja tele a sorokat a saját memóriaszemetével. Akkor pl egy ilyen dolog szerintetek megoldaná? /hogy például csak 1mp-nként írnék a kijelzőre/
Miért kérdezed, próbáld ki.
És ne a GPS legyen asoros bemenet, hanem a PC és teszteld mennyi karaktert bír
Pici!
Néhány kommentel ezelőtt írtad, hogy USB-ről kaphatná a tápot. Az USB 5V-jából hogyan lehetne a GPS-hez 3-3.3V-ot csinálni? Üdv.
Én nem használok soros portot RS232-t és max232, elavult már szerintem.
Inkább USB-ről FT232. Ezen van táp is: 5V vagy 3.3V választási lehetőség (jumper) A sebessége is sokkal nagyobb, és sok laptopon csak ez van. RX TX és a többi ki van vezetve, és még plusz IO-k. Csinálsz egy ilyet egy csatival és az összes fejlesztésed a PC-hez tudod kötni és ad tápot is. |
Bejelentkezés
Hirdetés |