Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Ha bepipálok bármit is még rosszabbodik a helyzet. Minden optimalizáció nélkül a kód 43%-ot foglal (367h-t a 800-ból), a 34!-ot már úgy értem el, hogy játszadoztam a beállításokkal, megjegyzem, hogy a project/settings/compiler-ben az Operation mode PRO-ra van állítva.
Megjegyzem, hogy PIC18-on is hasonló volt az eredmény, ha jól emlékszem annak az adatlapjában pedig már benne is van hogy C-re van optimalizálva a PIC, bár javítsatok ki ha tévedek. A hozzászólás módosítva: Jún 17, 2013
Üdv!
Az itt olvasottak alapján még érdemes várni az MPLAB X kipróbálásával. Az lenne a tiszteletteljes kérdésem, hogy a meglévő C18-as fordító integrálható MPLAB X-be?
Annyira nem rosz az MplabX, az igaz viszont, hogy jó gép kell alá. Jó proci sok ram.
Ha nem vagy profi, aki egész nap azon rugózik, akkor teljesen vállalható. Legalábbis nekem még eddig szépen tette a dolgát, persze nem hibátlan, de melyik program az.
És a meglévő C18-as fordító integrálása az MPLABX-be lehetséges?
Megmondom őszintén nem tudom, mert csak xc32-vel használom.
Nemrég azt írták, hogy igen. Én még nem próbáltam, de ha az XC8 megy MPLAB 8.xx alatt, akkor fordítva is mennie kell.
Na feltelepítettem, simán megy File-> Import ->MPLAB IDE v8 Project.
Még az is lehet, hogy szép lassan összebarátkozok vele. A hozzászólás módosítva: Jún 18, 2013
Beleütköztem egy pic endianess esetbe, és bár tudok alkalmazkodni a tapasztaltakhoz, jó lenne tudnom, mégis mit gondoljak az egészről?
Pic32 endianess: http://support2.microchip.com/KBSearch/KB_StdProb.aspx?ID=SQ6UJ9A00XYOS C32 fordító által fordított program részlet:
Eredmény: Led 1 + Led 3 világítanak. Mit felejtettem ki a számításból?
Mi a kérdés? Ennek pont így kell mennie, PC-n is pont ugyanezt csinálja.
Törölve. Bocsi. A jelek szerint megártott nekem a hőmérséklet.
A hozzászólás módosítva: Jún 18, 2013
Üdv!
ismét csak bajom van azzal a PIC18F458-al. Íme: A programja szerint egy funkcióbeállítást elmentenék eepromba, hogy kikapcs esetén is megőrizze a kívánt beállítást. Tulképp egyetlen bájtról van szó. Az írás tökéletesen működik. A visszaolvasás viszont eléggé hektikus. Bekapcsolás után nem olvassa az eepromot egészen addig, míg egy újabb írást rá nem küldök, vaaagy PICkit3-mal ki nem olvastatom a tartalmat. Ezután gond nélkül működik minden...írás is és olvasás is. Segítséget illetve magyarázatot kérnék, ha tud valaki, mert már kifutottam az ötletekből.... Előre is köszönöm! Üdv TheSaint
Hát...meg van más bajom is.... most, hogy nő a program hossza, az ide oda ugráokat is rendbe kéne tenni.... de nem tudom, hogy kell. Ebben is kérném a segítségeteket! Köszi!
Üdv TheSaint
Szia!
18-asnál nem igazán van gond az ugrásokkal ( GOTO-nál, viszont BRA-nál gond lehet ! ) ! Az EEPROM írás, olvasás benne szokott lenni a doksiban, ha azt átnézve alkalmazod ( találtam már hibát korábban valamelyik adatlapban, elfelejtenek valami bitet vizsgálni és akkor nem biztos, hogy jó ! ), akkor működnie kell ( írás kész ellenőrzése pl.ha elmarad az kikapcs vagy újraírás előtt ... )
A legnagyobb badarság a példákban, hogy feltétel nélkül engedélyezik a megszakítást. Előbb el kell tárolni, hogy engedélyezett volt-e a megszakítás, aztán tiltani a megszakításokat a kulcs beírásának idejére, vegül engedélyezni a megszakítást, ha engedélyezve volt. Ezekutén lehet várakozni a beírás végére... 18F prioritásos megszakítás esetén mind a két szintet külön kell tiltani és engedélyezni, ha ki volt használva mindkettő.
Idézet: Ez igaz, de szerintem nem okozhatja az ő problémáját, mert neki az induláskor okoz gondot a kiolvasás ( az írás a leírása szerint sikerült! ) ! „A legnagyobb badarság a példákban, hogy feltétel nélkül engedélyezik a megszakítást.”
hmm...hát úgy néz ki, hogy nálam van. Eddig arra gyanakodtam, hogy egy-egy szubrutin túl messze van a hívástól a program memóriában, de most már 20 sorral arrébre sem tud úgy ugrani, hogy össze ne zavarodna...valamit csak nem csinálok jól. Pl, sajnos fogalmam sincs, hogy a BRA mit is tud csinálni valójában....
A másik kérdés, hogy a TBLRD-t értem, hogy mire való, de a kérdésem, hogy hogyan töltöm fel az adatokat, mert minden egyes fordítás az MPLAB-ban kitörli a beírt dolgokat. Tudom, most mindenkinek az a kérdése, hogy minek programozok 18F-et, ha ennyire nehezen megy, de fejlődni muszáj, így meg lehet tanulni.. Válaszaitokat előre is köszi! Üdv TheSaint
Használd a szimulátort ( nem keveset, sokat ! ), ott kísérletezz és látod, hogy mi történik minden egyes bittel ! Vesd össze, hogy mit vártál, mi nem történik úgy, ahogy gondolod!
Ne add fel a "csüggedést" ! A hozzászólás módosítva: Jún 19, 2013
Igen, az írás rendben és végül ki is olvassa, de mikor megkapja a tápfeszt akkor az első írásig nem olvas, csak utána...
De már próbáltam azt is írok egy kamu adatot a 0xFF-re indulás után....de sajnos ekkor sem olvassa ki azt ami nekem kellene. Viszont ha ugyanarra a helyre írok akkor ír is és utána olvas is szépen bármikor!
Nem elfelejtesz valami regisztert beállítani, amit az írásnál megteszel ?!
Idézet: „A másik kérdés, hogy a TBLRD-t értem, hogy mire való, de a kérdésem, hogy hogyan töltöm fel az adatokat, mert minden egyes fordítás az MPLAB-ban kitörli a beírt dolgokat.” A TBLRD utasítással nemlehet az adat EEPROM -ot olvasni. - Az MpLab -bal olvasd be a kontroller tartalmát, fordítsd le a forrást, aztán programozz. Ehhez be kell állítani a project tulajdonságái között, hogy ne törölje a proghram memóriát fordítás előtt. - A hex -et más programmal (PICKit2 saját) programozd be a PIC -be és tiltsd le az adat memória írását. A hozzászólás módosítva: Jún 19, 2013
Igen, tudom. A TBLRD nem eeprom olvasásra való.
Viszont amire való azt nem tudom, hogyan töltsem fel adattal egyszer és mindenkorra...
Táblázat létrehozása abszolút kódban:
A hozzászólás módosítva: Jún 19, 2013
Köszi, ez már kezd jó lenni. Lassan annyi sörrel jövök Neked, hogy nem tudjuk leinni egy ültő helyünkben
De sajnos még van egy kérdésem: van a program emória elején az a subrutin, ami kiküld egy karaktert vagy instrukciót az LCD-re. Ha ezt "távolabbról" hívom, akkor összekeveredik progi és elkezd mátrix kódot kíírni. A "távolabb" az azt jelenti, hogy pl a program memória közepén van egy call, szóval jó nagyot kell ugrania. Egyszer már megoldottuk ezt a problémát, de az 16F-en volt. Úgy tűnik mintha a 18F-nél máshogy működne... kérdés hogy hogyan?
Szia!
A call 20 bites címet kezel (a teljes címtartomány), a rcall csak 11 bitet kezel (2k) (PCL 0. bitje mindig 0). A goto, bra, feltétetes bra, call, rcall mindig közvetlenül írja a PC -t, nem kell előkészíteni a PCLATHU, PCLATH regisztereket. Ha call -t használtál, akkor bárhol lehet a memóriában az eljárás. Lehet, hogy túllépted a 31 stack szintet?
Szia, nem hiszem, max 5-6 mélységben járhatok. Messze van még a 31, erre figyeltem. Mind1, most elvagyok egy darabig a menu rendszerrel.... ha majd nem megy, akkor még jelenkzem! Köszi és további szép napot!
Szia! Hát még1x köszi
A TBLRD használatával megoldódott minden propléma, legalábbis eddig. Nem is értem, hogy hogyan, de az EEPROM olvasás is.... További szép napot!
Üdv mesterek!
C18 al szívok mint a torkos borz.. USART.. kiküldeni jól kiküld, karaktert, sztringet.. de ha beolvasok akkor valami elcsúszik..
Próbáltam belső oszcival, most egy 11,059es baud rate kvarc van benne... próbáltam mindenféle módba BRGH=1 ben 16 bites módban.. de ugyanez..
ezt adja vissza... próbáltam valami logikát keresni benne de nincs és pl ha hosszabat irok be pl a "joska" akkor le is fagy a program! és többé nem reagál semmire.. Bocs hogy egy oldal lett a hozzászólás!
A PICula projektben mutattam példát ring bufferes UART adás-vétel, nézd meg azt! (Én USB-UART protokol konvereteren keresztül nyomultam, ezért ne tévesszen meg, ha időnként az USB címszó alatt látod emlegetni...)
Sziasztok!
Bocsi, hogy nagyon kezdő a kérdés, de el tudná nekem egyszerűen és érthetően magyarázni valaki, hogyan kell PIC-kel timer-t kezelni? (16F628A, mikroC) Kerestem már sample-öket, meg mindent, de eddig még nem sikerült. Nem vagyok túl hülye a programozáshoz, de ez most tényleg kifogott rajtam... Help pls, előre is köszi Üdv! Kori A hozzászólás módosítva: Júl 3, 2013
|
Bejelentkezés
Hirdetés |