Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   558 / 1210
(#) Pali79 válasza Birs Alma hozzászólására (») Aug 19, 2014 /
 
OK, este 10-11 kb.
(#) usane válasza morzsa15 hozzászólására (») Aug 19, 2014 /
 
Keress másik projectet, ez hiányos. Utánanéztem orosz oldalon, nem teljes.
(#) morzsa15 válasza usane hozzászólására (») Aug 19, 2014 /
 
Akkor keresgélek köszönöm a segítségedet
(#) usane válasza Birs Alma hozzászólására (») Aug 19, 2014 /
 
Ezt miben írtad, mert nálam nem egészen így néz ki a 877A configja.
Íme:
  1. [code=c] __CONFIG _FOSC_HS & _WDTE_OFF & _PWRTE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CP_OFF

Különös tekintettel az oszira és a power on, és boren timerekre.
A hozzászólás módosítva: Aug 19, 2014
(#) usane hozzászólása Aug 19, 2014 /
 
Erősítsetek meg, hátha csak én kerestem rosszul. Olyan lehetőleg 8 bites PIC-et keresek ami tud 3 PWM-et RGB vezérlésre, van 1 IIC vagy SPI kommunikációja,ezek mellet plusz 1 kimenet kell és minimális lábszámmal rendelkezik. A minimális amit találtam 20 lábú. Ha valaki tud ennél kevesebbet az jó lenne, de ha nem akkor lehet, hogy szoftveres PWM lesz belőle, ha a sebesség megengedi.
(#) vilmosd válasza usane hozzászólására (») Aug 19, 2014 /
 
Mar bocs, de ez nem a '877A configja. A '877A config bitek igy vannak elnevezve:
  1. _CP_ALL                      EQU     H'1FFF'
  2. _CP_OFF                      EQU     H'3FFF'
  3. _DEBUG_OFF                   EQU     H'3FFF'
  4. _DEBUG_ON                    EQU     H'37FF'
  5. _WRT_OFF                     EQU     H'3FFF'    ; No prog memmory write protection
  6. _WRT_256                     EQU     H'3DFF'    ; First 256 prog memmory write protected
  7. _WRT_1FOURTH                 EQU     H'3BFF'    ; First quarter prog memmory write protected
  8. _WRT_HALF                    EQU     H'39FF'    ; First half memmory write protected
  9. _CPD_OFF                     EQU     H'3FFF'
  10. _CPD_ON                      EQU     H'3EFF'
  11. _LVP_ON                      EQU     H'3FFF'
  12. _LVP_OFF                     EQU     H'3F7F'
  13. _BODEN_ON                    EQU     H'3FFF'
  14. _BODEN_OFF                   EQU     H'3FBF'
  15. _PWRTE_OFF                   EQU     H'3FFF'
  16. _PWRTE_ON                    EQU     H'3FF7'
  17. _WDT_ON                      EQU     H'3FFF'
  18. _WDT_OFF                     EQU     H'3FFB'
  19. _RC_OSC                      EQU     H'3FFF'
  20. _HS_OSC                      EQU     H'3FFE'
  21. _XT_OSC                      EQU     H'3FFD'
  22. _LP_OSC                      EQU     H'3FFC'
Ezek szerint jonak nez ki a config.
Nalam ilyen a config:
  1. __config _CP_OFF&_CPD_OFF&_LVP_OFF&_WDT_OFF&_XT_OSC
De mondtam mar a kolleganak, hogy MPLAB alatt kellene szimulalni, lehet kiderulne a turpissag.
(#) usane válasza vilmosd hozzászólására (») Aug 19, 2014 /
 
Közben rájöttem, megnéztem én is, csak már nem tdtam javítani. Amit én írtam az már az mplab által generált változat a configra.
A hozzászólás módosítva: Aug 19, 2014
(#) Birs Alma válasza vilmosd hozzászólására (») Aug 19, 2014 /
 
Sziasztok,


Igen, olvastam a szimulációra vonatkozó javaslatodat, de nem igazán értem mire gondolsz, illetve nem tudom, azt hogy kell csinálni. Mi és hol derülhetne ki.
A hozzászólás módosítva: Aug 19, 2014
(#) Pali79 válasza Birs Alma hozzászólására (») Aug 19, 2014 /
 
  1. ; RA0-ra kötött led bekapcsolása, végtelen ciklus
  2.  
  3. ;***********************Beállítások********************************************
  4.  
  5.         PROCESSOR '16F877A'
  6.         INCLUDE <P16F877A.INC>
  7.  
  8.         __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF & _LVP_OFF & _BODEN_OFF
  9.                
  10.                 ORG 0x0000
  11. ;*************************************************************************
  12.  
  13.  
  14.         bsf     STATUS,RP0      ; Bank 1
  15.         movlw   0x06              ;
  16.         movwf   ADCON1          ; PORTA digitális      
  17.         bcf     TRISA,0     ; RA0 output
  18.         bcf     STATUS,RP0  ; Bank 0
  19.         bsf     PORTA,0     ; LED ON!!
  20.         goto    $       ;
  21.        
  22. end


Ez így most működik!
(#) Birs Alma válasza Pali79 hozzászólására (») Aug 20, 2014 /
 
Működik!!!! Kösz!
Nagy segítség volt, hogy kaptam tőled egy tutira kipróbált programot!
Amíg a Te programoddal kísérleteztem, véletlenül rájöttem mi volt a baj!

A csatolt képen látható kapcsolást használtam. Felváltva, hol PIC16F887-el, hol PIC16F877A-val.

A 887-el semmi gond.

A 877A a programozás után nem csinál semmit. AMÍG AZ MCLR VEZETÉKET KI NEM HÚZOM! (A rajzon okkersárga vezeték.)

Úgy tűnik, ennél a PIC-nél, amíg a PICKIT2 1-es és a PIC MCLR össze van dugva, nem sikerül a VDD-re felhúzás, emiatt gondolom folyamatosan resetben van a PIC. Még ilyet?!?! De miért?

És miért van ez másként PIC16F887-nél, PIC16F690-nél, PIC12F675-nél. Ezekkel kipróbáltam, ezeken nem kellett az MCLR vezetéket a PIC és a PICKIT2 között bontani a programozás után. Csak a 877A-n. Fura.

Nagyon köszönöm még egyszer a segítséget!!

L.
(#) vilmosd válasza Birs Alma hozzászólására (») Aug 20, 2014 /
 
A MPLAB IDE egyik kituno szolgaltatasa a MPLAB SIM. Ezzel a PC- n tudod futtatni a PIC programjat HW jelenlete nelkul. Kivalasztod a Debugger-> Select Tool-> MPLAB SIM eszkozt, es tudod leptetni, futtatni a leforditott programot. A "Special Funtion Registers" ablakban lathatod a SFR-ek tartalmat, valtozasait, a "Watch" ablaban pedig lathatova valnak a valtozok. Persze van meg egy rakas mas funkcioja is (Stopwatch, Stimulus, Logic Analyzer...). Probald ki a Te programodat leforditas utan a szimulatorban. Nem nagy program igy konnyu lesz elkezdeni. A SIM kivalasztas utan a Debugger Settings-ben be tudod allitani az orajel frekvenciajat, valamint be tudod kapcsolni a "Stopwatch" funkciot. Utana tudod leptetni a programot sorrol-sorra, es lathatod hogyan valtoznak a regiszterek.
(#) Birs Alma válasza vilmosd hozzászólására (») Aug 20, 2014 /
 
Köszönöm!
(#) vilmosd válasza Birs Alma hozzászólására (») Aug 20, 2014 /
 
Talalhatsz magyar nyelvu leirast is a Juhász Róbert honlapjan.
A hozzászólás módosítva: Aug 20, 2014
(#) Birs Alma válasza vilmosd hozzászólására (») Aug 20, 2014 /
 
Köszönöm!
(#) obenhof hozzászólása Aug 22, 2014 /
 
Sziasztok!

Nagyon kezdő vagyok a témában és egy számomra érdekes jelenségre lettem figyelmes. Adott egy PIC18F45K22 és egy 8x8-as ledmátrix.
Az első kódban minden lábhoz sorban meg van adva mikor mit tegyen, hogy az ábra kirajzolódjon:
  1. void main(void) {
  2.     TRISC = 0;
  3.     TRISA = 0;
  4.    
  5.     while(1) {
  6.         __delay_ms(5);
  7.         LATC = 0b01111111;
  8.         LATA = 0b00111100;
  9.         __delay_ms(5);
  10.         LATC = 0b10111111;
  11.         LATA = 0b01000010;
  12.         __delay_ms(5);
  13.         LATC = 0b11011111;
  14.         LATA = 0b10100101;
  15.         __delay_ms(5);
  16.         LATC = 0b11101111;
  17.         LATA = 0b10000001;
  18.         __delay_ms(5);
  19.         LATC = 0b11110111;
  20.         LATA = 0b10100101;
  21.         __delay_ms(5);
  22.         LATC = 0b11111011;
  23.         LATA = 0b10011001;
  24.         __delay_ms(5);
  25.         LATC = 0b11111101;
  26.         LATA = 0b01000010;
  27.         __delay_ms(5);
  28.         LATC = 0b11111110;
  29.         LATA = 0b00111100;
  30.  
  31.     }
  32. }

Ez tökéletes eredményt ad, de kód nem újrafelhasználható, minden ábránál újra kellene írnom.
A másik kódban egy tömbből olvasom ki az ábra adatait (így könnyebb megrajozni is).
  1. void main(void) {
  2.  
  3. unsigned char face[] = {
  4.         0b00111100,
  5.         0b01000010,
  6.         0b10100101,
  7.         0b10000001,
  8.         0b10100101,
  9.         0b10011001,
  10.         0b01000010,
  11.         0b00111100,
  12.     };
  13.  
  14.     TRISC = 0;
  15.     TRISA = 0;
  16.    
  17.     while(1) {
  18.        
  19.         for(int i=0; i<=7; i++) {
  20.             switch (i){
  21.                 case 0:
  22.                     LATC = 0b01111111;
  23.                 break;
  24.                 case 1:
  25.                     LATC = 0b10111111;
  26.                 break;
  27.                 case 2:
  28.                     LATC = 0b11011111;
  29.                 break;
  30.                 case 3:
  31.                     LATC = 0b11101111;
  32.                 break;
  33.                 case 4:
  34.                     LATC = 0b11110111;
  35.                 break;
  36.                 case 5:
  37.                     LATC = 0b11111011;
  38.                 break;
  39.                 case 6:
  40.                     LATC = 0b11111101;
  41.                 break;
  42.                 case 7:
  43.                     LATC = 0b11111110;
  44.                 break;
  45.             }
  46.             LATA = face[i];
  47.             __delay_ms(5);
  48.         }
  49.  
  50.     }
  51. }

Itt is megjelenik az ábra, de minden az ábrához tartozó bekapcsolt led alatt 1-egyel, halványan világít még 1. Mondhatnám úgy is, hogy szellemképes. Sötétben nagyon zavaró. Mi okozza ezt a problémát?
(#) nedudgi válasza obenhof hozzászólására (») Aug 22, 2014 /
 
Előbb nullázd a LATC-t, állítsd be a LATA-t és utána állítsd be újra a LATC-t.
A hozzászólás módosítva: Aug 22, 2014
(#) obenhof válasza nedudgi hozzászólására (») Aug 22, 2014 /
 
Köszönöm a megoldást, így már letisztult az ábra! Tehát egy pillanatra "átcsorgott" a LATA beállítása a következő sorra. De ezt miért nem csinálta az első kódnál? Ezen még gondolkodnom kell, hogy átlássam... köszi még1x
(#) gustaw hozzászólása Aug 22, 2014 /
 
Sziasztok!

16F887-es PIC-kel szeretnék vezérelni egy 4 digites LCD kijelzőt. Azt már kitapasztaltam, hogy melyik szegmens hol van, de pont inverzben működik. Leírásokat böngészve azt találtam, hogy van valami BP láb a kijelzőn, amivel a polaritást lehet cserélni, és ha jól sejtem akkor rendesen fogja nekem mutatni a karaktereket.
Tudna ebben vki tanácsot adni?
(#) ktamas66 válasza gustaw hozzászólására (») Aug 22, 2014 /
 
Nehéz ügy . Ott kezdődik, hogy a 887-esnek kevés a lába. Inkább használj erre kifejlesztett PIC-et (mondjuk 16F1946, az adatlapját mindenképpen érdemes tanulmányozni).

A lényeg: ha 1 BP van, akkor statikus módban kell vezérelni. Mivel az LCD nem kaphat egyenfeszültségű komponenst, ezt úgy szokták csinálni, hogy a hátlapra (BP) egy négyszögjelet vezetnek. Amelyik szegmensre ugyanilyen fázisú négyszögjel megy (tehát ahol a BP magas ott a szegmens is magas), akkor világos marad, ha ellenfázisú, akkor sötét ( tehát ha BP magas -> szegmens alacsony, BP alacsony -> szegmens magas).
Ezt nem egyszerű leprogramozni, egyszerűbb másik PIC-et választani, esetleg LCD meghajtó IC (CD4543, PCF8576).
(#) Pali79 válasza vilmosd hozzászólására (») Aug 22, 2014 /
 
MPLab X alatt hol lehet állítani a frekit? Sehol nem találtam...
(#) vilmosd válasza Pali79 hozzászólására (») Aug 22, 2014 /
 
Nekem meg nincsen ilyenem. Talan a doksi megmondja.
A hozzászólás módosítva: Aug 22, 2014
(#) gustaw válasza ktamas66 hozzászólására (») Aug 22, 2014 /
 
Maximtól rendeltem korábban ingyenes mintákat, találtam köztük egy Max7231-et elvileg az is LCD dekóder. Még nem használtam ilyent, de megpróbálom ezzel.
(#) ktamas66 válasza gustaw hozzászólására (») Aug 22, 2014 /
 
Sajnos úgy látom az nem lesz hozzá megfelelő, mivel az 1/3 multiplexes LCD-hez való, ahol 3 BP lenne, neked meg statikus kellene. Ez a hátránya a statikus LCD-knek, hogy rengeteg kivezetés kell hozzá.
(#) roleez hozzászólása Aug 25, 2014 /
 
Sziasztok!
Nem tudom, hogy ebbe a topicba kell feltennem a kérdésem...?
Inkább csak elvi lenne a kérdésem, ezért konkrét forrást most nem írok, majd ha oda
jutunk.
Szóval adott egy PIC18F46K80-as eszköz, három más idejű megszakításokkal (1,2, 10 msec)
Az 1 msec-es ciklusban olvasok 5 analóg értéket, ami van, hogy rövid időre (kb. 0.1 sec)
össze-vissza számot kapok. Olyan, mintha a táp vagy éppen nulla [V] kerülne az analóg
bemenetekre. Azt kiszűrtem, hogy valahol az ASM-ben (mikroC-ben van a forrás) nincs-e
véletlenül TRIS állítás vagy PORT-ra írás. Ami ugye okozhat ilyen jelenséget.
A kérdésem az, hogy találkozott valaki ilyennel már, ill. mitől lehet az analóg konvertált
értéke nagyban változó, miközben a bejövő jel mV-okat mozog.

Üdv és köszönöm,
Roland
(#) Szamy válasza gustaw hozzászólására (») Aug 25, 2014 /
 
Üdv.
Nem kell dekóder. Ettől sokkal bonyolultabb statikus lcd-t hajtok meg 18f6520-as pickel, és pont maradt 3 láb: 2 a soros portoknak, (hardveresen), 1 meg egy piezonak.
(#) don_peter hozzászólása Aug 25, 2014 /
 
Srácok, írt már valaki közöltek olyan programot C nyelven amellyel egy PIC-et hálózaton keresztül lehet vezérelni?
Tehát lenne egy weboldal ahonnan el lehetne érni a PIC-et és a portjait lehetne állítani, esetleg egy-egy adatot pl. hőmérséklet vagy ilyesmit lehetne lekérdezni?
Ha van valaki aki készített ilyen progit vagy akár hasonló megoldást és szívesen segítene annak nagyon örülnék.
Egy tanuló projekt keretében szeretnék először egy weboldalról kapcsolgatható LED-es dolgot elkészíteni.
****
(ui: 18-as családból 442, 452 és 4550-es PIC-em van itthon.)

Felesleges részeket kivettem!
Van a kérdésednek témája, használd bátran.
-moderátor-
A hozzászólás módosítva: Aug 25, 2014
(#) usane válasza don_peter hozzászólására (») Aug 25, 2014 /
 
(#) don_peter válasza usane hozzászólására (») Aug 25, 2014 /
 
Ohh igazad van.. Thanks
(#) gustaw válasza Szamy hozzászólására (») Aug 26, 2014 /
 
Szamy, üzenet ment privátban, de esetleg itt is kifejthetnéd. Csodálkozom, hogy ebben a témában alig találtam leírást a neten. Sehol sem találtam kódrészletet arra vonatkozóan, hogy hogyan lehet statikus LCD-t hajtani mezei PIC-kel.
(#) cross51 hozzászólása Aug 26, 2014 /
 
Sziasztok!
Valaki tudna segíteni, hogy az XC8 fordítóban az stdio.h állományban _HOSTED mit tesz?
Próbálkoztam vele beirtam #include <stdio.h> elé, hogy #define _HOSTED, de akkor ezt az errort kaptam:_HOSTED:27: error: (125) illegal character (32543 decimal) in #if
_HOSTED:86: error: (125) illegal character (32543 decimal) in #if
_HOSTED:124: error: (125) illegal character (32543 decimal) in #if.
És a hosted csak azokra az fv.-kre vonatkozik melyek a streamből vagy a streambe írnak.
Még abban kérnék segítséget mint C18-ban megadható stdout = _H_USER és az XC8ban hogyan tehető?
Köszönöm!
Következő: »»   558 / 1210
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