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   1098 / 1098
(#) menyus válasza kissi hozzászólására (») Szept 26, 2019 /
 
De, ott van. Sosem használtam onnét indítva csak feltelepítve a driverét, a saját szoftverével. Most nincs nálam kipróbálni nem tudom, de minden egyéb driver telepítés nélkül az MPLAB alól mennie kéne? A saját programfelületét azért szerettem mert látszott az eeprom terület tartalm is.. stb. Nem tudom ez hogy néz ki MPLAB alól futtatva de kipróbálom holnap. Köszi.
(#) Tasznka válasza szucsistvan123 hozzászólására (») Szept 26, 2019 / 1
 
Igen bármelyik lehet a CS.
(#) szucsistvan123 válasza Tasznka hozzászólására (») Szept 26, 2019 /
 
Köszi!
(#) kissi válasza menyus hozzászólására (») Szept 26, 2019 /
 
Minden megy, az EEPROM-ot is meg tudod nézni !
(#) matheattila válasza menyus hozzászólására (») Szept 28, 2019 /
 
Üdv, nem tudom, hogy még szükséged van-e rá de itt megtalálod a PK2-t beépített framework-al, ezt fel kellene engedje a W10 is.
PICkit 2 v2.60.00 Setup dotNET A.zip
(#) Hp41C válasza matheattila hozzászólására (») Szept 28, 2019 / 1
 
Ezen az oldalon fenn van a PICkit 2 v2.61.00 Setup dotNET A.zip, a PK2V023200.hex.zip (firmware), a PK2DFEv1.0.0.6.zip (device file editor) és a PICKIT2UsersGuide.pdf is.
(#) matheattila válasza Hp41C hozzászólására (») Szept 28, 2019 /
 
Köszi, ezt nem tudtam, az volt az első találat amit google bedobott.
(#) icserny hozzászólása Szept 28, 2019 /
 
A hivatalos Microchip szoftver archívum itt található: MPLAB Ecosystem Downloads Archive
(#) siemenstaurus hozzászólása Szept 28, 2019 /
 
Sziasztok! Hobbistaként szeretnék segítséget kérni. Adott MCU: PIC12f509. Adott fejlesztői környezet: MPLAB IDE v8.92. Programozó PICkit2.
Milyen fordítót kellene használni illetve hol szúrom el a regisztereket? Ha a ciklus tartalmátkiveszem, lefordul, azzal együtt nem. Simán csak villogtatok - elvileg - két kimenetet felváltva, bonyolultabbat nem is gondolnék.

Eddig pic18-ast használtam, már egész sok mindent meg tudtam vele oldani, de ez a "visszalépés" kifog rajtam.
Mit kellene jobban átnéznem? Mivel vagyok elmaradva?
Köszönöm!
(#) vilmosd válasza siemenstaurus hozzászólására (») Szept 29, 2019 /
 
A 'keses" fv parametere int azaz 8 bites. Te meghivod 1000-el. Az 16 bites. A fordito nem szereti.
(#) benjami válasza siemenstaurus hozzászólására (») Szept 29, 2019 /
 
A hitech-c esetén a konfigot valahogy így kellene megadni, az a #pragma mód nálam legalább is nem működik.
  1. __CONFIG(MCLRE_OFF & OSC_IntRC);
(#) matheattila válasza siemenstaurus hozzászólására (») Szept 29, 2019 /
 
Lehetőleg ne adj változóknak is meg függvényeknek is azonos nevet, mert abból is lehetnek gondok, meg téged is megtéveszthet nagyobb programok esetén.
(#) Hp41C válasza siemenstaurus hozzászólására (») Szept 29, 2019 /
 
@ vilmosd: Nem a keses szimbólumra panaszkodik a fordító, automatikusan byte -re konvertálja.
@ benjami: Nekem csak V9.83 -mal volt szerencsém kipróbálni, azon és a hozzászólásban láthatóan a 12F509 esetében is lefordul.

Valami a 9.70 include állományai között nem stimmel. Nem érti az output ablakban felsorolt szimbólumokat. Meg kell vizsgálni a pic12C509.h tartalmát. A mellékletben a 9.83 -é.
A hozzászólás módosítva: Szept 29, 2019
(#) benjami válasza Hp41C hozzászólására (») Szept 29, 2019 /
 
Fura, mert nálam is a 9.83 verzió van fent.
(#) siemenstaurus válasza Hp41C hozzászólására (») Szept 29, 2019 /
 
@vilmosd @benjami @HP41ci@matheattila

Köszönöm! Az include fájl segített most már tudok vele kommunikálni az ő nyelvén; talán. Ha nem definiálok semmit, hanem direktben adom meg a port állapotát, lefordul, ha a GPIObits.GPx -et használom nem fordul.
Viszont itt az én elképzelésem szerint a Gport 0 és 1 bitjét magasra állítom, gyakorlatilag multival nem mérek rajta semmit.
Persze ez már lehet áramköri gond is, de a "programban" láttok esetleg rossz elképzelést?
Köszönöm!!
A hozzászólás módosítva: Szept 29, 2019
(#) benjami válasza siemenstaurus hozzászólására (») Szept 29, 2019 /
 
Az hogy #define után teszed az általad kívánt beállításokat az nem fogja beállítani a kívánt konfigurációs biteket. Próbáld ki így, és a próbához húzd le a programozót, mert az is foghatja az általad használt lábakat.

v2.png
    
(#) whalaky hozzászólása Szept 30, 2019 /
 
Sziasztok!
Mivel az mplabx mmc megszünteti a plib támogatást az i2c-hez a driver használatát erölteti.
Gondoltan kipróbálom proteusban. Itt jött az első probléma, Amilyen chipeket a proteus ismer - én is ezeket használom - az mcc nem támogatja (PIC18F2550). Gondoltam átmókolom a drivert. Eddig jó is,
Az első byteot szépen, de aztán az óra leáll és nem megy tovább, nem tudom a következő byteot kiküldeni a buszra. Arról az apróságról nem is beszálve hogy az SCKn lévő felhúzó ellenállás mintha ott sem lenne.
Ha valakinek volt már a driverrel sikerélménye segítsen!
(#) Hp41C válasza whalaky hozzászólására (») Okt 1, 2019 /
 
Nem áll meg az élet, ha nincs egy funkcióra library megoldás. Sőt a legelvadultabb könyvtári eljárásokat is csak megírta egyszer valaki.
Elő az adatlap és a függvények egyszerűen megírhatók. Egy kis támpont.
(#) whalaky válasza Hp41C hozzászólására (») Okt 1, 2019 /
 
Az lett a vége. Sajnos én is el vagyok kényelmesedve, és az mcc csak mégjobban elkényeztet (most épp nem) hogy megcsinál helyettem mindent.
Végül is megoldottam némi káromkodás árán, mert nem akartam mindjárt chipen kipróbálni csak proteusban, de az nem álligatja be a státusbitek felét sem.
Ráment az éjszakám az olvasgatásra..
Valóban jobbnak tűnik (mostmár hogy átrágtam magam rajta) a driver. "Kicsit" több mint a plib
(#) siemenstaurus válasza benjami hozzászólására (») Okt 2, 2019 /
 
Köszönöm a segítséget!
Lefrissítettem a fordítót arra a verzióra, amit a csatolt képen láttam, most már működik.
Linkelem megjelölve, hátha valaki pont erre keres rá valamikor. A Microchip oldalán már nem találtam meg.

HI-TECH C Compiler for PIC10/12/16 MCUs Update v9.80
(#) szucsistvan123 hozzászólása Okt 2, 2019 /
 
Üdv!

Van egy kis problémám:
PIC24FJ256GA702-n nem akar működni az UART RX bemenete.
(A TX működik, küldi az adatokat.)
  1. #include<xc.h>
  2. #define FCY 10000000
  3. #include<libpic30.h>
  4. #include <p24FJ256GA702.h>
  5.  
  6. extern unsigned char RxBuffer;
  7. /*******************************************************************************
  8. * UART PPS settings                                           
  9. ******************************************************************************/
  10.  
  11.  
  12. /*******************************************************************************
  13. * UART Setup
  14. ******************************************************************************/
  15. void UART_Init() {
  16.     U1BRG = 0x0040;         //BAUD rate = 9600
  17.    
  18.     IPC2bits.U1RXIP = 5;
  19.     IPC3bits.U1TXIP = 4;
  20.    
  21.     IEC0bits.U1RXIE = 1;
  22.     IEC0bits.U1TXIE = 1;
  23.    
  24.     U1STA = 0x0000;
  25.     U1MODE = 0x8080;
  26.     U1STA = 0x1400;
  27.    
  28.     IFS0bits.U1RXIF = 0;
  29.     IFS0bits.U1TXIF = 0;
  30.    
  31. }
  32.  
  33. /*******************************************************************************
  34. * RX TX Interrupt
  35. *******************************************************************************/
  36. void __attribute__((interrupt (no_auto_psv))) _U1RXInterrupt(){
  37.     RxBuffer = U1RXREG;
  38.     IFS0bits.U1RXIF = 0;
  39. }


A PPS:
  1. #include<xc.h>
  2. /*******************************************************************************
  3. * UART PPS
  4. *******************************************************************************/
  5. void PPS_Setup(){
  6.     RPINR18bits.U1RXR = 0x06;   //RX -> RP6 (pin15)
  7.     RPOR3bits.RP7R = 0x03//TX -> RP7 (pin16)
  8. }


A main:
  1. #include<xc.h>
  2. #define FCY 10000000
  3. #include<libpic30.h>
  4.  
  5.  
  6. unsigned char RxBuffer;
  7.  
  8. int main() {
  9.     Port_Initialize();
  10.     PPS_Setup();
  11.     UART_Init();
  12.    
  13.     if(RxBuffer == 0x00){
  14.         LATA = 0xFFFF;
  15.     }
  16.     else {
  17.         LATA = 0x0000;
  18.     }
  19.     //UART_Send();
  20.    
  21.     return 0;
  22. }


Próbáltan küldeni a PIC-nek adatot terminálprogirol, és ez alapján kellene kapcsolgatnia az A porton egy LED-et.
A hozzászólás módosítva: Okt 2, 2019
(#) pipi válasza szucsistvan123 hozzászólására (») Okt 2, 2019 / 1
 
Hali!
Egy "gondot látok"...
A main függvénynek "vége" van, ide kéne valami hurok pl while(1); , a mainból nem szoktunk kilépni, nem is tudom ilyenkor mi történik, de tuti nem jó Ha ez újraindítja a procit, akkor az nem jó...
Ha nincs adás rutin, a txie-t ne engedélyezd...
(#) szucsistvan123 válasza pipi hozzászólására (») Okt 3, 2019 /
 
Igen, közben meglett!
Köszönöm!
Idézet:
„Ha nincs adás rutin, a txie-t ne engedélyezd...”

Van, csak nem másoltam ide!
(#) jocka0012 hozzászólása Okt 12, 2019 /
 
Üdv!

Van két DC motorom amik tartalmaznak 1-1 hall jeladót amik négyszögjelet adnak ki a kimenetükön. Ezt a négyszögjelet szeretném számoltatni a Timer 2 és Timer 3 perifériával egy DSPIC33FJ32MC102 mikrokontrollerrel. Watches ablakban nézve számol a két Timer, de valamiért nagy az eltérés a két változó között(hall_left,hall_right) pedig a motorok szinte egyforma fordulattal forognak(Szkóppal mérve a két jel is ugyanakkora frekvenciájú/kitöltési tényezőjű).

  1. void tmr2_init()                     
  2. {
  3.     AD1PCFGL = 0xFF;             
  4.     T2CONbits.TCS = 1;
  5.     RPINR3bits.T2CKR = 0b01000;
  6.     IFS0bits.T2IF = 0;
  7.     IEC0bits.T2IE = 1;               
  8.     PR2 = 1;                         
  9.     TMR2 = 0;
  10. }
  11.  
  12. void tmr2_on()
  13. {
  14.     T2CONbits.TON = 1;
  15. }
  16.  
  17. void tmr2_off()
  18. {
  19.     T2CONbits.TON = 0;
  20. }
  21.  
  22.  
  23. void tmr3_init()    //HALL 1 impulse count => SET RP7 to clock source input
  24. {
  25.     RPINR3bits.T3CKR = 0b00111;     
  26.     T3CONbits.TCKPS1 = 0;           
  27.     T3CONbits.TCKPS0 = 0;           
  28.     T3CONbits.TCS = 1;             
  29.     T3CONbits.TSIDL = 1;           
  30.     IFS0bits.T3IF = 0;             
  31.     IEC0bits.T3IE = 1;
  32.     PR3 = 1;                     
  33.     TMR3 = 0;                       
  34. }
  35.  
  36. void tmr3_on()
  37. {
  38.     T3CONbits.TON = 1;
  39. }
  40.  
  41. void tmr3_off()
  42. {
  43.     T3CONbits.TON = 0;
  44. }
  45.  
  46. void main(void)
  47. {                 
  48.     mcpwm_init(FCY , PWM_FRQ);
  49.     uart_init();
  50.     tmr2_init();
  51.     tmr3_init();
  52.     tmr2_on();
  53.     tmr3_on();
  54.    
  55.     while(1)
  56.     {
  57.         //check_flags();
  58.         //check_state();
  59.      
  60.         rotate_right_one(FCY,PWM_FRQ,80);
  61.         rotate_right_two(FCY,PWM_FRQ,80);
  62.        
  63.     }
  64. }
  65.  
  66. void __attribute__((interrupt,no_auto_psv)) _T2Interrupt(void)  //RIGHT HALL COUNT
  67. {
  68.     IFS0bits.T2IF = 0;
  69.     hall_left++;
  70.     TMR2 = 0;
  71. }
  72.  
  73. void __attribute__((interrupt,no_auto_psv)) _T3Interrupt(void)  //LEFT HALL COUNT
  74. {
  75.     IFS0bits.T3IF = 0;
  76.     hall_right++;
  77.     TMR3 = 0;
  78. }


Ha simán a while ciklusban növelem a hall_left és hall_right értékét az alapján, hogy logikai 1 vagy logikai 0-t érzékel a kontroller a bemenetein, akkor közel egyforma lesz a két változó értéke:

  1. while(1)
  2.     {
  3.         //check_flags();
  4.         //check_state();
  5.         if(PORTBbits.RB8 == 1)
  6.         {
  7.             hall_left++;
  8.         }
  9.         if(PORTBbits.RB7 == 1)
  10.         {
  11.             hall_right++;
  12.         }
  13.         rotate_right_one(FCY,PWM_FRQ,80);
  14.         rotate_right_two(FCY,PWM_FRQ,80);
  15.        
  16.     }


Az lenne a kérdésem, hogy a Timer-es verzióval mi lehet a probléma?
A hozzászólás módosítva: Okt 12, 2019
(#) Tasznka válasza jocka0012 hozzászólására (») Kedd, 13:52 /
 
Ezt nem így kellene megoldani. A második megoldásodnál az a bibi,hogy ebből nem tudod,hogy mennyi az annyi,mert lehet,hogy 2-3 alkalommal is magas szintet érzékel,miközben nem is volt változás.
A legbiztosabb,hogy csinálsz 1 fix timert 100ms,1s,... és a 2 bemenetet megszakításokkal(int0,1,2,..) számolnád.
Következő: »»   1098 / 1098
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu