Fórum témák
» Több friss téma |
Helló!
Kezdők számára milyen égetőt javasoltok, Pickit 2 vagy 3? Illetve milyen Demo boardot érdemes venni tanuláshoz?
Az ilyen kérdésekre én azt szoktam válaszolni, hogy addig semmit nem érdemes venni, amíg magad el nem tudod dönteni, hogy mit érdemes venned. Bújni kell az adatlapokat, az alkalmazási mintapéldákat, a fejlesztői környezet és fordítók leírását, keresni kell a neten mintaalkalmazásokat, mindaddig, amíg azt nem mondod, hogy "ez kell nekem".
Szerencsére az MPLAB szimulátorában hardver nélkül is futtathatók programok, de vannak olyan szimulátorok, amelyekben egyszerűbb áramkörök viselkedése is vizsgálható, így anélkül is lehet próbálkozni, hogy valamire beruháznál, amiről később kiderül, hogy mégsem kell... El kell dönteni, hogy melyik mikrovezérlő családdal kívánsz foglalkozni, honnan, miből tanulsz és mi a kívánt cél. Ezek is beleszólnak abba, hogy mit érdemes beszerezni. A PICkit2 már kifutó típus, tehát vannak olyan újabb mikrovezérlő típusok amelyeket már nem lehet vele programozni/debug-olni. A PICkit3 kevésbé összkomfortos és cserélgeti a firmware-t, tehát akkkor használható optimálisan, ha lehorgonyzol egy típusnál, és azt tanulmányozod hónapokon keresztül. Vannak ún. Starter Kit-ek is, amelyekben beépített programozó is van. Kezdetben könnyebbség lehet, hogy kéznél van a hardveres nyomkövetés lehetősége, hosszú távon korlátozó tényező, hogy csak néhány típus programozható vele (pl. Microstick I. konkrétan csak 4 típust támogat, a Microstick II. pedig az összes 28 lábú PIC24/dsPIC33-at). Van olyan megoldás is, hogy egy előre felprogramozott mikrovezérlő bootloaderrel saját magát programozza. A gond csak az, hogy az első felprogramozást is el kell végezni valakinek. Én biztatnám a fórum olvasóit, hogy a ChipCAD-nél kérjék a mikrovezérlő felprogramozását, ahogyan korábban csinálták a PIC16F877 esetében. A PICCOLO projektkíséleti áramkörével vagy a PIC-ador kártyával így akár programozó nélkül is neki lehetne vágni a tanulásnak.
Ahogy icserny kolléga írta, valóban kevés lenne az I/O lábak száma. Ráadásul az RF modulnak min. 3V-os táp kell, és akkor már nem lenne tartalék. Vagy több elemet kellene bevetni. Az említett step-up IC 1.1V-tól már indul, és menet közben még ez alá is mehet a tápfesz, talán 0.7V-ig. Így nagyjából csutkára ki lehetne használni az elemeket.
Kicsit azt vettem ki a szavaidból, hogy manapság már az lett a "sztenderd", hogy mindenféle előzetes informálódás nélkül kérdezgetnek az emberek. Én először mindig megpróbálom egyedül megoldani a feladatot, aztán ha nem megy, akkor kérdezek.
Hiszed vagy sem, nekem tényleg ez az első PIC-es projektem, és C programot is most írok először (bár igaz, hogy más programnyelvben már van tapasztalatom).
Nem úgy értettem, hogy a mikrovezérlők területén nem tűnsz kezdőnek, hanem hogy úgy általában a programozástechnika területén.
A billentyűzet olvasással kapcsolatban: Ha a gombok mátrixba vannak szervezve, akkor ugye az olvasásuk úgy történik hogy pl. a sorokat egyenként lehúzkodom testre, és olvasom az ellenállással tápra húzott oszlopok állapotát. Ebből az következik hogy alvó módból csak akkor tudod gombokkal feléleszteni a mikrovezérlőt, ha az összes sor ki van választva ezalatt, vagyis bármely gomb lenyomása H-L átmenetet okoz az oszlopbemeneten.
Programösszefűzésel kapcsolatos kerdés:
(MPLAB X, PIC24 assembly) Eddig nem írtam túl nagy programokat, így egyetlen állományban tároltam mindent. Viszont egy viszonylag nagyobb alkalmazásnál áttekinthetőbbé válik a dolog, ha különböző részeket külön állományba teszek, mert úgy csak a nekem szükséges részben kell keresnem, ill. a két rész két külön ablakban egymás mellett is megtekinthető. Emiatt létrehoztam több assembly (.s) forrásállományt és a fő állományban a többit .include paranccsal befűztem. Működik is a dolog, csakhogy nem egészen úgy ahogy gondoltam, mivel érdekesmódon minden befűzött programrész, adat, változó kétszer kerül lefoglalásra/beszúrásra a lefordított kódba. Egyszer oda, ahol az .include parancs van, majd mégegyszer a főprogram után. Nem értem hogy miért. (Lehet hogy én nem vagyok tisztában az .include parancs használatával, vagy a linkert nem jól állítottam be?)
Közben utánanéztem újra a dolognak, és ezt vettem ki:
- Az .include nem a saját állományok (modulok) összefűzésére való, hanem csakis külső (idegen) állományok hozzáfűzésére. - Az egyes modulok automatikusan összefűzésre kerülnek. Vagyis nekem az egyes modulok közötti átjárhatósághoz és a globális változók eléréséhez csak a .global parancsra van szükségem. Ezzel viszont az a gond, hogy a kb. 150 db változót így az azt használó modulokban .global-ként kell meghatározni.
Sziasztok!
Szeretném meg tudni, hogy ha van egy HEX fájlom, akkor azt a pic égető programok miért módosítják(jegyzettömbbel megnyitva látszik a különbség)? Végeztem néhány kísérletet. Csatoltam 3 HEX fájlt. Az első az eredeti HEX fájl, a másik kettő pedig amivé módosítottak a programok. Két programmal próbáltam, pickit2-vel és oshonnal. Az áramkör működése mindegyik esetben ugyanúgy működik, de szeretném meg tudni, hogy mitől van ez a változás. Ha valaki megtudná mondani, annak örülnék. Üdv, mate_x
A :020000040000fa sor a 32 bites cím felső 16 bitját állítja be, jó, ha ott van legalább a fájl elején.
PICkit2-nél állítható, hogy a nem implemenetált konfigurációs biteket 1-nek vagy 0-nak olvassa ki. Ettől függően más lesz a kiolvasott érték, de ennek nincs gyakorlati jelentősége.
Szia!
Eredeti: A fordításkor megadott adatokat tartalmazza csak. A programot és a konfigurációs regiszterek értéket. PICKit2-vel: Az exportáláskor még hozzá tette az adat EEProm tartalmát és az ID regiszterek értékét. Oshonnal: Az exportáláskor még hozzá tette az adat EEProm tartalmát, de az ID regiszterek tartalmát nem.
Nagyon szépen köszönöm a válaszokat mindkettőtöknek
![]()
Úgy nézem, nem goldoltak rá a PICKit2 program fejlesztői...
Sziasztok. Kezdő vagyok még a PIC programozásban de a 16F84A-ra már írtam néhány programot amik elég jól sikerültek. Most szeretnék áttérni a 12F675 és a 12F629 programozására de a világért sem sikerül beállítani a ki és bemeneteket, vagy legalább is rávenni hogy adjon ki jelet bárhogy. MPLAB IDE v6.61 fordítót használok. Tudna valaki segíteni, esetleg küldeni egy programocskát, persze ASM ben, ahol ha egy bemenetre jelet küldök akkor valamelyik másik lábon világít egy LED. Egy magyar oktató leírás is segítene.
Előre is köszi. Üdv
Szia!
Ott van a példa a port beállítására az adatlapban, a Example 3-1: Initializing GPIO:
Köszi a gyors segítséget. majd még jelentkezem a sikereimmel vagy tovább nyaggatlak a nyűgeimmel
![]()
Hali. Sikerültek a kísérletek kivéve a GPIO3 az nem akar se ki se be működni. Egyenlőre elég ennyi port. "A következő tervemnél azért majd kelleni fog mindegyik". Köszi a segítséget. Sokat haladtam előre.
Azert irtam, hogy 16F684. Nem jo otlet ilyen kapcsolouzemu stabler mert van sajat fogyasztasa. Ez a PIC 2 volttol uzemkepes, es van szabad 11 I/O es 1 input (MCLR). 31 kHz belso oszcirol is jarhat. Sleep uzemmodban 3 voltnal 3-4 uA a felvetele. Azert mondtam hogy a kisoccsevel (12F683) 2 ceruzaelemmel elment 2 honapot. Billentyuzetrol ossze lehetne diodazni a Row kimeneteket, es egy bemenetrol felebreszteni. Utana pedig TMR0 IT-vel lekezelni a billentyuzetet. Ja es az ara is eleg alacsony.
Idézet: Kimenetként nem is tud működni. Bemenetként is csak akkor használható, ha a lábhoz tartozó MCLR funkció le van tiltva. „a GPIO3 az nem akar se ki se be működni.”
Üdv! Pár oldallal ezelőtt érdeklődtem egy 16f88 pic meghibásodásáról. Valaki találkozott már egyébként ilyen fajta pic meghibásodással, hogy fel lehet programozni, és működik is egészen addig, amíg rajta az 5 volt, ahogy megszűnik újraindulásnál már nem megy? Kiolvasásra benne a program. Ez gondolom már nem javítható?
Amint már említettem, az RF modulnak min. 3V tápfesz kell, így amit írtál, az most nem alternatíva. Ha túl gyorsan fogy a kraft, akkor majd beépítek egy kapcsolót. Arra a napi pár óra használatra így is meg fog felelni, nem kell 24/7-ben működnie az áramkörnek.
Köszönöm az eddigi reakciókat. Csatoltam a véglegesnek szánt kapcsolást és programot. Várom a véleményeket.
A programot lefuttattam az MPLAB v8 szimulátorán, és jónak tűnik. Amire nem jöttem rá, az az, hogy a TMR0-t is be lehet-e vonni valahogy a szimulációba. Jelenleg úgy oldottam meg, hogy kreáltam egy feltételes eseményt: ha a timer flag-jét törlik, akkor 10s elteltével álljon újra 1-be. Valakinek van tippje rá, hogy az Oshonsoft PIC szimulátora miért nem eszi meg a HI-TECH C fordító által generált HEX fájlt? Még annyit kérdeznék, hogy jól számoltam-e a TMR0 megszakítások (túlcsordulások) közötti időtartamot, ha a következő képletet használtam: t=1/(Fosc/4/előosztó/utóosztó), ahol Fosc=2MHz, előosztó=32, utóosztó=256 (mindig 0-ról indul a számláló), és így adódott 16.384ms? Idézet: „Valakinek van tippje rá, hogy az Oshonsoft PIC szimulátora miért nem eszi meg a HI-TECH C fordító által generált HEX fájlt?” Egyes fordítók a hex végére tesznek egy-két sort a kontroller típusával és más adatokkal (dátun, verzió). Ezek a sorok nem Intel hex formátumúak. Jól számoltál. Idézet: Bizonyára más formátumú. A HI-Tech fordító mellett van egy hexmate nevű segédprogram, próbáld meg azzal konvertálni. (Csak ne tőlem kérdezd, hogy hogyan kell használni, hanem a Helpjét nézd meg!) „Valakinek van tippje rá, hogy az Oshonsoft PIC szimulátora miért nem eszi meg a HI-TECH C fordító által generált HEX fájlt?” Idézet: „Amire nem jöttem rá, az az, hogy a TMR0-t is be lehet-e vonni valahogy a szimulációba.” Ha belső órajelről jár és jól van felprogramozva, akkor mennie kell. Ha külső órajelet kell számolnia, akkor speciális stimulust kell a T0CKI lábra tenni, a vezérlését SCL nyelven megírni. Példa a T1 órajel bemenetére 32.768kHz órajelre van a Microchip fórumán a Szimulátor topik SCL témájában. Idézet: Igazad van! Bővebben: Link „Nekem a billentyűmátrix bekötése gyanús.”
Végülis működhet, csak hát így a belső felhúzóellenállások a külső soros ellenállásokkal együtt feszültségosztót képeznek. A működőképesség a két ellenállás arányától függ.
Köszi, az utolsó két sor törlésével már be tudtam tölteni a HEX fájlt a PIC Simulatorba.
![]()
Nekem az Oshonsoft szimulátorának billentyűzet mátrixa adta az ötletet.
Ha a sorok meghajtása végig kimenetként van konfigurálva, és csak az egyik lábon van L szint, a többin pedig H, akkor az azonos oszlopra kötött két gomb egyidejű lenyomása rövidre zárja a két, különböző szinten levő kimenetet. Ez biztos, hogy jó a PIC-nek? Az én programom ezt úgy próbálja elkerülni, hogy a SLEEP állapot kivételével a sorok közül mindig csak egy van kimenetként konfigurálva. Viszont SLEEP-ben mind a négy egyszerre kimenet, és bár elvileg azonos potenciálon vannak, valahogy nekem még így sem tűnik jónak az esetleges direkt összekötésük lehetősége. |
Bejelentkezés
Hirdetés |