Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Biztosan láttátok már a Mikroelektronika PIC16F887 mikrovezérlőről szóló könyvének illusztrációit. Most nekiveselkedtem, és az Inkscape ingyenes vektorgrafikus program segítségével újrarajzoltam az egyik ábrát. Könnyebben ment volna, ha ismerném az Inkscape használatát, meg ha félúton nem töröltem volna ki véletlenül az egyik rajzréteget...
Köszönöm a segítőkész jó tanácsokat.
Megoldódott a problémám ,kiderúlt ,hogy én gondóltam rosszul ,és ajánlom mindenkinek a tapasztalatomat . Egyszerüen a szimulátor programok induláskór a ram területet alapból nullára állítják ,de ez a valóságban nem így van (legalább is a 628-asnál ),úgyhogy senki se felejtse el ,hogy programírásnál tegyen be pár törlő utasítást ,mert bekapcsoláskór nem lesz üres a ram. Mégegyszer köszönöm a segítségeket Üdvözlettel : revox
Lehet, hogy csak neked nem természetes, hogy inicializáláskor kezdeti értékre állítjuk a regisztereket, de ez teljesen egyértelmű dolog.
Watt-ot kiegészítve, az adatlapokban le van írva, hogy reset után melyik regiszter milyen értéket vesz fel: 0, és 1 egyértelmű, X-el jelölt pedig véletlenszerű.
Volt itt egy korábbi hozzászólásomban, hogy a Microchipnek létezik egy programja, amivel egyszerűbb programrészleteket meg lehet csinálni aránylag gyorsan. Akkor azt írtam tévesen, hogy az az MpLab része. Most véletlenül rábukkantam.
Innen tölthető le. Persze ésszel kell használni, nem mostani a program.
Félre értettetek. Direkt nem regisztereket írtam ,hanem RAM-ot ( átmeneti tárolót ) ahová a részeredmények kerülnek ( 020-tól kisebb megszakításokkal 14f-ig) .Én is azt hittem ,hogy ezeket a kontroller bekapcsoláskór alaphelyzetbe ( nullára ) álítja . De ez nem így van ,ezt próbáltam meg elöző hozzászólásomban leírni.
Üdvözlettel : revox
Szerintem nem értettük félre egymást, csak az adatlapban nincs leírva sehol sem, hogy a RAM milyen értékeket vesz fel induláskor, ezért természetes, hogy mielőtt egy cellából olvasni akarunk, akkor abba előtte be kell írni valamit. Mert ugye felesleges egy változót induláskor nullára állítani, ha a kódban abban tárolunk el egy soros portról bejövő adatot, mert a természeténél fogva előbb történik írás a cellába, és csak utána fogjuk valahol olvasni. Viszont egy ciklusváltozónál amikor a ciklusban csak növelgetjük a változó értékét, akkor ott először olvasás majd növelés és írás van, tehát azt előtte be kell állítani kezdőértékre.
Idézet: A RAM-ot úgy hívják, hogy File Registers. Gyakorlatilag az általános felhasználású regisztereknek felelnek meg. Pont ez a PIC egyik nagy erőssége, hogy minden adatmemória rekesz ugyanúgy kezelhető, mint a többi regiszter... „Direkt nem regisztereket írtam ,hanem RAM-ot”
Orok tanulsag: Mikor felteszel egy kerdest egy problemaval kapcsolatban automatikusan csatoldd a forras kodot es a kapcsolasi rajzot, hogy masok segiteni tudjanak -- mert egy ilyen egyszeru problema valoszinuleg 2 masodperc fejtores egy tapasztalt PIC fejlesztonek... rengeteg idot es energiat sporolhatnal meg vele...
Ha valakinek bohóckodni van kedve, irány a Viccek topik. Köszönöm!
MPLAB szimulátorát rá lehet venni valahogy, hogy PIC32/C32 választása esetén a printf kimenete jelenjen meg az output ablakban? PIC24/C30 esetén ehhez a Debugger/Settings/Uart1 I/O lapon Enable Uart1 I/O és Output->Window választás kell, és működik. C32 esetén viszont nekem nem ír ki semmit. A program ennyi:
Üdv mindenkinek!
Szeretnék egy olyan órát készíteni, amin 6db 7 szegmenses kijelző és 6db nixie cső volna. Az adott program külön-külön működik is (7szegmenses kijelzővel vagy nixievel), csak jelenleg át kell írnom a progit, és kijelző panelt kell cserélnem. Az volna a kérdésem hogy ha megvan az adott port szám (16F877-re gondoltam), akkor úgyanazt az időt ki lehetne küldeni mindkét kijelző típusra? Elég deffiniálni a külön két kijelző aztán a programban mondjuk elnevezni display1-nek és display2-nek? Válaszokat köszönöm!
Szia!
A Nixie csöveket a feszültség igényük, a led-es kijelzőket az áram igényük miatt nem tudja közvetlenül meghajtani a kontroller. Mindkét esetben szükséges egy közbenső fokozat. Az idő formátuma pedig lehet egyforma is. Az óra programja BCD kódot adjon ki az aktulási számjegyeknek megfelelően. - Ha Nixi csöves órát szeretnél, akkor a BCD kimenet egy-egy 74140 Nixie meghajtóval vezérelheti a csöveket. - Ha 7 szegmenses kijelzős órát szeretnél, akkor a kijelzőket egy-egy 7447 BCD - 7 szegmenses dekóder hajtja meg. A fogyasztás illetve az alkatrész szám csökkentésére a multiplexelt vezérlés ugyanígy megoldható. A lényeg, hogy az óra programja változatlan lehet...
Lehet nem fogalmaztam jól. Tehát elektronikailag nincs próbléma. Használok 74140-et is a nixies változatnál. Mindkét verziónál MPSA42 és MPSA92 van az anódoknál. A 7 segmenses kivitelnél végül nem használtam külön meghajtó IC-t a szegmensekre ,mert nem volt rá szükség. Közvetlen a PIC-re van kötve. Ebből adodik hogy nem BCD-s, hanem meg van írva a progiba hogy egy bizonyos számnál melyik szegmens világitson. Lehet most sokan hülyének fognak nézni (valjuk be nem a legjobb, de működik), de a nixies változatnál sem BCD-t adok ki, hanem a 4 lábat használva (ami a 74140-hez megy) megírtam a számokra hogy melyik lábon legyen "0" és "1".
Tehát külön működik! Itt az a lényeges kérdés hogy egy megírt programban lehetséges-e egyszerre a kettőt működtetni? Idézet: Ha belefér a memóriába, akkor miért is ne?! „Itt az a lényeges kérdés hogy egy megírt programban lehetséges-e egyszerre a kettőt működtetni? ”
Sziasztok! Lehet buta kérdés, de hogy lehet kiszámolni, vagy hol lehet megnézni adatlapban hogy egy utasítást mennyi időbe telik a pic-nek elvégezni? Köszönöm!
Köszi!
Írogatok valamit a jövöhéten. Ha nem sikerülne összehozni, jelentkezek.
Szia!
Benne van az adatlapokban az "Instruction set summary" fejezetben.
Üdv!
A próba kedvéért vettem egy PIC16F1826-os PIC-et, úgy tűnik a házilag készített PICkit 2-esem nem ismeri fel (no device found). Mivel lehetne ezt a tipust égetni? Esetleg elegendő lenne egy software update a PICkit 2-nek? Köszi előre is!
Köszi a linket!
Nekem is a V2.61 van meg a PICkit2 programmerből, mégsem látja... Lehet, hogy a 18f2550-be kellene hex-et cserélni?
Szia!
Az MpLab -bol nem megy csak PicKit3-mal. A PicKit2 V2.61 programnál "Malual device select" esetén a "Device Family / Midrange / 1.8V Min" alatt magtalálhatod, de fel is kell ismernie.
Én sem MPlab alatt égetek, hanem külön a pickit 2.61-el, de a CHECK COMMUNICATION menüpont 'lenyomására' nem találja az eszközt.
Gondolom ha manual device select-et választom vagy jól beégeti, vagy nem, így ha még azt is hozzáadom, hogy a program lehet hibás is, akkor már elég nagy a dolog bizonytalansági foka...
Hopp hopp!
Érdekes dolog: a manual device select legördülőjében nem található az eszköz! Sőt, semmilyen négyszámjegyű 16F-es... Pedig 2.61 a verzió... A device file version viszont 1.61. A microchip ajánlás alapján amit potyo belinkelt ennek 1.62.3-nak kéne lennie... Hogy lehet ezt update-elni?
Megvan!
Ez van amikor az ember előbb kérdez, minthogy gondolkodik . Sorry. Mindenesetre mások megsegítésére mellékelni az 1.62.3 device file updatet, amit egy pillanat alatt találtam meg a microchip oldalán (mármint egy pillanat alatt, miután elkezdtem gondolkodni ) Köszi a segítséget!
Szia!
Az is elképzelhető, hogy induláskor egy lábra menő jumperről beolvassa, hogy melyik módban kell működjön. Ez a láb a továbbiakban akár kimenet is helet, de akkor a láb és a jumper közé egy ellenállás kell... A Nixie csőhöz 10 db kimenet kell egy digitre - az összeshez, ha multiplexelt, a 7 szegmenseshez csak 7. Ez a 7 azonos lehet a Nixie 10 kivezetéséből 7 -tel...
Köszönöm, a gond ez volt, meg ahogy nézem az EC11 lesz a másik. Potyo próbálok figyelni az MCLR lábra, adatlapot olvasni, hidegítő kondit rakni a PIC mellé, alkalmazni a gyári ajánlást.
Köszönöm még egyszer a segítségeket, legközelebb többet olvasok. |
Bejelentkezés
Hirdetés |