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   1173 / 1210
(#) Bakman válasza nedudgi hozzászólására (») Jan 28, 2022 1 / 1
 
Félreérted. Teljes mértékben egyetértek azzal, hogy a lehetőségekhez és a tudásunkhoz képest a lehető legjobban készítsünk el mindent. Majd, ha igény keletkezik rá és az alapok megvannak, tovább lép a delikvens (éppen ezen a pályán vagyok). Senki még csak egy kódrészletet sem mutatott, hátha előrébb viszi a kérdezőt. Igen, én sem de nem is iszogatom a sznobi szörpöt.

Laja1 feltett egy kérdést, erre az alábbi válaszok születtek (kivéve Elektro.on):
- Nem jó, nem így kell!
- Csináld magad, különben nem jutsz előre.
- Ezt nézzétek, én mit raktam össze! Látjátok mekkora király vagyok?

Idézet:
„A hab a MicroChip tortáján, hogy az újabb kontrollerekhez már valószínűleg új programozó (Pickit4) kell.”
Nem tudom, mi olyan meglepő ezen. A cég profitorientált, nem jótékonysági/nonprofit szervezet. PICKit2 még ismeri a K22-es családot, van azokban is bőven memória.

Ezzel az erővel azt is mondhatnánk, hogy aki Arduino-t használ mindenféle letölthető könyvtárral, az soha semmit nem fog összerakni. Ha az elkészült program azt csinálja, amit a készítője szeretne, akkor az egy sikeres munka, még ha csak hobbi is.

Elhiszem, hogy mindent lehet még jobban csinálni. Nincs ebben semmi különös. Azt nem értem, miért kell a vérprofi megoldásokat szajkózni egy kezdőnek egy kezdőknek szóló témában.
(#) nedudgi válasza Bakman hozzászólására (») Jan 28, 2022 /
 
Én azt állítom, hogy hobbistaként az a célom, lehető legolcsóbban állítsam elő az áramkörömet, úgy, hogy az a tervezett feladatot képes legyen hibamentesen ellátni. Panel mérete, kontroller ára). Közel ötven éves pályafutásom alatt sokféle emberrel kerültem kapcsolatba, és így alakult ki az a meggyőződésem, hogy a legkevesebb energiabefektetéssel a hardver/szoftver (ön)képzés legjobban a folyamatábra és az assembly nyelv alapokról elindulva lehetséges. Valóban nem mutattam kódrészletet, mert C nyelven tíz-húsz évenként írtam programot, muszájból.
A sznobi szörp célzást nem tudom hova tenni, mivel sört fogyasztok.
Mindössze arra szerettem volna rámutatni, hogy szerintem a kolléga nem jól állt neki a probléma megoldásához.
Az a meglepő, hogy a szóban forgó cég üzletpolitikája nekem - mint hobbistának - nem szimpatikus. Némi szoftvermódosítással a régebbi programozók is alkalmasok lennének újabb kontrollerek égetésére, de egyszerűbb a felhasználókkal vetetni újabbat. Én nem fogok venni.
Azt viszont kérem, fejtsd ki bővebben ezt a "vérprofi megoldásokat" kifejezést. Ilyet én nem olvastam egyik hozzászólásban sem, pedig alaposan végigolvastam a hozzászólásokat, igaz, időbeli kimaradásokkal.
(#) Josi777 válasza Bakman hozzászólására (») Jan 29, 2022 /
 
Idézet:
„Igen, én sem de nem is iszogatom a sznobi szörpöt.”

Idézet:
„- Ezt nézzétek, én mit raktam össze! Látjátok mekkora király vagyok?”

Ezeket nem értem, konkretizálnád, lehet valami elkerülte a figyelmemet.
(#) Hp41C válasza nedudgi hozzászólására (») Jan 29, 2022 /
 
Idézet:
„Az a meglepő, hogy a szóban forgó cég üzletpolitikája nekem - mint hobbistának - nem szimpatikus. Némi szoftvermódosítással a régebbi programozók is alkalmasok lennének újabb kontrollerek égetésére, de egyszerűbb a felhasználókkal vetetni újabbat.”


Az XC8 és XC16 Free módban egyszerűen felesleges utasításokkal szórja meg a kódot.

Minden a Microchip által eddig gyártott kontroller programozható a PICkit2 programozóval. A PIC10C200 -tól a PIC32MZxxDA -ig. Csak akarni kellett volna.
(#) Mate78 hozzászólása Feb 1, 2022 /
 
Sziasztok,

Segítséget kérnék.Egy 18F4520-ast programozok. MikroC-ben írom, és MPLAB-bal töltöm le a hex-et a PIC-be.A nyákon ki van vezetve az ICSP csatlakozó, csak rádugom a Pickit2-t,és rátöltöm a programot, tökéletesen megy.
Ugyanezt a nyákot ha Pickit3-mal akarom programozni,akkor csatlakozik ugyan az MPLAB a Pickit3-hoz, látja is a kontrollert,meg írja, hogy Pickit3 "connected". De amikor rátölteném a PIC-re a hex-et, akkor azt írja, hogy programozás sikeres, verify sikeres, de reset-ben marad a PIC.
A kis ikon amivel fel lehet oldani a reset-et, inaktív.
Mi lehet a baj?Elvileg ugyanaz a két programozó, a lábkiosztás is.
Ha lehúzom a programozót a nyákról, akkor sem fut a program, úgy néz ki mintha nem töltötte volna bele.

köszönöm.
(#) Hp41C válasza Mate78 hozzászólására (») Feb 1, 2022 /
 
A PICkit3 -at milyen programmal kezeled? A PICkit3 nevű programot el kell felejteni, az MpLab X -beli IPE -vel próbáld.
(#) Mate78 válasza Hp41C hozzászólására (») Feb 1, 2022 /
 
Mplab 8.53-mal.
(#) oregharcos válasza oregharcos hozzászólására (») Feb 1, 2022 /
 
Sziasztok! Ismét elővettem ezt a kérdést, de nem jövök rá, hogy hogyan lehet megoldani, hogy minden alprogramot más más gombbal lehessen indítani.
Valaki tudna segíteni? Köszönöm!
(#) Bakman válasza oregharcos hozzászólására (») Feb 2, 2022 / 1
 
Ha menet közben mást nem kell csinálni, csak a gombnyomásra várni, akkor valahogy így:
  1. uint8_t nygfigy(void){
  2. uint8_t btn=255;
  3.  
  4. while (btn==255){
  5. btn=PORTB;
  6. }
  7.  
  8. return btn;
  9. }
  10.  
  11. void main(void){
  12.  
  13. uint8_t jatek;
  14.  
  15. while (1){
  16.  
  17. jatek=nygfigy();
  18.  
  19. switch (jatek){
  20.  
  21. case 127:   //RB7 lenyomva
  22. case 192:   //RB6 lenyomva
  23. case 223:   //RB5 lenyomva stb...
  24.  
  25. }
  26.  
  27. }
  28.  
  29. }
(#) Hp41C válasza Mate78 hozzászólására (») Feb 2, 2022 /
 
Ha jól emlékszem, az MpLab fejlesztését a 8.92 verziónál hagyták abba. Frissíteni kellene.
(#) Mate78 válasza Hp41C hozzászólására (») Feb 2, 2022 /
 
Köszönöm,megpróbálom.
(#) oregharcos válasza Bakman hozzászólására (») Feb 2, 2022 /
 
Szia Bakman! Köszönöm a segítséget! Este ha időm engedi, kipróbálom,
(#) Laja1 hozzászólása Feb 2, 2022 /
 
Sziasztok! Készítettem egy LCD kijelzős projektet. De ha bekapcsolom, akkor az LCD felső sorának minden karakterének minden pontja fekete, az alsó sorban egyik sem. Gondolom, hogy az LCD definiálását rontom el. Megnéznétek, hogy mit írtam be rsszul? Én nem jövök rá. Itt a beállítás és mellékletben az LCD adatlap.

Köszönöm!
  1. #define LCD_CLEAR 0x01  // It clears everythings
  2. #define LCD_HOME 0x02  // set the cursor to first line and first row
  3. #define LCD_CURSOR_BACK 0x10 // moves curson one position back
  4. #define LCD_CURSOR_FWD 0x14 //moves curson one position forward
  5. #define LCD_PAN_LEFT 0x18   // used to scroll text left side to scroll text
  6. #define LCD_PAN_RIGHT 0x1C  // used to scroll text right side to scroll text
  7. #define LCD_CURSOR_OFF 0x0C // stops display curson on screen
  8. #define LCD_CURSOR_ON 0x0E  // turns on cursor display
  9. #define LCD_CURSOR_BLINK 0x0F // curson keeps blinking
  10. #define LCD_CURSOR_LINE2 0xC0  // move curson to scond line or second row
  11.  
  12.  
  13. #define FUNCTION_SET 0x2C // 4 bit interface, 2 lines, 5x10 font
  14. #define ENTRY_MODE 0x06 // increment mode
  15. #define DISPLAY_SETUP 0x0C // display on, cursor off, blink offd
(#) Bakman válasza Laja1 hozzászólására (») Feb 2, 2022 /
 
Lábakat beállítani kimenetre majd futtatni az LCD_Initialize(); parancsot.
(#) Laja1 válasza Bakman hozzászólására (») Feb 2, 2022 /
 
Igen, azt tudom. Szimulacioval szépen működik. De a valóságban nem. Valószínű a fenti definialasok nem felelnek meg a vásárolt LCD-nek. A szimuláción LM típust állítottam be, mert ezt nem ismerte a program.
(#) pipi válasza Laja1 hozzászólására (») Feb 2, 2022 /
 
És hol a programod?
A linkelt adatlapod 16. oldala szerint csinálod az inicializálást? megvan előbb a 8 bites, majd utána a 4 bites mód? A kötelező várakozási időket betartod?
(#) Laja1 válasza pipi hozzászólására (») Feb 2, 2022 /
 
Az előző oldalon január 26-i bejegyzésben láthatod a programot. 4 bites mód szerint csinaltam.
(#) KoblogPerGyok hozzászólása Feb 2, 2022 /
 
Sziasztok!

Eddig majdnem minden ok, de ma megint elfáradtam. Rengeteg más miatt olvasom a leírásokat, de már nem értek semmit...

A lényeg, hogy dsPIC33fj128MC802-vel dolgozgatok. Azt nem is mondom, hogy az MPLAB MCC-csak a legújabbra megy fel, de ezt a PIC-et meg nem támogatja. Sebaj, megírom magam.

A gondom a következő:
A DAC-al lejátszok majd hangot. (12bit, 16KHz) A DAC frekvenciája mintha be lenne állítva, a kód úgy ahogy megy. Az oszcillátor beállításokkal amit a doksi ad, ok. A kérdésem:

Működik a dspic úgy, hogy külső óra hajtja a PIC-et, de a DAC-ot a belső, felszorzott, ossztott stb.hajtja? Ha igen akkor mik a beállítások?

Ebben a 22. oldalon van a lényeg:

Bővebben: Link

Azonban az MPLAB-al megcsináltam a config-okat. Ott beállítottam amit gondoltam, nem ment. Átalakítottam a doksi szerintire, de akkor nem tudom, hogy a PIC a rákötött órával megy, vagy a belső beállítottal? Egyelőre csak MPLAB szimuláció van meg. Ott is fontos lenne a TIMER-ek pontos értéke. Ekkor nem mindegy, hogy a szimulációban az utasítás freki mennyire van beállítva.



// FBS
#pragma config BWRP = WRPROTECT_OFF // Boot Segment Write Protect (Boot Segment may be written)
#pragma config BSS = NO_FLASH // Boot Segment Program Flash Code Protection (No Boot program Flash segment)
#pragma config RBS = NO_RAM // Boot Segment RAM Protection (No Boot RAM)

// FSS
#pragma config SWRP = WRPROTECT_OFF // Secure Segment Program Write Protect (Secure segment may be written)
#pragma config SSS = NO_FLASH // Secure Segment Program Flash Code Protection (No Secure Segment)
#pragma config RSS = NO_RAM // Secure Segment Data RAM Protection (No Secure RAM)

// FGS
#pragma config GWRP = OFF // General Code Segment Write Protect (User program memory is not write-protected)
#pragma config GSS = OFF // General Segment Code Protection (User program memory is not code-protected)

//// FOSCSEL
//#pragma config FNOSC = PRI // Oscillator Mode (Primary Oscillator (XT, HS, EC))
//#pragma config IESO = ON // Internal External Switch Over Mode (Start-up device with FRC, then automatically switch to user-selected oscillator source when ready)
//
//// FOSC
//#pragma config POSCMD = HS // Primary Oscillator Source (HS Oscillator Mode)
//#pragma config OSCIOFNC = OFF // OSC2 Pin Function (OSC2 pin has clock out function)
//#pragma config IOL1WAY = ON // Peripheral Pin Select Configuration (Allow Only One Re-configuration)
//#pragma config FCKSM = CSDCMD // Clock Switching and Monitor (Both Clock Switching and Fail-Safe Clock Monitor are disabled)

// FOSC
#pragma config POSCMD = XT // Primary Oscillator Source (HS Oscillator Mode)
#pragma config OSCIOFNC = OFF // OSC2 Pin Function (OSC2 pin has clock out function)
#pragma config IOL1WAY = ON // Peripheral Pin Select Configuration (Allow Only One Re-configuration)
#pragma config FCKSM = CSECMD

//FOSCSEL(FNOSC_FRC);
//// Enable Clock Switching and Configure POSC in XT mode
//config FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT);

// FWDT
#pragma config WDTPOST = PS32768 // Watchdog Timer Postscaler (1:32,768)
#pragma config WDTPRE = PR128 // WDT Prescaler (1:128)
#pragma config WINDIS = OFF // Watchdog Timer Window (Watchdog Timer in Non-Window mode)
#pragma config FWDTEN = ON // Watchdog Timer Enable (Watchdog timer always enabled)

// FPOR
#pragma config FPWRT = PWR128 // POR Timer Value (128ms)
#pragma config ALTI2C = OFF // Alternate I2C pins (I2C mapped to SDA1/SCL1 pins)
#pragma config LPOL = ON // Motor Control PWM Low Side Polarity bit (PWM module low side output pins have active-high output polarity)
#pragma config HPOL = ON // Motor Control PWM High Side Polarity bit (PWM module high side output pins have active-high output polarity)
#pragma config PWMPIN = ON // Motor Control PWM Module Pin Mode bit (PWM module pins controlled by PORT register at device Reset)

// FICD
#pragma config ICS = PGD1 // Comm Channel Select (Communicate on PGC1/EMUC1 and PGD1/EMUD1)
#pragma config JTAGEN = OFF // JTAG Port Enable (JTAG is Disabled)

Valakinek van megoldása erre? Mit kellene beállítanom, hogy a dspic-et a külső órajel hajtsa, de a DAC-ot a belső, rendesen beállított?
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Feb 3, 2022 /
 
Ok!

Megvan. Aludtam rá egyet és megtaláltam a megoldást is. A lényeg hogy a rengeteg példában az FCO számolása a beépített oszcillátorral mutatja. (az sem véletlen...) De nem csak azzal megy, hanem a képletben szereplő Fin simán lehet a külső kvarc is. Ebben az esetben talán a configban az external osc PLL-el kell, de nem biztos.

Bővebben: Link

!!!! A link rögtön letölti a pdf-et!!
(#) Laja1 válasza pipi hozzászólására (») Feb 4, 2022 /
 
Esetleg sikerült valami hibát találni a programomban?
(#) Laja1 hozzászólása Feb 5, 2022 /
 
Ha egy LCD rosszul van iniciálva, akkor semmi nem jelenik meg rajta? Mintha tápot se kapna?
(#) Bakman válasza Laja1 hozzászólására (») Feb 5, 2022 /
 
Igen. Hiba lehet az is, ha egymás után túl gyorsan írod ugyanazon PORT regiszter bitjeit. Igaz, ez utóbbi inkább magasabb órajelnél fordul elő.

Ha nincs (jól) inicializálva, akkor pl. két soros kijelző esetén, a felső sorban tele karakterek jelennek meg.
(#) eSDi válasza Laja1 hozzászólására (») Feb 5, 2022 /
 
Hali!

  1. // required by display initialization
  2. LCDPutCmd(0x32);


Az LCD_Initialize()-ban a 0x32 utasítás után 3db EN impulzus kell. Az LCDPutCmd-ben csak egy van.
Vagy 3x küldöd ki a parancsot az LCDPutCmd()-vel.
Egyenlőre ennyit láttam.
(#) Laja1 válasza Bakman hozzászólására (») Feb 5, 2022 /
 
Köszönöm. Nekem nem jelennek meg még a fekete teglalapok se, pedig a tápot megkapja és a kontraszt potijára sem reagál. Ez is lehet a rossz inicializálás miatt, vagy rossz az LCD vagy elkötés van?
(#) eSDi válasza Laja1 hozzászólására (») Feb 5, 2022 /
 
Ha csak tápot kap és úgy sem jelennek meg a négyzetek a kontraszt állításra, akkor vagy elkötöttél valamit, vagy hibás a kijelző. Vagy az elkötés miatt már meghibásodott.
(#) Laja1 válasza eSDi hozzászólására (») Feb 5, 2022 /
 
Akkor most végig nézem a bekötéseket és úgy módositom a programot, hogy azt a sort háromszor írom be.
(#) eSDi válasza Laja1 hozzászólására (») Feb 5, 2022 /
 
Próbáld így:

  1. // required by display initialization
  2. LCDPutCmd(0x33);
  3. LCDPutCmd(0x32);
(#) Bakman válasza Laja1 hozzászólására (») Feb 5, 2022 /
 
Csak tápfeszültséget adj a kijelzőnek, az adatlábakat ne kösd össze a kontrollerrel. Ebben az esetben ha tekergeted a kontrasztot, meg kell jelennie a teli karaktereknek.
(#) Laja1 válasza Bakman hozzászólására (») Feb 5, 2022 /
 
Szerencsére így megjelentek a teglalapok.
(#) Laja1 válasza eSDi hozzászólására (») Feb 5, 2022 /
 
Megcsináltam, amit javasoltál. De csak annyi változott, hogy most mind a kettő sorban megjelentek a teglalapok. Érdekes hogy Proteus szimulácioval tökéletesen működött az eredeti programmal is. De ott LM kijelzőt használtam, mert a könyvtárban csak ezt találtam. De a valóságban nem ilyen kijeltőm van. Valószínű, hogy a kettő beállitasai különböznek, csak nem tudom miben.
Következő: »»   1173 / 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