Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Köszi a választ Neked is és Szilvának is!
A TRIS biteket az adatlap alapján állítottam be, mert ott azt olvastam (remélem jól értelmeztem) hogy 1-be kell állítani mindegyiket és a hardver automatikusan konfigurálja őket amikor kell. Valóban az is közrejátszott a hibás működésben, hogy rosszul használtam a megszakításokat és a Flag biteket, és ömlesztve akart egyszerre küldeni mindent a soros portra. A másik súlyos hiba pedig a Baudrate részen volt, illetve a regiszterekbe töltött érték stimmelt, viszont az általam használt 20MHz kristály nem volt kellően pontos, de a beépített 8MHz oszcillátor 19200bps-ig remekül működik és így mostmár helyesen értelmezi a PC az elküldött karaktereket. Ha kicserélném egy másik kritályra a 20MHz-est, akkor vajon képes lenne megfelelően működni? Mégegyszer köszönöm a segítséget!
Ritka az, hogy egy kristály nem működik, nem lehet, hogy véletlenül kifogtál egy olyat, ami harmadik harmónikuson rezegve adná a 20MHz-et? Mert ezesetben a PIC mellé téve csak 6,666MHz-en fog rezegni. Villogtass egy ledet a belső oszcillátorról, majd a kvarcról is, és ha a kvarcról kb. ugyanúgy villog, akkor ez harmadik harmónikusos kvarc lesz, ami nem baj, csak tudni kell, hogy a ráírt frekvenciát harmadolni kell, ha alapharmónikusú oszcillátorba teszed.
Nehezen tudom azt elképzelni, hogy egy kvarc nem elég pontos, inkább gondolnék arra, hogy nem megfelelően rezeg az adott kapcsolásban. A Microchipnek van erre is valami appnote-ja, amiben elég sokat foglalkoznak a kvarcokkal és egyáltalán a PIC-ekben lévő oszcillátorokkal. Régen láttam már, most nem tudom a számát sem, de talán érdemes rákeresni és belekukkantani.
Általánosságban pedig azt lehet megpróbálni, hogy a 15pF-eket kicseréled 22pF-re, esetleg 33pF-re, hátha stabilabb lesz a dolog. Persze a kvarccserével is próbálkozhatsz, lehet különbség a kvarcok között is. Én egy jó ideje 22pF kerámiakondikat teszek a PIC mellé a kvarcok lábaira, 4 és 20MHz közötti kvarcokkal nem volt még gondom így.
Szerintem sem a kvarc pontossága okozta a problémát: ha 1MHz-el eltérne a névleges frekvenciától, akkor is csak 5 %-os hibát okozna, azt meg a START-STOP elv lazán lekezeli ( a 20MHz-en 1MHz-el eltérő kvarc pedig már rossz kategória! ) !
Steve Idézet: Inkább az a probléma, hogy a konfigurációs bitek beállítására nem fordítottál elegendő figyelmet, s esetleg olyan beállítást sikerült összehozni, ami nem működik megfelelően. Nálam ez a konfigurációs beállítás kifogástalanul működik USB-vel is, pedig az sokkal kényesebb az időzítésekre, mint az UART 19200 Baud-nál. „A másik súlyos hiba pedig a Baudrate részen volt, illetve a regiszterekbe töltött érték stimmelt, viszont az általam használt 20MHz kristály nem volt kellően pontos” Idézet: „azt meg a START-STOP elv lazán lekezeli” Igen, foleg ha 1.5 vagy 2 stop van. De amugy a kvartz kontra kondenzatorok: a frekit lehet hangolni a kondik meretevel -- ha egyaltalan rezeg, es nem gerjed! Ha gerjed, akkor lehet egy soros ellenallas jot tenne neki.
Remek jó tanító anyagot találtam ezen az oldalon. Assembly és C egyaránt. Én gyosan mentettem is magamnak, mert igen egyszerű és érthető példákat hoz.
Sziasztok!
Van egy kis gondom a bray terminal programmal, tudnátok segíteni? Egy GSM modult programozok AT parancsokkal. Adatot tudok küldeni, echo val vissza is jön, de a modul által visszaküldött válaszokat nem látom. Küldeni küldi a modul mert a hyper terminalon pl látom, de ott meg az egyéb karakterek (CR / LF ) nem látszanak.. Tudna valaki segíteni? Mitől lehet ez, be vagy ki kell kapcsolnom valamit? Már mindent kipróbáltam de semmi eredmény.
Bár ez nem PIC kérdés, de próbáld meg a hex ablakban megnézni, hogy jön-e vissza adat. Ha ott nem jön, akkor nem jön. Karakter ablakban csak a megjeleníthető karakterek jelennek meg.
Igen, elnézést az offért. Nem, nem jön adat, de csak a bray termminal alatt. A hyperterminalon jön..Ki érti ezt..?
Köszönöm
handshake-et nezdd meg hogy van hyper terminalban beallitva, es ugyanugy allitsd be a bray-nel is.
Köszönöm, megoldódott. "emberi mulasztás" kategóriába esett a probléma...A SEND gomb előtti fehér mezőbe írtam a küldendő utasítást. Ha lejjebb írom be a szürke ablakba, majd enter akkor visszajön az echo és a válasz is. Régen használtam már ezt a programot elfelejtettem a lényeget. Pedig régebben ugyanígy jártam vele. Mondjuk azt most sem nem értem hogy akkor a SEND mezőbe mit kell írni és miért működik onnét máshogyan.
Köszönöm a segítséget
Szia!
Pedig oda kell írni, a szürke mezőben "ő" mutatja, hogy mit küldött el! Nem tudom, Neked most mi és hogyan működik?! Steve
Szerintem a gond azzal lesz, hogy a feher mezobol a send gombra kattintva nem ad sorveg jelet a kimeno string-nek. Most nem tudom kiprobalni, de ugy olvasom $0D$0A -t kell a string utan irni, hogy mukodjon, illetve ezt az egyik makro gombra ra lehet varazsolni es akkor meg azt kulon meg kell nyomni, hogy mukodjon. Igazan be tehettek volna egy pipat, hogy kuldeskor adjon-e a stringhez sorveget vagy sem...
Nem kellett beraknom semmit, a fehér mezőbe beírt dolgokat kiküldte a "SEND" gombra kattintáskor ( régebben használtam, de amit beírtam az kiment, az más kérdés, ha ő vár a beírthoz képest + karaktereket! ) !
Steve
Sziasztok.
Szeretnék megtanulni C nyelven programozni (e téren eléggé kezdő vagyok), és ehhez a PIC18F77 -et tartom a legmegfelelőbbnek, gondolva a jövőre. Eddig még csak 2x16 karakteres LCD kijelzőt vezéreltem kézzel, és ez elég volt ahhoz hogy bele szeressek a PIC világába. Az lenne a kérdésem, hogy milyen programfejlesztőt érdemes használni, és még mi mindenre lesz szükség ahhoz, hogy eltudjam érni a "célom"? Milyen programozót, debuggert érdemes hozzá használni (megépíteni)? Hol lehet fellelni demo panel kapcsolási rajzot, és hozzá kapcsolódó példaprogramokat? Hol érdemes "körülnézni" olyan tanulmány után, amivel eltudom sajátítani a C programozási nyelvet? Előre is köszönet a segítségért.
Kezdésnek ajánlom watt és icserny holnapjának olvasgatását.
Szerk.: most C nyelven akarsz megtanulni programozni, vagy PIC-et akarsz megtanulni programozni? Mert a kettő az két külön dolog, és amikor a kettő már külön-külön megy, akkor lehet a kettőt házasítani.
Üdv.
Igen, PIC -et szeretnék megtanulni programozni C nyelven.
Helló!
Szerintem előszőr is olvasgasd el a PIC kezdőknek fórumrészt és választ fogsz kapni mindenre. Egyébként én nem találtam a chipcadnál PIC18F77-et.
Tehat ha jol ertem PIC-et mar tudsz programozni ASM-ben?
Legegyszerubb szerintem, ha a C nyelvet PC-t gyakorlod eloszor, es ha az mar megy, akkor alkalmazod a PIC-es tudasod a C-s tudasoddal otvozve. Pl ahogy mar nemregen elhangzott volt a Petho Adam fele C konyv kivalo, vagy a Kernighan-Ritchie fele alap konyv is jo. C fejlesztesre a legkonyebb kornyezet a Linux (vagy BSD, tehat MacOS is). VisualC-t azert nem javaslom, mert tul sok pluszt ad, ami nem tartozik a C-hez -- ha Windows alatt akarsz gyakorolni, akkor pl MinGW-vel lehet ilyesmit csinalni.
Szia!
- MpLab fejlesztői környezet letölthető a gyártótól, kapsz hozzá egy Hitech C kompilert is a 16F -ekhez (benne van a telepítőben). - Vásárolj egy PicKit2-t, vagy építs egy klónt. Az építés legfőbb akadálya, hogy már rendelkezned kell egy programozóval, amivel a klón 18F2550 kontrollerét felprogramozod. A WLPT megoldhatja, ha van a gépeden párhuzamos port... - A 16F77 létezik, de már egy kicsit elavult, 16F887 -et ajánlanám helyette. - A 18F77 nem létezik. A 18F -hez letölthető a C18 fordító demo változata, a teljes verzió fizetős. Kezdetnek a 18F2520, 18F2620, 18F2550 típusokat ajánlanám.
Hi !
Orbitális szíváson vagyok túl. Leírom, tanulságos. Reggel óta szívok soros porttal. Pedig tudom kezelni, már sokszor használtam. A vétel megszakításból megy. Terminálból próbálgattam, ha kézzel írok neki betűnként akkor megy, ha viszont hosszabb szöveget küldök el egyszerre, akkor mindig overrun hibára futottam. Jó, gondoltam lassú az órajel, bonyolult az irq kód, sok megszakítás van, timerek, meg külső is, stb. Ok forrasztok quartzot, emeltem órajelet. Még mindig overrun. Elkezdek számolgatni, leviszem a soros baud-rátát kínomban 4800 ra, nem létezik hogy nem bírja a pic, 370 utasításnyi idő telik el két karakter között ha jól számolom. De akárhogy nyűvöm nem megy. Mérgembe kikommentezem az összes megszakítást, még mindig nem jó. És ekkor vettem észre, hogy nem is volt engedélyezve a perifériák megszakítása, csak a timer megszakítás miatt járt a irg kiszolgáló rutin felé. Tulajdon képen pollingolva ment a soros port. Engedélyezve a PEIE -t, egyből meggyógyult. Ehh, na ennek örömére, most már megnézem mit bír. Szerk: simán megy 57600 -on.
Üdvözletem! Első PIC-es panelomnál valami nem az univerzum szabályai szerint van. Az ICD2 reset állapotából felengedve a panel működik és az RC2 lábra kötött LED elkezd villogni (a rajzon ez nem látható, utólagos forrasztás). Viszont ha a saját tápjára kötöm a panelt, akkor nem indul el. Az MCLR is kap 4,8V-ot (ICD2-ről 4,6V-ot!) a táp is kiadja az 5V-ot, viszont a lábakon csak 0,5V mérhető. Próbáltam sorosan az MCLR -el 100Ohmot + 9k9-et a tápra kötni hátha ez a gond, valamint plusz kondit, mind az MCLR-nél, mind a tápban, de semmi. Pár kapcsolást nézve van aki nem rak ellenállást ehhez a lábhoz, van aki 33K-t, van aki 10K-t kondival, stb. Ezeket próbáltam. Az a sejtésem, hogy állandó reset-ben van a PIC. Próbáltam rövidre zárni , ergo 0-ba állítani az MCLR-el, de utána sem indult el a mikrovezérlő. Ki mit lát a kapcsolásban?
:bummafejbe:
Ez nem kapcsolás, hanem nyákrajz. És ezen én nem látom hogy hogy húzod 5V ra az mclr-t. Az a dióda akar lenni a felhúzó ellenállás ? Az 5V az direkt van rákötve a 2. lábra is ? LVP mód nincs véletlen bekapcsolva ?
Ott a pont. Az 5V direkt van rákötve igen, dióda után 9k9 van és 100Ohm sorosan a jelenlegi próbakapcsolásban.
Debugger vagy Programmerként volt az ICD2 kiválasztva, amikor beégetted a hex-et?
PIC-re rakj tápszűrő 100nF kondenzátort!
Új fejezetrésszel és mintaprogramokkal gyarapodott az esca.atomki.hu/PIC18 címen található, "Ismerkedés a PIC18 mikrovezérlőkkel" című PICCOLO projekt.
A kiegészült fejezet: Programmegszakítások A fejezet tartalma: * A programmegszakítás alapjai * A programmegszakítási rendszer részletei o A programmegszakítással kapcsolatos regiszterek o Kétszintű programmegszakítás o Egyszintű programmegszakítás (öröklött mód) o Az interrupt késedelem * A programmegszakítás kiszolgálása * A megszakított program kontextusának mentése * Bemeneti szint megváltozását jelző megszakítások * Mintaprogram: A bemeneti szint megváltozását jelző interrupt kipróbálása (change_test.c) * Mintaprogram: Nyomógomb pergésének vizsgálata (bounce.c) * Mintaprogram: A CPU felébresztése változásjelző programmegszakítással (wakeup.c) * Mintaprogram: A CPU felébresztése az INT0 programmegszakítással (wakup_int0.c) o Megoldási javaslatok a LED-ek és az INTx bemenetek ütközésének feloldására * Mintaprogram INT2 használatára (wakeup_int2.c) Az új példaprogramok bekerültek a PICCOLO projekt - PIC18 támogatói programkönyvtár és a példaprogramok Doxygen-nel dokumentált gyűjteménybe is (verziószám 0.27, kiadási dátuma 2010-06-20). Letöltés egyben: code_examples.zip Az új fejezet mintaprogramjai a PIC18F14K50 és a PIC18F4550 mintaáramkörökre egyaránt lefordíthatók (a forrásfájl ugyanaz de van mindkét MCU-hoz projektfájl).
A PIC18F2423 Mindkét CCP perifériáját PWM kimenetként szeretném használni. Van valami lényeges különbség a CCP1 és a CCP2 működése közt? (Tudok adatlapot olvasni csak fáradt vagyok hozzá. Ha azt a választ kapom hogy "igen" akkor átnyálazom de különben nem esek neki.)
És a CCP modulnál mi az az "auto shutdown"?
Nem emlékszem eltérésre, ha ugyanúgy konfigurálod be, akkor ugyanúgy működnek.
Van néhány bemenet, aminek hatására inaktív állapotba kapcsolhat a PWM kimenet. Komparátorral lehet figyelni pl. feszültséget, és ha leesik a feszültség, akkor lekapcsol a PWM a kontroller programjától függetlenül. Vagy van az FLT0 bemenet, arra is be lehet állítani, hogy ha alacsony, akkor tiltsa a PWM kimenetet.
LCD-re van egy karakter kiírató függvényem, valamint egy string kiírató is. A következőképpen néz ki ez utóbbi:
Használni pedig így tudom:
Mindez HI-TECH fordítóval 16-os sorozatú PIC-en kiválóan működik, viszont C18-ban lefordul, de nem csinálja a dolgát és még egy figyelmeztetést is ad fordításkor: Warning [2054] suspicious pointer conversion Min kell változtatnom, hogy a 18-as sorozatú PIC-en is működjön a függvényem? |
Bejelentkezés
Hirdetés |