Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Read-Modify-Write. Alapvető törvény, hogy 18F-nél ha kimenetet akarunk macerálni, akkor azt a LATx regiszterrel csináljuk.
Addig oké, hogy konfigoltad, de hogyan? (Rövid kódot beszúrhatsz Kód-al, hosszabbat inkább fájlként csatolj!)
Kollégák, MPLAB szimulátorával teszteltem és ebbe futottam bele: (Lehet szimulátorhiba?)
MCOUNT 0x1F-röl indul és 0x1A után a *-os sornál PIR1 0x02, PORTC 0x20 lesz. Ezt így nem értem, mindkettő 0x0 volt.
A LATD az nem utasitas, hanem egy specialis regiszter. Arnyek regiszter ami konnyiti a RMW (Read-Write-Modify) tipusu hibak elkeruleset -- ami hasonlo jelensegeket eredmenyez mint amit leirtal... Olvasni a PORTD-rol olvass, irni a LATD-be irj...
Ha nem akarod, hogy a fórummotor széttörje a kódodat, használd a KÓD gombot! Így követhetettlen amit írtál...
A szubrutinokban nem váltasz véletlenül bankot? (Mi történik bennük, nem ott állítódik el valami a regiszterekben?)
Ha jól látom ez 18F-es kód, vagy makrós 16F? (Milyen PIC?)
En 1 oranyi elonyben vagyok veled szemben hihi
Ezt hogy értsem, nálad éjfél van, vagy 2 óra?
Tudod, van az, hogy az én órám jobb mint a tiéd, mert gyorsabban jár!
1. csodalkoznek ha szimulator hibazna, nyilvan mivel tokeletes szoftver nem letezik ez sem zarhato ki, de tapasztalataim szerint az MPSIM eleg robosztus egy joszag!
2. PIR1 - valami interrupt esemeny bekovetkezett ha jol sejtem? Adatlapbol nezd ki melyik az... 3. PORTC - Lehet valami eszkoz be van kapcsolva ami magatol birizgalja a portodat, pl soros port vagy pwm stb, nezd meg mi az... 4. Watt fele javaslatok egyike?
Végig bank0-ban van figyeltem! PIC16F690-re van írva. Amikor az skpc (btfsc STATUS,0) -t "végrehajtja akkor írja át mindkét regisztert.
Ejfel... De miert jobb az, ha gyorsabban jar az orad? Hamarabb megoregszel...
Interrupt a PORTA2-ről lehetne, de azt egyenlőre nem birizgáltam. PORTC-t a PWM modul kezeli, de pont ez volt a bajom, mert még csak éppen inicializálva volt, de elindítva még nem. (legalábbis ezt terveztem). újra átnézem, remélem megtalálom a hibát. Köszi.
Köszi mindenkinek a választ!
A PORTC helyett is LATC-t írj inkább minden bit és bájt műveletnél, ha kimenetet akarsz állítani! no engem az zavart meg, hogy a C és a D port másként viselkedett. Ezek után következetesen használom amit javasoltatok, figyelembe véve a "Read-Modify-Write" törvényt.
Köszi "trudnai" megoldódott. TMR2 már be volt kapcsolva és már futott a PWM modul.
Sziasztok!
Mivel nagyon kezdő vagyok lehet,hogy sok butaságot kérdezek. Épitettem egy áramkört de a program valahogy nem jó -hozzá. A cucc tartalmaz egy PIC16F84 et egy 24C02-04 eepromot és vezérel egy TSA5511 es szintézert. lenne utalás vagy hex program de valami miat csak demo verzió. ki válalkozna ennek a programnak az átalakitására ? mivel elég sok cuccot vettem hozzá mert minden müszeremet erre alapoztam(lehet nagy hiba volt). Nem szeretném feladni. Egy hex és néhány hasonló asm et tudok küldeni.A hex pic lcd kijelzőjén müködik de érvényes adat nem jut be a TSA5511-be. Előre is minden segitséget megköszönök. Mplab om nincs nem is értek hozzá ,tehát forditani sem tudok asm ről hex re. Aki tud mailben irjon. Köszönöm a figyelmet.
Sziasztok!
Valaki fel tudna nekem programozni egy 18F2550-et? Nagy gondban vagyok, mivel itthon sehogy sem sikerül és az épülő PICKIT 2-re nagyon nagy szükségem lenne. Előre is köszönöm!
Hello
Vicsys oldalán láttam kezdőknek egy pic okítást. Ki próbáltam. Problémáim lettek a végére. Légyszi segítsetek, mi lehet a gáz. Úgy kezdődött, hogy meg írtam a pic12F675-re az első programomat, ami egy led villogtató volt. Itt a programja: include "E:\AAAAA\main.h" void main() { setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_CLOCK_DIV_2); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_comparator(NC_NC); setup_vref(FALSE); while(1) { Output_high (PIN_A5); //A portA 5-ös kimenete legyen H szintű Delay_ms(500); //Várakozz most 0,5 másodpercet és addig ne csinálj semmit Output_low (PIN_A5); //A portA 5-ös kimenete legyen L szintű Delay_ms(500); //Várakozz most 0,5 másodpercet és addig ne csinálj semmit } } Ez tök jó volt, működött, örültem neki. Aztán jött a gondolat, hogyírjak bele egy bonyolultabb programocskát. Legyen 2 led, és felváltva villogjon, mint egy multivibrátor. Az is működött. Gondoltam írok egy olyat, hogy mind a 6 kimenetét használnám a picnek. Ez egy futófény lett volna. Megírtam, le ellenőriztettem, és jónak találta a program. Jöhet az írás. Na itt kezdődik a baj. Azt írta, hogy nem tudja megírni, és ezek után nem is ismerte föl a picet soha többé. Van itthon egy másik ilyen, rátettem azt a picet is, az vadi új volt, de amikor meg akartam írni, az is ezt a hibát mutatta. Ekkor azt gondoltam, hogy biztos hibázik valami a programom körük, és ezzel most gáz van. Előkaptam egy PIC16F676-os picet, az is vadi új volt, de már azzal sem ment semmi. Ide beteszem a csoda futófény programomat. Ez után nem tudtam csinálni semmit a pickitemmel. #include "E:\AAAAA\main001.h" void main() { setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_CLOCK_DIV_2); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_comparator(NC_NC); setup_vref(FALSE); while(1) { Output_high (PIN_A0); Output_low (PIN_A5); Delay_ms(500); Output_high (PIN_A1); Output_low (PIN_A0); Delay_ms(500); Output_high (PIN_A2); Output_low (PIN_A1); Delay_ms(500); Output_high (PIN_A3); Output_low (PIN_A2); Delay_ms(500); Output_high (PIN_A4); Output_low (PIN_A3); Delay_ms(500); Output_high (PIN_A5); Output_low (PIN_A4); Delay_ms(500); } } Arra gondolok, hogy mivel a programozó lábakat is programoztam, nem-e azok csináltak gebaszt. Be dobok alulra 2 képet, hogy mit írt ki a pickit progi. A pickit kalibrálását is elvégeztem, azzal elvileg minden rendben. Feszültségek meg vannak.
Annyiban módosult a dolog, hogy gyorsan össze hajítottam egy ICSP adaptert próba panelon. Azzal nézegettem, hogy miért nem megy a beégetés. Azzal minden rendben ment. Legalább is a programot bele tudtam már írni a picembe. Az most más kérdés, hogy a futófény programom így nem lesz jó
ICSP adapternek előtte a FoxDelta PB 1.2-t használtam. Azt én csináltam, tehát lehet az a baj A 4 db 100 nF-os kondi nem csinálhat problémákat benne? Vagy esetleg a forrasztáshoz használt flux maradéka? Azt nem takarítottam le róla. Beteszek egy képet a FoxDeltáról. Bővebben: Link
Szia!
- A konfigurációs biteket állítod rossz értékre, vagy egyáltalán nem állítod be. Erre utal a piros "All protect" felirat a képen. Ekkor a program és az adat memória is olvasásvédett, a programozóval való kiolvasásakor 0 -t ad. - A törlés feloldja... A törlés után olvasd ki... - Állítsd be a konfigurációs biteket a forrásban, segítség a pic adatlapjában található... - Ellenőrizd le a programozás előtt a PICKit2 programjával. - Mivel minden lábat kimenetnek használsz, a PGC és PGD lábakat is, a MCLR is le van tiltva és belső oszcillátort használsz, a programozó nem tudja vezérelni ezeket a lábakat. Állítsd át a PICKit2 programját a "Use Vpp first program Entry" módszerre a "Tools" menüben. Nem árt, ha a program elejére, a kimenetnek állítás elé teszel néhány ms várakozást. Idézet: Ha az MCLR funkciót letiltottad, az A3 akkor is csak BEMENET lehet...„Gondoltam írok egy olyat, hogy mind a 6 kimenetét használnám a picnek. Ez egy futófény lett volna.” Nagyon nem mindegy, hogy mit írsz a konfigurációs bitekbe (main.h fuses)! Az egyik mellékelt képed szerint lezártad az IC-t. Erase device kellene. PIC12F675-nél lehet, hogy egy OSCCAL regenerálásra is szükség lesz (ha szól a PICkit2 kezelőprogramja). Idézet: Miért nem egy Low Pin Count Demo Board-ot (a PICkit2 Starter Kit demókártyája) csinálsz? Ha jólemlékszem, Szilva elkészítette az egyoldalasra egyszerűsített NYÁK tervét is. Az tökéletes a 8, 14 és 20 lábú PIC vezérlők kergetéséhez, beleértve a kis lábszámú PIC18 példányokat is.„ICSP adapternek előtte a FoxDelta PB 1.2-t használtam.” U. i: Meg is van! Bővebben: Link
Működik már rendesen a programozóm.
Az volt a baja, hogy íráskor le állítódott a VDD 2,5V-ra. Ez látszott is a képeimen. Vissza tettem 5V-ra, és minden ok. Amit írsz azt nem értem teljesen, mert én még zöld fülű vagyok nagyon a picből. Idézet: „Mivel minden lábat kimenetnek használsz, a PGC és PGD lábakat is, a MCLR is le van tiltva és belső oszcillátort használsz, a programozó nem tudja vezérelni ezeket a lábakat. Állítsd át a PICKit2 programját a "Use Vpp first program Entry" módszerre a "Tools" menüben.” Tehát ha jól értem. Átállítom oda a menüben, akkor fogja tudni programozni? Miért nem így használja mindig a pickit2, hogy sose legyen gond? Miért van erre szükség? Idézet: „Nem árt, ha a program elejére, a kimenetnek állítás elé teszel néhány ms várakozást.” Ezt hova írom? Az én programom elejére, vagy a setupban valahova? Légyszi részletesebben írd le, mert nem vágom a témát még. Köszi
Mire jó még ez a panel a felprogramozásom kívül? Mi az a sok alkatrész még rajta, és az a rengeteg üres forrpötty?
Én most azon gondolkoztam, hogy valami jumperes megoldással lehessen a lábaknak meg mondani, hogy a pickit melyik lábával legyen össze kötve. Az a legegyszerűbb, és a picek adatlapján úgyis van egy leírás, hogy mi micsoda. Ic foglalatnak meg betennék egy gyors csatlakozós foglalatot. Ilyet
Szia!
A PIC kontrollerek általában (nem minden típus) többféle módon programozható: - A hagyományos programozási mód (Vdd first program entry). A programozandó kontroller a Vdd tápot kapja meg előbb. Ez már be lehet kapcsolva a programozó csatlakoztatása előtt. A MCLR -t alacsony szintre húzza egy időre, utána a Vpp-re. Ezután kezdi a soros kommunikációt a PGD (adat) és a PGC (órajel) vonalakon. Előnye, hogy működő kártyán is lehet átprogramozni kontrollert. Hátránya az, hogy egyes esetekben a kontroller el tud indulni a Vdd bekapcsolása után, és kimenetté kapcsolhatja a PGC és/vagy PGD vonalakat - ezzel a programozó jelet vételét megakadályozza. Ez a mód kompatibilis a régi kontrollerekkel. - Vpp first program entry. A programozandó kontroller a Vpp feszültséget kapja meg előbb. A Vdd nem lehet bekapcsolva, csak a programozó adhatja a kontrollrnek az időzítések miatt. A Vdd 0V mellett a Vpp feszültséget kapcsolja be elsőnek, majd a Vdd-t. Ezután kezdi a soros kommunikációt a PGD (adat) és a PGC (órajel) vonalakon. Előnye, hogy a kontroller nem tud elindulni a Vdd bekapcsolásakor sem, mivel ekkor már érzékeli a programozási üzemmódot. Hátránya, hogy a Vdd tápot a programozónak kell adnia. Csak az újabb kontrollerek programozhatók így. - Low Voltage Programming (Alacson feszültségű programozás): A kontrollert a normális tápellátás mellett programozzuk. Ekkor egy újabb kivezetés kap szerepet: PGM. Ha a konfigurációban az LVP engedélyezett, akkor a PGM bemeneti láb magas szintjével a kontroller programozási módba vihető... Belső oszcillátor alkalmazása, MCLR letiltása és PGC és / vagy PGD láb kimenetként (T1 oszcillátor stb funkció) való felhasználása: Ebben az esetben a Vdd bekacsolása után a kontroller elindul, a külső MCLR jel nem hatásos. A program a futása során a Vpp bekapcsolása előtt eljut a PGC, PGD kimenetek átkonfigurálásához - ezzel megakadályozza a programozó kommunikációját. Ha még továbbra is Vdd first program entry módon szeretnénk programozni, egy várakozással el kell érni, hogy a Vpp bekapcsolásáig ne jusson el a program a PGD, PGC átkonfigurálásáig. Ezt a várakozást a program legelejére kell tenni.
Demo board - magyarul demo kartya. Tehat van rajta par kulso aramkori elem, ki lehet probalni led villogtatast, gomb kezelest, ad beolvasast stb. A sok ures potty pedig hasonlo celt szolgal mint barmilyen mas proba panel, tehat oda beultethetsz mas elemeket pl 7 szegmenses kijelzot es vezetekekkel bekotheted, hogy azt ki is tudd problni PIC-kel meghajtani.
Azert erdemes olyan demo boardot hasznalni mint amit mar a Microchip megtervezett mert rengeteg pelda program van ra megirva amit azonnal ki lehet probalni.
Szia!
Szerintem felesleges ennyit kiadni érte. Ebből kijönne az első saját panel is. A kontrolleres paneljeidre tervezd rá a 6 tüskét az ICSP csatlakozójának. Első áramköröknél jobban jársz nagyobb kontrollerekkel pl. 16F88x, mert ezek debuggolhatóak is. A PGC és PGD vonalakat hagyd szadadon a programozásra, a MCLR -t ne tiltsd le... Ha már fut rajta a program, a kritikus részek már jók, átfordíthatod kisebbre is. A jumperes megoldás veszélyes: Vpp, Vdd más lábra kerülhet,... Ha már dugaszolós kivitelben gondolkodsz, akkor breadboard, amin 6 - 8 összekötéssel megoldható a programozás - és más feladatra is kiválóan használható....
Jogos a breadboard, én is így kezdtem a hivatkozott leírásban...
|
Bejelentkezés
Hirdetés |