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   898 / 1211
(#) Hp41C válasza pompidu hozzászólására (») Jan 29, 2017 /
 
Okozhatja.
(#) pompidu válasza Hp41C hozzászólására (») Jan 29, 2017 /
 
A pic adatlapján olvastam hogy 10µF low esr kondi kell oda, viszont az mindegy milyen kivitelű, mármint tantál vagy elko?
(#) Hp41C válasza Sten hozzászólására (») Jan 29, 2017 /
 
Az is jó, ha a saját áramköre táplálja.
Az órajelgenerátor (akár a belső akár a külső van kiválasztva) működik. Ha a MCLR funkció le van tiltva és a program a PGC és/vagy a PGD lábat kimenetnek kapcsolja közvetlenül a kód elején, a programozó nem tud kapcsolatot teremteni a kontrollerrel. A probláma megoldása a "Vpp First Programming Entry" módszer használata lenne, de ekkor a Vdd -t a programozó eszköznek kellene kapcsolnia.

Csak úgy mellékesen: A 12F675 programozási leírásában csak a "Vpp First Programming Entry" módszer szerepel.
(#) Hp41C válasza pompidu hozzászólására (») Jan 29, 2017 /
 
Kerámia vagy tantál. Ld 24FJ64GA002 leírásának 2.4 fejezete.
A hozzászólás módosítva: Jan 29, 2017
(#) pompidu válasza Hp41C hozzászólására (») Jan 29, 2017 /
 
A pic saját táplálást kap az összes Vdd lábára közvetlenül utána 100nF-os kondenzátor van beforrasztva.
A pic írásához a microchip IPE programját használom, viszont semmi konkrét hibakódot nem ír csupán connection failed üzenetet kapom, de megpróbálom úgy, hogy egy tantál kondit beforrasztok és hátha kommunikál.
(#) pompidu válasza pompidu hozzászólására (») Jan 29, 2017 /
 
Beforrasztottam egy 10µF-os tantál kondit, sajnos így sem hajlandó kommunikálni.

Az MCLR láb fel van húzva 10k ohmmal tápfeszültségre
A Pk3 4-es lába a PGED1-es lábára van kötve az 5-ös pedig a PGEC1-es lábra.
Mi lehet a probléma, vagy mit lehetne még megpróbálni?
(#) cross51 válasza pompidu hozzászólására (») Jan 29, 2017 /
 
Ha connection failed-et kapsz nem biztos, hogy a hardware-ben van a baj, hanem a Pk3-mal kell trükközni (Köszi Microchip). Én ilyenkor a szerencsére hagyatkozok IPE, IDE is megy ebbe abba is megpróbálok kapcsolódni, gép újraindítás Pk3 lehúz vissza dug... ilyen rejtélyes dolog ez vagy ha semmi nem segít azt szoktam, hogy nyomom a Pk3 gombját és úgy dugom rá az USB-re utána magához szokott térni.
(#) pompidu válasza cross51 hozzászólására (») Jan 29, 2017 /
 
Köszönöm a segítséget mindenkinek

A gomb megnyomásos módszer működött...
Éppen ezért vettem Pk3-at hogy ne keljen a programozó ... dolgaival szórakozni erre ezt csinálja.
Mindenesetre köszönöm a tippet, és Hp41C fórumtársnak is köszönöm a segítségét.
(#) cross51 válasza pompidu hozzászólására (») Jan 29, 2017 /
 
Ezzel tudod az a baj, hogy a sulitól használtra megkaptam a Real ICE-t ami cirka 200.000 Ft a ChipCAD nél és azzal és néha communication failed, vagy endpoint hiba van, de ez nem csak a Microchip hibája hanem a drága Microsoft-és is mert valamiért ezek a hibák általában debug után jönnek elő mikor ott hagyom 5 perce a programozót és szerintem timeout-ol az USB vagy nem tudom mit csinál, úgyhogy ez egyenlőre csak remény, hogy a Microchiptől olyan rendszert kapja amivel többnyire nincs hiba, de ha megszokod utána már észre se veszed
(#) Sten válasza Hp41C hozzászólására (») Jan 29, 2017 /
 
Köszönöm szerintem biztos ez lesz a probléma ha lesz egy kis időm utánanézek mi és hogyan is működik a "Vpp First Programming Entry" módszer.
(#) _BiG_ válasza cross51 hozzászólására (») Jan 29, 2017 /
 
Az USB driverében (eszközkezelő) ki kell kapcsolni az energiaspórolós üzemmódot, azaz ne áramtalanítsa az USB-kimenetet a windows.
(#) pajti2 válasza cross51 hozzászólására (») Jan 29, 2017 /
 
USB-nél nincsen olyan, hogy time out. A host driver config után már "tartja" a kapcsolatot az idők végezetéig. A client esetleg csinálhat olyat, ha valami hibára fut a szoftveres vezérlése, hogy offolja a vezetékeket (kapcsolatot bont), de az nem host oldali hiba.
(#) pajti2 válasza _BiG_ hozzászólására (») Jan 29, 2017 /
 
Ha be is állítod, az csak marketing duma, hogy lekapcsolja a tápfeszt. Rámérsz multiméterrel az usb-re sleep üzemben, ugyan úgy ott az 5 volt.
(#) cross51 válasza pajti2 hozzászólására (») Jan 29, 2017 /
 
Én a suspend-ből gondoltam már nem igazán emlékszem, hogy ha egyszer kapcsolódik a device a gépre akkor a driver folyamatosan tolja neki az adatot vagy nem és, ha megint jól emlékszem 1.5 ms ig nincs semmi kommunikáció átmegy suspend módba, de már rég foglalkoztam az usb-vel meg, még ránk szólnak az offért, kicsit el tértünk már a témától
A hozzászólás módosítva: Jan 29, 2017
(#) Hp41C válasza pajti2 hozzászólására (») Jan 29, 2017 /
 
A Microchip divereknél a mizéria akkor kezdődött, amikor színrelépett az USB3.
(#) ODU hozzászólása Jan 29, 2017 /
 
Sziasztok!

Csináltam egy akkuőrt. PIC 16F684-es PIC-et használok.
A programkód:
  1. #include <xc.h>
  2. #define _XTAL_FREQ 4000000
  3. #pragma config FOSC = INTOSCCLK // Oscillator Selection bits (INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
  4. #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
  5. #pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
  6. #pragma config MCLRE = ON       // MCLR Pin Function Select bit (MCLR pin function is MCLR)
  7. #pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
  8. #pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
  9. #pragma config BOREN = ON       // Brown Out Detect (BOR enabled)
  10. #pragma config IESO = OFF       // Internal External Switchover bit (Internal External Switchover mode is disabled)
  11. #pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
  12. int shift,ADC1,i;
  13. unsigned long int atlag;
  14. void bekapcs()
  15. {
  16.         OSCCON = 0b01100101;
  17.         CMCON0 = 0b00000111;
  18.         TRISC =  0b000000;
  19.         PORTC =  0b000000;
  20.         TRISA =  0b000011;
  21.         PORTA =  0b000000;
  22.         ADCON0 = 0b10000001;
  23.         ADCON1 = 0b10011111;
  24.         INTCON = 0b00000000;
  25.         ANSEL =  0b00000001;
  26.         T2CON = 0b00000000;
  27.         atlag=0;
  28. }
  29. void ADC()
  30. {
  31.     for(i=0;i<10;i++)
  32.     {
  33. ADCON0bits.GO = 1;
  34. while (ADCON0bits.GO_DONE);
  35. shift=ADRESH << 8;
  36. ADC1=ADRESL+shift;
  37. atlag+=ADC1;
  38.     }
  39. }
  40. void main(void)
  41. {
  42.     bekapcs();
  43.     while(1)
  44.     {
  45.         atlag=0;
  46.         ADC();
  47. while((atlag/10)<785)
  48.      {
  49.         RC0=1;
  50.         RC1=0;
  51.         RC2=0;
  52.         RC3=0;
  53.         RC4=0;
  54.         RA2=0;
  55.         T2CON = 0b00000100; // prescaler + turn on TMR2;
  56.         PR2 = 0b11111001;
  57.         CCPR1L = 0b01111101;  // set duty MSB
  58.         CCP1CON = 0b00001100; // duty lowest bits + PWM mode
  59.         __delay_ms(100);
  60.         T2CON = 0b00000000;//  prescaler + turn on TMR2;
  61.         __delay_ms(100);
  62.         ADC();
  63.     }
  64. if ((atlag/10)>785)
  65. {
  66.     RC0=1;
  67.     RC1=1;
  68.     RC2=0;
  69.     RC3=0;
  70.     RC4=0;
  71.     RA2=0;
  72.         RC5=0;
  73. }
  74. if ((atlag/10)>801)
  75. {
  76.     RC0=1;
  77.     RC1=1;
  78.     RC2=1;
  79.     RC3=0;
  80.     RC4=0;
  81.     RA2=0;
  82.         RC5=0;
  83. }
  84. if ((atlag/10)>815)
  85. {
  86.     RC0=1;
  87.     RC1=1;
  88.     RC2=1;
  89.     RC3=1;
  90.     RC4=0;
  91.     RA2=0;
  92.         RC5=0;
  93. }
  94. if ((atlag/10)>830)
  95. {
  96.     RC0=1;
  97.     RC1=1;
  98.     RC2=1;
  99.     RC3=1;
  100.     RC4=1;
  101.     RA2=0;
  102.         RC5=0;
  103. }
  104. if ((atlag/10)>840)
  105. {
  106.     RC0=1;
  107.     RC1=1;
  108.     RC2=1;
  109.     RC3=1;
  110.     RC4=1;
  111.     RA2=1;
  112.         RC5=0;
  113. }
  114.     }
  115. }

Egy analóg bemeneten mérem a feszültséget (RA0/AN0)
Ezekre a kimenetekre LED-ek vannak kötve:
RC0=1;
RC1=1;
RC2=1;
RC3=1;
RC4=1;
RA2=1;

A következő kimenetre egy hangszóró van kötve és PWM-el vezérlem:
RC5/CCP1

A probléma a következő: A feszültséget jól méri, a megadott feszültségértékeknél kapcsolnak a LED-ek. Amikor eléri az alsó feszültségértéket akkor szépen sípol szakaszosan a hangszóró. Amikor viszont újra emelkedik a feszültség érték akkor már pontatlanul mér és a hangszóró furcsán sistereg. Valamiért a PWM kimenet nem zár le rendesen.
A kérdésem a következő. A PWM miként zavarhat bele az ADC-be? Miért nem marad 0V-on a PWM jel amikor kilépek a ciklusból?
(#) ktamas66 válasza ODU hozzászólására (») Jan 30, 2017 /
 
Ha a PWM-nek leállítod az órajelét abban az állapotban marad, ahol éppen volt, ezért megállítani inkább a PWM modul tiltásával vagy a kitöltés 0%-ra állításával lehet. Így a PWM inicializálását felesleges is minden alkalommal megtenni, az a rész mehetne a bekapcs részbe. A sípolós részben újra meghívod az ADC-t, de nem törlöd az átlagot, így rossz lesz a mért érték. Egyébként szerintem ez a törlés és a 10-es osztás is jobb helyen lenne az ADC rutinban.
(#) bbb válasza nedudgi hozzászólására (») Jan 30, 2017 /
 
Sziasztok!

Eljutottam odáig, hogy ismét elő tudtam venni a pic18f25j50-emet "játszani". Megpróbáltam beállítgatni a regisztereket és elindítani az MSSP2-est hardveresen SPI módban, de nem akar összejönni (logic-ot rádugtam, hogy ad-e ki magából egyáltalán valamit, de semmi).
  1. /*
  2.      * SDO2 9 SPI2 Data Output
  3.      * SCK2 10 SPI2 Clock Output
  4.      * SSDMA 12 SPI DMA Slave Select
  5.      */
  6.     IOLOCK=0;
  7.     RPOR3=9;
  8.     RPOR4=10;
  9.     RPOR5=12;
  10.     IOLOCK=1;
  11.     OpenSPI2(SPI_FOSC_4,MODE_00,SMPMID);

Ezután pár WriteSPI2 utasítás jön, de mint említettem, a kérdéses lábakon nem történik változás. Mi az, amit kihagyok?
(#) ODU válasza ktamas66 hozzászólására (») Jan 30, 2017 /
 
Nagyon szépen köszönöm a gyors választ, át írom a programot. Ha újra előfordul a hiba akkor jelentkezek.
(#) Sten válasza Hp41C hozzászólására (») Jan 30, 2017 /
 
Jól gondolom hogy ez a "Vpp First Programming Entry" módszer szoftveresen választható?
MPLAB X IDE- vel vagy MPLAB IPE tudok ilyet csinálni?
Hol kel ezt beállítani?
(#) Hp41C válasza Sten hozzászólására (») Jan 30, 2017 /
 
Nem használom őket.
(#) Sten válasza Hp41C hozzászólására (») Jan 30, 2017 /
 
Tudsz ajánlani esetleg valami jó szoftvert?
De akkor ez csak egy szoftveres beállítás?
Mert nekem se nyerte el a tetszésemet...
A hozzászólás módosítva: Jan 30, 2017
(#) Hp41C válasza Sten hozzászólására (») Jan 30, 2017 /
 
PICkit2 V2.61 + PICkit2 programozó.
(#) don_peter válasza bbb hozzászólására (») Jan 30, 2017 /
 
Digitális kimenetek állítása?
Analóg portok kikapcsolása?
System beállítások?
Portok beállítása?
És ezek csak az alapok..

Ezek megvannak?

Fordító típusa, esetleg fejlesztői környezet?
(#) bbb válasza don_peter hozzászólására (») Jan 31, 2017 /
 
Sajnálom, hogy most kihagytam, előző hozzászólásomban írtam le a környezetet.

MPLAB-X, XC8, PICKit2-vel programozom fel.

Valóban, analóg portokat nem állítottam át, hogy digitálisok legyenek. System beállítások alatt nem tudom mit értesz. Ha a portok állításánál arra gondolsz, hogy a TRISbiteket állítsam kimenetre, az megtörtént.

Az volt az eredeti kérdésem, hogy az MSSP modult hogyan lehet bekapcsolni és rávenni, hogy az általam beállított RP# lábakra kerüljenek az SPI lábak. Erre jött egy kis löket, hogy az SSP regisztereket keresgéljem, emiatt kérdeztem vissza, hogy mi kell még?
(#) Hp41C válasza bbb hozzászólására (») Jan 31, 2017 /
 
Néhány idézet:
Idézet:
„To set or clear IOLOCK, a specific command sequence
must be executed:
1. Write 55h to EECON2<7:0>.
2. Write AAh to EECON2<7:0>.
3. Clear (or set) IOLOCK as a single operation.”

Idézet:
„The unlock sequence is timing critical. Therefore, it is recommended that the unlock sequence be executed as an assembly language routine with interrupts temporarily disabled. If the bulk of the application is written in C or another high-level language, the unlock sequence should be performed by writing in-line assembly.”

Idézet:
„Note: If the Configuration bit, IOL1WAY = 1, once the IOLOCK bit is set, it cannot be
cleared, preventing any future RP register changes. The IOLOCK bit is cleared back to ‘0’ on any device Reset.”
(#) bbb válasza Hp41C hozzászólására (») Jan 31, 2017 /
 
Szia!

Én ezeket a sorokat az adatlapból úgy értelmeztem, hogy az IOLOCK-ot amúgy is újraindításkor 0-ra állítja be, de biztos, ami biztos alapon kiadtam megint. Majd ezután adtam ki azt a pár sort, amit láttál (RPOR3..5=valami), végül IOLOCK=1, hogy ne módosuljon. A lezárásra nem írta, hogy időzítéskritikus lenne, csak a feloldásra, de feloldogatni nem akarom a portok beállítása után.
(#) don_peter válasza bbb hozzászólására (») Jan 31, 2017 /
 
Idézet:
„System beállítások alatt nem tudom mit értesz. Ha a portok állításánál arra gondolsz, hogy a TRISbiteket állítsam kimenetre, az megtörtént.”


Akkor ezt benéztem és nem tekertem visszább, úgy éreztem ez az első bejegyzésed és láttam, hogy még nem kaptál választ..
A system beállításoknál az MCU config regisztereinek beállítására gondolok. (bocs ezt elírtam)
A portoknál igen a TRIS és ki/be menetek beállítására gondoltam igen.
Az SPI lábaknál az egyik bemenet, a másik három kimenet.

Az utolsó kérdésedre sajnos nem tudom a választ..
(#) bbb válasza don_peter hozzászólására (») Jan 31, 2017 /
 
Szia!

Igen, SDI bemenet lenne, de csak egy LCD, amire írni akarok, így az a láb nekem nem kell most. Ettől függetlenül azt a funkciót is be kellene állítani valamelyik lábra?

Viszont miközben válaszolok, észrevettem, hogy a láb, amit vizsgálok valamiért kontakthibás, így újra kell forrasztanom a panelen... Persze most nincs nálam páka, szóval ez várat még magára A panel alatt csak annyit kell érteni, hogy az SMD alkatrészhez csináltam egy pici panelecskét, hogy be tudjam dugni próbapanelbe (persze ráraktam az USB-t, tápellátással, ICSP-vel, külső kvarccal), egy minimális működéshez szükséges "demoboard" lett így belőle.
(#) don_peter válasza bbb hozzászólására (») Jan 31, 2017 /
 
Az alap szűrések meg miegymás meg van a kis panelon?
OSC jól van beállítva? (kvarc)
Megszakítás ki van kapcsolva?
Ha nem akarsz olvasni akkor nem kell az SDI, de mit akarsz vezérelni, milyen LCD-t?
Esetleg egy képed nincs a boardról?
Következő: »»   898 / 1211
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