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   182 / 1211
(#) Hp41C válasza Shul hozzászólására (») Dec 11, 2011 / 1
 
MpLab:
- Configure / Select device - kiválasztod a típust,
- Programmer / Select programmer - PICKit2 kiválasztása,
- File / Import - beolvasod a programozandó állományt,
- Programmer / Program...

És már készen is van...
(#) Stynson válasza Hp41C hozzászólására (») Dec 11, 2011 /
 
Köszönöm az útmutatást.

Márcsak az a kérdésem (remélhetőleg az utolsó), hogy ha a PicKit2 programmer megadásakor ezt

PKWarn0003: Unexpected device ID: Please verify that a PIC12F675 is correctly installed in the application. (Expected ID = 0xFC0, ID Read = 0x0)

a hibaüzenetet kapom, akkor az azt jelenti, hogy feltétlen nem fog működni, vagy csak a program nem ismert fel vmit, de attól még tud programozni jól? (Szilva féle klón)

Valamint hogyan tudom ellenőrizni hogy jó-e az égetés?
Látom van read és verify parancs is, de ezekből hol látok eredményeket?
(#) Hp41C válasza Stynson hozzászólására (») Dec 11, 2011 /
 
Szia!

A hiba abból jön, hogy a programozandó kontroller nincs csatlakoztatva a PICKit2 -höz, amikor programozónak beállítod, esetleg a csatlakozás hibás, más típusú a kontroller.
A programozás, ellenőrzés sikerességéről az ablakba üzenetet ír ékes angol nyelven...
(#) Stynson válasza Hp41C hozzászólására (») Dec 11, 2011 /
 
Igen, rosszul volt bekötve pár láb (elnéztem a PIC oldalváltásakor a lábszámozást).

Azt értem hogy pl benyomom hogy read és kiírja hogy beolvasta a flasht, az eepromot meg mindent, ugyan ez van verifynél, de hol lehet megnézni hogy a beolvasott tartalom azonos-e, mint amit én írtam bele az imént?
(#) Hp41C válasza Stynson hozzászólására (») Dec 12, 2011 /
 
A Verify pont ezt csinálja...
(#) Shul válasza (Felhasználó 15355) hozzászólására (») Dec 12, 2011 /
 
Igen, de nem jól értelmeztétek amit írtam, én mplabban csináltam a verify-t, és szótár nélkül is tudom hogy ellenőrzést jelent, de nem írta ki az mplab hogy ez sikeres lett volna, mindössze annyit közölt, hogy lefutott az ellenőrzés, kérdés hogy az jelenti a sikerességet, ha nincs hibaüzenet, vagy ha külön kiírja hogy success?
(#) Stynson válasza (Felhasználó 15355) hozzászólására (») Dec 12, 2011 /
 
A kérdés adott, az mplab-ben ha azt az üzenetet kapom hogy "verifikálta" a flasht, eepromot allezusammen stb az jelenti, hogy ez sikeres is lett, vagy arra egy külön succeses üzenet van?
(#) LAC001 hozzászólása Dec 12, 2011 /
 
Sziasztok! Egy kis segítséget szeretnék kérni. Egy PIC18F45K20-at szeretnék sleep módba küldeni, majd a B port 4. lábán történő külső megszakítással életre kelteni. A Timer1 számlálót 1 sec-es megszakításokhoz használom. Kérdésem az lenne, hogy hogyan tudok megbizonyosodni róla, hogy sleep-ben van e, pl debuggolás közben lehet ilyet? Mi szokott lenni a bevett ébresztési mód ilyen esetekben? Ahogy az adatlapján olvastam, ha a Timer1 működik akkor annak a megszakítása szintén fel tudja ébreszteni a kontrollert, tehát akkor azt le kell tiltanom ugye? A sleephez, elég csak beírnom a forráskódba, hogy Sleep(); ?
Segítségeteket előre is köszönöm!
Üdv
LAC
  1. #include <p18F45K20.h>
  2. #pragma config FOSC = INTIO67
  3. #pragma config FCMEN = OFF
  4. #pragma config IESO = OFF
  5. #pragma config PWRT = OFF
  6. #pragma config BOREN = OFF
  7. #pragma config WDTEN = OFF
  8. #pragma config MCLRE = OFF  
  9. #pragma config HFOFST = OFF
  10. #pragma config LPT1OSC = OFF
  11. #pragma config PBADEN = OFF  
  12. #pragma config STVREN = ON
  13. #pragma config LVP = OFF
  14. #pragma config DEBUG = ON
  15.  
  16. #define beki  PORTBbits.RB4
  17.  
  18. unsigned char sec=0;
  19. unsigned char olv=0;
  20. void init (void);
  21. void initT1 (void);
  22. void initinterrupt (void);
  23. void interrupthandlerhigh (void);
  24.  
  25. void main (void)
  26. {
  27. init();
  28. initT1();          
  29. initinterrupt();
  30. while(1)
  31. {
  32. }
  33.  
  34. }
  35.  
  36. void init(void)
  37. {
  38. OSCCON = 0b00110111;
  39. ANSEL = 0b00000000;
  40. ANSELH = 0b00000000;
  41. PORTA = 0b00000000;
  42. LATA = 0b00000000;
  43. PORTB = 0b00000000;
  44. LATB = 0b00000000;
  45. PORTD = 0b00000000;
  46. LATD = 0b00000000;
  47. TRISA = 0b11111111;
  48. TRISB = 0b11111111;
  49. TRISD = 0b00000000;
  50. }
  51.  
  52. void initT1 (void)
  53. {
  54. T1CON = 0b00001111;                
  55. TMR1H = 0x80;
  56. TMR1L = 0x00;
  57. PIR1bits.TMR1IF = 0;
  58. T1CONbits.TMR1ON = 1;
  59. }
  60.  
  61. void initinterrupt (void)
  62. {
  63. IPR1 = 0x00;          
  64.     IPR1bits.TMR1IP = 1;  
  65.     PIE1bits.TMR1IE = 1;  
  66. RCONbits.IPEN = 1;    
  67. INTCONbits.RBIE = 1;    
  68. INTCONbits.RBIF = 0;    
  69. IOCBbits.IOCB4 = 1;
  70. INTCON2bits.RBPU = 1;
  71. WPUB = 0;
  72. INTCON2bits.RBIP = 1;
  73.     INTCONbits.GIEH = 1;  
  74. INTCONbits.GIEL = 0;  
  75. }
  76.  
  77.  
  78.  
  79. #pragma code InterruptVectorHigh = 0x08
  80. void InterruptVectorHigh (void)
  81. {  
  82.   _asm
  83.     goto interrupthandlerhigh      
  84.   _endasm
  85. }
  86. #pragma code
  87.  
  88. #pragma interrupt interrupthandlerhigh
  89. void interrupthandlerhigh ()
  90. {
  91.     if(INTCONbits.RBIF)  
  92.     {
  93. if(beki == 1)
  94. {
  95. LATD = 0b10000000;
  96. }
  97. else
  98. {
  99. Sleep();
  100. }
  101. olv=PORTB;
  102. INTCONbits.RBIF=0;
  103. }
  104.  
  105.     if(PIR1bits.TMR1IF)    
  106.     {                            
  107.         TMR1H = 0x80;            
  108. sec++;          
  109.        PIR1bits.TMR1IF = 0;    
  110.     }                
  111. }
(#) zenetom hozzászólása Dec 12, 2011 /
 
Hali!
Mivel szinte sosem szoktam az áramkörben felprogramozni a PIC-et, ezért azt kérdezném, hogy van egy céláramkör, amiben benne van a PIC. Az MCLR láb fel van húzva tápra 10k-val.
Nem lesz baj, ha így felprogramozom a PIC-et? (mivel tulképp a Vdd összevan így kötve 10k-val a Vpp-vel, ami 12V).
(#) icserny válasza zenetom hozzászólására (») Dec 12, 2011 /
 
Nem lesz baj. Csak arra ügyelj, hogy az MCLR, PGC, PGD lábakat ne terhelje (kapacitívan sem) a céláramkör! Az elválasztást szükség esetén jumperrel vagy soros ellenállással meg kell oldani.
(#) zenetom válasza icserny hozzászólására (») Dec 12, 2011 /
 
Sajnos ez ügyben kicsit elszúrtam, mert a PGD és PGC vonal közvetlenül össze van kötve egy 74HC595 Reset és Shift CLK bemenetével (közbe van még szabad láb, csak hát utóbbi időben kevés nyákot terveztem). Viszont az MCLR és a Vdd közül kivettem a 10k-t és felprogizta az égető (bár Vdd voltage level errort írt ki...), és működik. Csak a Vpp miatt félek, hogy a 10k-n keresztül nem tud-e valamit csinálni..
(#) potyo válasza zenetom hozzászólására (») Dec 12, 2011 /
 
Inkább tedd vissza azt a 10k-t. Az épp azért 10k, hogy megengedje az égetést.

A PGD és PGC meg így jó, mert az égető szabadon tudja mozgatni égetés alatt. Arra figyelj, hogy égetés után az égető ne fogja a lábakat, hanem nagyimpedanciás állapotba hozza a saját kimeneteit.
(#) zenetom válasza potyo hozzászólására (») Dec 12, 2011 /
 
Idézet:
„égetés után az égető ne fogja a lábakat, hanem nagyimpedanciás állapotba hozza a saját kimeneteit”

Ezt hogy tudom elérni?
(#) potyo válasza zenetom hozzászólására (») Dec 12, 2011 /
 
Az égetőnek kell tudnia. De ha nem tudja, akkor tegyél 330 ohmos soros ellenállásokat a PGD és PGC vezetékekbe, ez megoldja a kimenetek szembekapcsolódásának problémáját.
(#) zenetom válasza potyo hozzászólására (») Dec 12, 2011 /
 
Szilva féle PICkit2-vel programozok.
(#) zenetom hozzászólása Dec 12, 2011 /
 
Na a lényeg kiderült, szóval icserny, potyo: köszönöm a válaszokat!
(#) djhua hozzászólása Dec 13, 2011 /
 
jo napot mindenkinek ... egy egyszeru 12f629 programozo rajzzal valaki ki tudna segiteni ?
(#) Hp41C válasza djhua hozzászólására (») Dec 13, 2011 / 1
 
LPT mini - LPT -re avagy PICKit2 - USB -re.
(#) djhua hozzászólása Dec 13, 2011 /
 
Szerintetek ezzel betudnak programozni egy Pic 12F629 et ?... Es milyen programot kell telepitsek ahoz hogy tudjak ezzel programozni ? ... Koszonom elore valaszotokat .
(#) potyo válasza djhua hozzászólására (») Dec 13, 2011 /
 
Az előbb neked linkelt égetők miért nem felelnek meg?
(#) djhua válasza potyo hozzászólására (») Dec 13, 2011 /
 
Nem nekem a soros portom csak 9 es :-? ... es azt nezem most hogy minnel egyszerubb es olcsobb legyen .... Esetleg ha ezt : Bővebben: Link attlehetne alakitani hogy 9 labas soros port legyen ?
(#) icserny válasza djhua hozzászólására (») Dec 13, 2011 /
 
Idézet:
„Nem nekem a soros portom csak 9 es”
Az ajánlott kapcsolás nem soros, hanem párhuzamos portra (printer port) készült. Keress egy olyan gépet, amin van párhuzamos port!
(#) Hp41C válasza djhua hozzászólására (») Dec 14, 2011 /
 
Idézet a topik minden oldalán megjelenő sárga mezőből:
Idézet:
„Kerülendő a JDM (soros porti) programozó.”
(#) brato hozzászólása Dec 15, 2011 /
 
Üdv!

A csatolt adatlapon található oscillátort miként lehet 16F690-re rákötni?
Az out lábat elég rékötni a pic osc1 lábára?

P1145-3S.pdf
    
(#) röntgen válasza brato hozzászólására (») Dec 15, 2011 /
 
Igen elegendő simán rákötni és jól látod., hogy az osc1-re kell.
(#) Amjad hozzászólása Dec 15, 2011 /
 
Sziasztok.
Találtam egy ilyen jópofa kis cuccot.
Bővebben: Link
Elmondaná valaki, hogy ezt, hogy lehet megvalósítani? Mármint elméletben gondoltam, nem komplett kódra.
Köszi.
(#) vicsys válasza Amjad hozzászólására (») Dec 15, 2011 /
 
Van benne egy golyó ami négy irányba elhelyezett érintkezőkhöz gurulva ad jelet. Ha jó a "beadott" sorrend, meghúz egy reteszt.
(#) Amjad válasza vicsys hozzászólására (») Dec 15, 2011 /
 
Köszi.
Erre azért magam is rájöttem
Akkor konkrétabban az érdekelne, hogy, hogy lehet azt megvalósítani, hogy "össze-vissza" forgatja a kockát, és a jó "kód" után kinyílik. Hogyan lehet a pl. utolsó 5 forgatást összehasonlítani a letárolttal? Vagy az egyik állás a "nulla", és ha megvan az adott számú állapot változás, akkor hasonlítja össze?
(#) vicsys válasza Amjad hozzászólására (») Dec 15, 2011 /
 
Több variáció is van. Én úgy csinálnám, hogy egy helyes varició után bebillentenék egy flag-et. Ha minden flag 1, akkor a kód helyes. Ha menet közben hibás jel jön, akkor az összes flag-et törlöm. Menet közben csak szimpla feltételek kellenek.
(#) Amjad válasza vicsys hozzászólására (») Dec 15, 2011 /
 
Valóban! És akkor mindig végig kell nézni az elsőtől, hogy tudjam hányadiknál járok, és hogy mivel kell összehasonlítani. Na, hát így már azért el tudom képzelni...
Köszönöm!
Következő: »»   182 / 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