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   725 / 1210
(#) kissi válasza attika hozzászólására (») Nov 14, 2015 /
 
Szia!
80H--> 128, FFH --> 255, tehát a két érték között 127 érték van ( persze hexadecimálisan kell beírnod, de pl. a windows számológép vagy az excel tudja az átváltást ! ) !
(#) attika válasza kissi hozzászólására (») Nov 14, 2015 /
 
Köszönöm szépen,már kisakkoztam és a 190-es beállítás,Hexadecimálisan a BE lett a jó,és tökéletesen látszik a kijelzés.
Még egy ezzel kapcsolatban,az normális ha a Pic12f629-re írt programot rá tudom tölteni hiba nélkül a 12f675-re és ugyan így fordítva?
És mind a kettővel működik a hőmérő.
A hozzászólás módosítva: Nov 14, 2015
(#) icserny válasza attika hozzászólására (») Nov 14, 2015 / 1
 
Nem teljes a kompatibilitás, mert a PIC12F675-ben van ADC is, emiatt az analóg funkciók letiltása a digitális ki/bemenetek inicializálásakor egy kicsit másképp néz ki: PIC12F629-nél elég a CMCON-ba 7-et írni (analóg komparátor letiltása), a PIC12F675-nél az ANSEL regisztert is törölni kell. Adatlapból vett példa:
  1. bcf STATUS,RP0    ;Bank 0
  2. clrf GPIO         ;Init GPIO
  3. movlw 07h         ;Set GP<2:0> to
  4. movwf CMCON       ;digital IO
  5. bsf STATUS,RP0    ;Bank 1
  6. clrf ANSEL        ;Digital I/O
  7. movlw 0Ch         ;Set GP<3:2> as inputs
  8. movwf TRISIO      ;and set GP<5:4,1:0> as outputs
(#) attika válasza icserny hozzászólására (») Nov 14, 2015 /
 
Köszönöm a válaszodat,akkor marad az,hogy amit a 12f675-re írtak azt töltöm rá és nem a 12f629-es tartalmát.
Nem kevergetem a kettőt.
Megnézem,hogy van-e hozzá forrás fájl és ha igen akkor összehasonlítom a kettő közötti különbséget.
Kíváncsiságból töltöttem rá az egyik szoftverét a másikra,hogy mit fog csinálni,de mivel a pickit2 nem jelzet hibát és a céláramkörbe behelyezve ugyan úgy működött is,így ezért tettem fel ezt a kérdést.
Köszönöm.
(#) Hp41C válasza KaiserA hozzászólására (») Nov 14, 2015 /
 
12,13 * 16 = 194,08 --> 194 = 0x0C2
28,06 * 16 = 448,96 --> 448 = 0x1C0
Az egész értékbő miért csak a 0. bit marad meg még mindig?
(#) pajti2 hozzászólása Nov 14, 2015 /
 
Létezik olyan feature pic-eknél (bármelyiknél), hogy egyszeri programozás után teljesen letiltsak mindenféle újraprogramozást? Mármint egy pickit3-al se lehessen törölni / újraprogramozni.
(#) zenetom válasza pajti2 hozzászólására (») Nov 14, 2015 /
 
Szia!
Neked OTP (One-Time Programmable) PIC kell, pl.: 12C672, de mindjárt nézek valami mást..
Szerk.: most hirtelen ennyit tudok írni, illetve a "C"-vel jelöltek általában azt hiszem csak egyszer programozhatók, tehát pl. nem PIC18Fxxx hanem PIC18Cxxx típusúak...
A hozzászólás módosítva: Nov 14, 2015
(#) Droot hozzászólása Nov 14, 2015 /
 
Sziasztok!

PIC16F870-re próbálok egy programot írni, ami egy LED-et villogtat. A helyzet az, hogy a LED egyáltalán nem csinál semmit, már az egész portot 1-be kapcsolom és így sem működik.
Mi lehet a probléma?
MPLAB X-ben XC8-al fejlesztek.
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <pic.h>
  4. #include <xc.h>
  5. #include <string.h>
  6.  
  7. #define _XTAL_FREQ 16000000    // 16 Mhz
  8.  
  9. // PIC16F870 Configuration Bit Settings
  10. // 'C' source line config statements
  11. // #pragma config statements should precede project file includes.
  12. // Use project enums instead of #define for ON and OFF.
  13. // CONFIG
  14. #pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
  15. #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
  16. #pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
  17. #pragma config CP = OFF         // FLASH Program Memory Code Protection bits (Code protection off)
  18. #pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)
  19. #pragma config LVP = OFF        // Low Voltage In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
  20. #pragma config CPD = OFF        // Data EE Memory Code Protection (Code Protection off)
  21. #pragma config WRT = ALL        // FLASH Program Memory Write Enable (Unprotected program memory may be written to by EECON control)
  22.  
  23.  
  24. /*
  25.  */
  26. void main() {
  27.     TRISC = 0X00;
  28.         while(1)
  29.         {
  30.             PORTC = 0x00;
  31.             __delay_ms(500);
  32.             PORTC = 0xFF;
  33.             __delay_ms(500);
  34.         }
  35. }
(#) KaiserA válasza Hp41C hozzászólására (») Nov 14, 2015 /
 
Szia!

Ezt én sem értem. Nem tudom mit kellene csinálni.
(#) Hp41C válasza KaiserA hozzászólására (») Nov 14, 2015 /
 
Meg kellene vizsgálni a jelalakokat. Logikai analizátor funkció a PICkit2 -ből. Sajnos egy meghajtóra is szügség lesz, mert az I2C nyitott kollektoros jeleket használ, a PICkit2 -ben pedig 4k7 földre húzó ellenállás van a PGC és PGD vonalon.
(#) pajti2 válasza zenetom hozzászólására (») Nov 14, 2015 /
 
Ezt kerestem, köszönöm.
(#) Hp41C válasza pajti2 hozzászólására (») Nov 14, 2015 /
 
Pl 32MZ család bármelyik tagja, ha a konfigurációban beállítod a kódvédelmet és letiltod a JTAG elérést. Örökre vasalva...
(#) don_peter válasza Droot hozzászólására (») Nov 14, 2015 /
 
Az egyéb beállításokat hol végzed el?
Hiányzik pár regiszter amiket be kellene állítanod és utána a while ciklus elé de a main után a TRIS? regiszter után állítsd magas szintre a C portot.
  1. main(void){
  2.     // egyébb regiszterek beállítása, ADCON0, CCP1CON, ...stb
  3.     TRISC = 0;
  4.     PORTC = 0xff;
  5.     while(1);
  6. }

Ha C PORT magas szintre kerül utána lehet bonyolítani
A hozzászólás módosítva: Nov 14, 2015
(#) Droot válasza don_peter hozzászólására (») Nov 14, 2015 /
 
Pontosan mely regisztereket kell még beállítani a Tris és a PORT előtt azokon kívül amit felsoroltál?
(#) pajti2 válasza Hp41C hozzászólására (») Nov 14, 2015 /
 
Éppen nézem pic32mx-re otp, és nem találok olyat. Kérdés.

Ha beállítom a teljes bootflash és programflash védelmet egy programozás során 32mx-en, azt a magot akkor programoztam utoljára? Be van vasalva és puszi? Még sosem próbáltam ki, és a lehetséges kimenetel tekintetében előbb inkább megkérdezem

Vagy csak a 32mz-ken van olyan? Gyors adatlap (a csökkentett adattartalmú, atfogó doksit szedtem le hirtelenjében) átfutás során nem találtam róla külön említést, hogy valami abban a tekintetben más lenne, mint az mx-eken, de könnyen lehet, csak elkerülte a figyelmemet.
(#) Hp41C válasza pajti2 hozzászólására (») Nov 14, 2015 /
 
PIC32MX***EC Errata 28. pont. Ugyan azt állítja, hogy csak az A3 verziót érinti, de itt van az asztalomon egy A4, amihez nem csatlakozik a PICkit3 (és a PICkit2) sem.
Miért nem elég a kiolvasásvédelem?
A hozzászólás módosítva: Nov 14, 2015
(#) pajti2 válasza Droot hozzászólására (») Nov 14, 2015 /
 
Ugyan a 16f családban nem vagyok otthon, de ha az a/d-t nem használod, illik kikapcsolni:
  1. ADCON1= 0x6;
, a többi nem tudom.

Ahogy nézem az adatlapon, a c3, c4, c5 a világon semmivel sem kellene, hogy ütközzön, azokra mértél rá? Időnként meg tud viccelni a multiméterek mérőtüskéje, ha forrasztottad a lábat, és kirakódott a tetejére a gyanta. Francot se fog mérni konkrétan Sokkal jobb egy soros ellenállással ledet bekötni. Pld egy átmérő 3 mm-es ledet a plussz táp felé bekötni 3.3k-val.

Másik tipp. Gyanakszom rá, hogy valami nem stimmel az oszcillátoroddal, és azért nincs utasítás végrehajtás, mert nincs órajel sem. Le vannak huzigálva a kvarc lábai kondenzátorokkal? 16mhz kvarchoz 10-22pf kondikat javasol az adatlapja.
(#) pajti2 válasza Hp41C hozzászólására (») Nov 14, 2015 /
 
Hirtelenjében ezt az erratát találtam csak meg: mx errata a5, és itt a 28-as pont az spi framed módról szól.

Be tudod koppantani azt a 28-as pontot ide?
(#) icserny válasza Droot hozzászólására (») Nov 14, 2015 /
 
Idézet:
„Pontosan mely regisztereket kell még beállítani a Tris és a PORT előtt azokon kívül amit felsoroltál?”
Az adatlap I/O portokkal foglalkozó fejezetében szoktak egy bugyuta példát mutatni az I/O port konfigurálására, azt nézd meg!.
(#) Droot válasza pajti2 hozzászólására (») Nov 14, 2015 /
 
Azt honnan tudom, hogy ha egy eddig ismeretlen típusú PIC-et veszek elő, milyen regisztereket kell beállítani?
Évek óta foglalkozom mikrokontrollerekkel de ez elég furcsa nekem, hogy a PIC családokban ekkora katyvasz van hogy pl az ad nincs alapból kikapcsolva, és nem lehet tudni, hogy pontosan milyen regisztereket kell beállítani, de sok másban sokkal jobb. Csak fura hogy van amelyik PIC-ben kell ilyeneket beállítani és van amelyikkel simán elindul ilyenek nélkül mint a PIC32mx7.

Az oscillátorra gondoltam én is, szerintem jó, 16MHz-es kvarc és 22pf-os kondik vannak mellette. A PIC pedig vadi új.
(#) Droot válasza icserny hozzászólására (») Nov 14, 2015 /
 
Köszönöm! Megnézem és így már más számomra ismeretlen típusokkal is menni fog.
(#) icserny válasza Droot hozzászólására (») Nov 14, 2015 /
 
Most nézem éppen (nem láttam még közelről ezt a típust) a PORTA kapcsán ez szűrtem le:
  1. BANKSEL ADCON1
  2. MOVLW 0x06 ;Configure all pins
  3. MOVWF ADCON1 ;as digital inputs


Természetesen a 0x06 helyett mást kell írni, ha nem akarsz minden analóg bemenetet letiltani.
(#) don_peter válasza Droot hozzászólására (») Nov 14, 2015 /
 
Ez úgy gondolom mindenképpen hasznos olvasmány a számodra és nem csak mostanra
Bővebben: Link

Ahogy icserny fórumtárs írta, általában van egy kis bugyuta kód amiből mindig ki lehet hámozni valamit. Persze az esetek többségében ASM-ben amit nem igen értünk, de annyira igen, hogy tudjuk alkalmazni vagy, hogy irányt mutasson:
  1. BCF     STATUS, RP0    ;
  2. BCF     STATUS, RP1    ;Bank0
  3. CLRF    PORTA          ;Initialize PORTA by
  4. ;clearing output
  5. ;data latches
  6. BSF     STATUS, RP0    ;Select Bank 1
  7. MOVLW   0x06           ;Configure all pins
  8. MOVWF   ADCON1         ;as digital inputs
  9. MOVLW   0xCF           ;Value used to
  10. ;initialize data
  11. ;direction
  12. MOVWF   TRISA          ;Set RA<3:0> as
  13. ;inputs
  14. ;RA<5:4> as outputs
  15. ;TRISA<7:6> are
  16. ;always read as '0'

Amint láthatjuk a legfontosabb regisztert állítja csak be, neked ez a minimum ami kell:
  1. main(void){
  2.         ADCON1 = 0x06;    // minden port digitális
  3.         TRISC = 0;       // C port kimenet
  4.         PORTC = 0xff;           // C port magas szintre állítva
  5.         while(1);
  6.     }

Ha megvan és C porton magas szintet mérsz vagy világít a LED akkor jó a hardvered.
Ha nem, akkor valami gáz van.
A CONFIG beállításokat nem néztem át.

Mit hogyan kötöttél be?
Mekkora kristályt használsz?
Milyen kondikat hozzá?
LED előtét ellenállás?
...stb.

ui: közben látom kaptál segítséget
Idézet:
„Azt honnan tudom, hogy ha egy eddig ismeretlen típusú PIC-et veszek elő, milyen regisztereket kell beállítani?”

Adatlap mindig a segítségedre lesz, abból mindig megtudhatod, hogy mit mikor és miért.
Ha minden kötél szakad akkor meg segítséget kérsz
A hozzászólás módosítva: Nov 14, 2015
(#) Droot válasza don_peter hozzászólására (») Nov 14, 2015 /
 
Köszönöm mindenkinek az infókat! Persze ez alap, hogy az adatlap a biblia de még kicsit szokni kell, az Atmel adatlapok sokkal részletesebbek, a Microchip-ben néha nagyon kell bogarászni.
(#) pajti2 válasza Droot hozzászólására (») Nov 14, 2015 /
 
Adatlap link: PIC16F870. A 35. oldalon (DS30569B-page 33, fejezet 4.1) bal oldalt alul van egy asm példa a portA alapinitjéről.
(#) pajti2 hozzászólása Nov 15, 2015 /
 
Idézet:
„hogy a PIC családokban ekkora katyvasz van hogy pl az ad nincs alapból kikapcsolva”


Más mikrovezérlőkben talán van olyan, de a pic-eknél mindig be van kapcsolva alapból az a/d. Mindig külön ki kell kapcsolni, ha nem kell, és jellemzően indulás után az szokott a legelső dolog lenni. Az okok egyébként tradicionálisan elektronikai okok. A régebbi mikrovezérlőknél még nem ST bemenetek voltak, hanem TTL-ek (régi típusoknál mai napig TTL bemenetek vannak), és azok nem igazán szeretik, ha egy analóg jel kószál valahol a táp 40-45% környékén. Akkora belső áramok kezdenek el mászkálni olyankor a tokon belül, hogy ihaj. Ahol akkuról megy az üzem, és figyelni kell az akku élettartamra, ott az az alfa és az omega. Szóval ha egyáltalán van a/d a magon, akkor az mindig mindegyik tokon analóg bemenetként fog alapinitelni, hogy megszokás szintjén mindig tudni lehessen, hogy azt mindig külön ki kell kapcsolni, vagy ha mégis megfeledkeznek róla, ne az akku igya meg a levét. Valójában kényelmi okokból van így, csak nem szoftveresen, hanem elektronikailag. Más mikrovezérlő családoknál már régen kihaltak az egykori régi típusok, többé nem kell támogatást adni hozzájuk, és azoknál meg lehetett csinálni, hogy a megkövült szokványt is eltörölték. De annak az az alapja, hogy némely mikrovezérlő családoknak alig pár100-as community-je van, és 1-2 év lemaradással az egész community a legújabb típusokat használja csak, a régieket nem kell többé gyártani sem, a pic-eket meg nagyon sok milliós community használja, és mai napig folyamatos igény van nagyon régi tokokra is. Üzleti okokból nincs mit tenni a jelenséggel. Kereslet / kínálat / community méret / marketing visszhang, egyáltalán nem puha tényezők azok. Így az összességében megszokhatóbb.

Ha éppen a 32mx7-et hoztad fel példának, azoknál már jellemzően nem asm-eznek, más a regiszter neve is, és a sok100 soros MLA támogatásnak a legaljára szokott elkallódni a "AD1PCFG= 0xFFFFul;", de meg fogod találni ott is. Jellemzően a "main.c"-ben az "InitializeSystem()" része mondjuk ilyen formában:
  1. #if (defined(__18CXX) & !defined(PIC18F87J50_PIM) & !defined(PIC18F97J94_FAMILY))
  2.         ADCON1 |= 0x0F;                 // Default all pins to digital
  3.     #elif defined(__C30__) || defined __XC16__
  4.         #if defined(PIC24FJ256GB110_PIM) || defined(PIC24FJ64GB004_PIM)
  5.             AD1PCFGL = 0xFFFF;
  6.         #endif
  7.     #elif !defined(PIC18F87J50_PIM) & !defined(PIC18F97J94_FAMILY)
  8.         AD1PCFG = 0xFFFF;
  9.     #endif

És ja, ez már tényleg kicsit csubakkás, de azért van benne rendszer. Az MLA támogatás nem konkrétan egy adott pichez, hanem MC termékekhez, kísérleti boardokhoz, és azoknak a soktucatnyi kiépítési lehetőségeikhez készül. Aki utána saját áramkört akar építeni, annak legyen elég esze hozzá tudni, mit is csinál, ők majd úgyis átszabják saját kényelmük szerint, de a mindenkinek kiadott támogatásban azt nem lehet megkövetelni. Szóval temérdek sok define van jellemzően a "HardwareProfile.h" tartozékaiban, mint "HardwareProfile - PIC32MX795F512L PIM.h" és társaik. A felső kódrészletben például negatív logikával van bekötve az a/d kikapcsolás. Az a forrás elő tud fordulni támogatásként pár 8 / 16 bites családnál is, de ha éppen 32 bitesen fut le, akkor rászalad a legutolsó ágra, ahol 32 bites környezet lévén mindkét negált kapcsoló igazat fog adni, és a "AD1PCFG = 0xFFFF;" kerül be végül a forráskódba.

Ha pic-ekkel barátkozni neked úgy könnyebb, lehet készen venni kísérleti boardokat, és van hozzájuk példakód támogatás is. Nem kötelező alapból nyers boardon a semmiből áramkört építeni, meg saját programozót fabrikálni. Jobb azt már valamennyi tapasztalattal a hátad mögött csinálni, csak a több kényelem drágább.

Most jut eszembe, hogy a mai napig van egy újszerű állapotban megmaradt pk2-őm a hozzá tartozó expressz panellal, ami a mai napig érintetlen, és mindig elfelejtem feldobni az apróba eladásra kínálni
(#) Hp41C válasza pajti2 hozzászólására (») Nov 15, 2015 /
 
(#) morzsa15 hozzászólása Nov 15, 2015 /
 
Sziasztok!

Van vagy is szerintem volt egy 16f628-am véletlenül kb kapott 8v feszültséget pár másodpercre valószínűleg meghalt? Vagy esetleg menthető?
(#) Pali79 válasza morzsa15 hozzászólására (») Nov 15, 2015 /
 
Elég strapabíróak ezek. Próbáld ki, egy egyszerű programmal, amiről biztosan tudod, hogy működik.
(#) morzsa15 válasza Pali79 hozzászólására (») Nov 15, 2015 /
 
Hát sajnos valószínűleg meghalt meg a pickit 2 nem is látja.
Következő: »»   725 / 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