Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   813 / 1320
(#) potyo válasza szaffo555 hozzászólására (») Okt 9, 2010 / 1
 
Read-Modify-Write. Alapvető törvény, hogy 18F-nél ha kimenetet akarunk macerálni, akkor azt a LATx regiszterrel csináljuk.
(#) watt válasza zoox hozzászólására (») Okt 9, 2010 /
 
Addig oké, hogy konfigoltad, de hogyan? (Rövid kódot beszúrhatsz Kód-al, hosszabbat inkább fájlként csatolj!)
(#) nemgyuri hozzászólása Okt 9, 2010 /
 
Kollégák, MPLAB szimulátorával teszteltem és ebbe futottam bele: (Lehet szimulátorhiba?)
  1. muloop:   call   slac    ;Shift left product and multiplicand  
  2.           rlf   REGC3,w   ;Test MSB of multiplicand
  3.           skpnc            ;If multiplicand bit is a 1 then
  4.           call   addba    ;add multiplier to product
  5.           skpc              ;Check for overflow
  6.      *   rlf     REGA3,w
  7.           skpnc
  8.           return
  9.           decfsz   MCOUNT,f   ;Next
  10.           goto   muloop

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.
(#) trudnai válasza szaffo555 hozzászólására (») Okt 9, 2010 / 1
 
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...
(#) watt hozzászólása Okt 9, 2010 /
 
Mi van kollégák, itt senki nem alszik!
(#) watt válasza nemgyuri hozzászólására (») Okt 9, 2010 /
 
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...
(#) nemgyuri válasza watt hozzászólására (») Okt 9, 2010 /
 
köszi már rájöttem
(#) watt válasza nemgyuri hozzászólására (») Okt 9, 2010 /
 
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?)
(#) trudnai válasza watt hozzászólására (») Okt 9, 2010 /
 
En 1 oranyi elonyben vagyok veled szemben hihi
(#) watt válasza trudnai hozzászólására (») Okt 9, 2010 /
 
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!
(#) trudnai válasza nemgyuri hozzászólására (») Okt 9, 2010 /
 
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?
(#) nemgyuri válasza watt hozzászólására (») Okt 9, 2010 /
 
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.
(#) trudnai válasza watt hozzászólására (») Okt 9, 2010 /
 
Ejfel... De miert jobb az, ha gyorsabban jar az orad? Hamarabb megoregszel...
(#) nemgyuri válasza trudnai hozzászólására (») Okt 9, 2010 /
 
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.
(#) szaffo555 válasza watt hozzászólására (») Okt 9, 2010 /
 
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.
(#) watt válasza trudnai hozzászólására (») Okt 9, 2010 /
 
Azért jobb, mert gyorsabb. Nemééérted?
(#) nemgyuri válasza nemgyuri hozzászólására (») Okt 9, 2010 /
 
Köszi "trudnai" megoldódott. TMR2 már be volt kapcsolva és már futott a PWM modul.
(#) shankara hozzászólása Okt 9, 2010 /
 
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.
(#) hadnagyakos hozzászólása Okt 9, 2010 /
 
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!
(#) emmzolee hozzászólása Okt 9, 2010 /
 
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.
(#) emmzolee válasza emmzolee hozzászólására (») Okt 9, 2010 /
 
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
(#) Hp41C válasza emmzolee hozzászólására (») Okt 9, 2010 /
 
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.
(#) icserny válasza emmzolee hozzászólására (») Okt 9, 2010 /
 
Idézet:
„Gondoltam írok egy olyat, hogy mind a 6 kimenetét használnám a picnek. Ez egy futófény lett volna.”
Ha az MCLR funkciót letiltottad, az A3 akkor is csak BEMENET lehet...

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).
(#) icserny válasza emmzolee hozzászólására (») Okt 9, 2010 /
 
Idézet:
„ICSP adapternek előtte a FoxDelta PB 1.2-t használtam.”
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.

U. i: Meg is van! Bővebben: Link
(#) emmzolee válasza Hp41C hozzászólására (») Okt 9, 2010 /
 
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
(#) emmzolee válasza icserny hozzászólására (») Okt 9, 2010 /
 
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
(#) Hp41C válasza emmzolee hozzászólására (») Okt 9, 2010 /
 
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.
(#) trudnai válasza emmzolee hozzászólására (») Okt 9, 2010 /
 
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.
(#) Hp41C válasza emmzolee hozzászólására (») Okt 9, 2010 /
 
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ó....
(#) vicsys válasza Hp41C hozzászólására (») Okt 9, 2010 /
 
Jogos a breadboard, én is így kezdtem a hivatkozott leírásban...
Következő: »»   813 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem