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   1095 / 1210
(#) ktamas66 válasza kriszrap hozzászólására (») Júl 21, 2019 /
 
Számold ki, ha nem PWM-et, hanem sima 0V-ot ad ki a PIC, mekkorának kellene lenni ott a feszültségnek. Ennél kevesebb soha nem lesz.
(#) kriszrap hozzászólása Júl 22, 2019 /
 
Sziasztok
10k Ohm az mérések számítások alapján gondolnám hogy a fejességben feszültség osztóként van.
amikor 1k Ohm val lehúztam testre akkor mértem 280-269 mv ot és így gondolnám hogy az 10k Ohmos.

Ardunival bíbelődöm igazából de akkora különbségeket nem tapasztaltam mint egy pic .
Amit produkál hiba ként bármilyen gombot megnyomok a band funkció aktiválódik.

Ötletem az hogy 32k Ohm sok neki elnyeli az áramot talán .. De ti majd majd megmondjátok.
Mellékeltem a kapcsolást. Segítségeteket előre köszönöm.

Müködési elv.

rajz.png
    
(#) Firefighter1 hozzászólása Júl 22, 2019 /
 
Sziasztok!

Nem találom az akktualis hsz-eket és a topikot sem, arra emlékszem hogy PIC volt a kontroller, ugyhogy itt érdeklődöm!

Szeretnék egy játékhoz egy CockPit-et csinálni.
Tehát az eredetileg a billentyüzet gombjaihoz tartozó "funkciokat" szeretném gombokra kapcsolókra és rotary encoderekre átülgetni.
Egy mechanikus billentyűzet átalakítása is megoldás lenne... de problémásabb.

Tud esetleg valaki segíteni?
(#) Firefighter1 válasza Firefighter1 hozzászólására (») Júl 22, 2019 /
 
Bocsánat... megtaláltam! Vagy legalábbis egy hasonlót!
(#) sonajkniz válasza Firefighter1 hozzászólására (») Júl 22, 2019 /
 
Idézet:
„Egy mechanikus billentyűzet átalakítása is megoldás lenne... de problémásabb.”

Szerintem nem.
Én olyat már csináltam, hogy számítógép billentyűzettel írtam 2x16-os LCD-re egy PIC segítségével. Ezt nagy valószínűséggel meg is lehet fordítani.
De biztos, hogy jóval több vele a macera, mint egy olcsóbb billentyűzetből kiemelni az elektronikát és kimérni, hogy a kívánt billentyűk mely pontokra csatlakoznak.
Így akár rádiósra is meg lehetne csinálni.
A hozzászólás módosítva: Júl 22, 2019
(#) bbb válasza Firefighter1 hozzászólására (») Júl 22, 2019 /
 
Ha arduino-ra is rá mersz fanyalodni, akkor arra találsz példát nem keveset. Példának okáért: Bővebben: Link
(#) Hp41C válasza Firefighter1 hozzászólására (») Júl 22, 2019 /
 
Gooogle: PIC18F2550 USB keyboard esetleg PIC16F1459 USB keyboard
(#) icserny válasza Firefighter1 hozzászólására (») Júl 22, 2019 /
 
Én egy PIC18F4550 (vagy hasonló) USB Device - HID Keyboard gyári mintapéldájából indulnék ki.
(#) DJozso válasza Pali79 hozzászólására (») Júl 23, 2019 /
 
Az áramkör folyamatosan az autó akksi + pontján lesz, így az áramkör fogyasztása mérvadó. Erre azért van szűkség, mert az autó can-bus rendszerű és "minden" tápot kikapcsol, minden kommunikációt letilt, ha lezárod az autót. Vagyis a motort csak úgy tudod mozgatni, hogy direkt tápot adsz neki. Ha van jobb ötleted, hallgatlak. Ha csak felhúzás kellene azt simán lehetne controller nélkül is. Én viszont szeretnék olyat is, hogy ha mondjuk 2x nyomok nyitást, akkor visszatekeri az ablakot a zárás előtti pozicióba. Vagy mondjuk, ha a kocsiba ezer fok van, 3x nyitásnál mind a négy ablakot teljesen lehúzza. Erre vannak a kontrollerek. Vagy nincs igazam?
(#) Pali79 válasza DJozso hozzászólására (») Júl 25, 2019 /
 
Az adatlap szerint a PIC fogyasztása 8 MHz-es belső órajelről hajtva átlag 2,8mA. Ettől egy mezei LED is többet fogyaszt. Szinte biztos vagyok benne, hogy az autó alap áramfogyasztása ettől nagyságrendekkel több.
(#) rettung hozzászólása Aug 1, 2019 /
 
Segitenetek abban, hogy modell auto, repulo ledjeit szeretnem villogtatni, kulombozo formaban. Egy-ket ledrol volna szo. Kezdokent mit ajanlanatok? Arduino? Melyiket? Teljesen kezdokent......
Koszonom!
(#) bbalazs_ válasza rettung hozzászólására (») Aug 2, 2019 /
 
Simán csak ritmusra vagy mondjuk s.o.s. jeleket adnál?
Ha előbbi, akkor vannak maguktól villogó ledek.
Utóbbi esetben programozni kell, amihez programozó készülék és programozni tudás kell.
Pl. A pic10f200- as sorozat egy olcsó, könnyű, kicsi mikrovezérlő, ahol direkt a lábakra kötheted a ledeket.
(#) Kékróka válasza rettung hozzászólására (») Aug 2, 2019 /
 
Szia, ha az arduinot választod, szerintem ott kérdezd. Amúgy jó ötlet, még programozó sem kell hozzá.

J.
(#) rettung válasza Kékróka hozzászólására (») Aug 2, 2019 /
 
Szervusz! Bocsánat, ha rossz helyre írtam. Tehát Tőled csak azt szeretnpém kérdezni, hogy valoszínüleg nekem egy arduino uno teljesen megfelelne? Pl. repülő modell navigációs fények imitálása.
Köszönöm!
(#) Kera_Will válasza rettung hozzászólására (») Aug 2, 2019 /
 
Az UNO tenyérnyi panel méretű ... ha "óriási" a modelled akkor bele fér ... Arduino nano/micro panelek felé mozduljál jóval kissebbek az Unonál, ugyanaz a uC-t is rajtuk.
Ha meg kicsi modell mérete , akkor villogó ledek bőven megteszik ... csak táp kell neki mint már említették.
Astabil multivibrátor bőven elég erre , a blink.ino program meg csak pár sor az ardukon.
A hozzászólás módosítva: Aug 2, 2019
(#) Kékróka válasza rettung hozzászólására (») Aug 2, 2019 /
 
Csatlakozom az előttem szólóhoz, a helyigény miatt érdemes a legkisebbet választani, vagy ha fel akarod bővíteni a projektet, egy 8 lábú attiny-t is használhatsz. Persze akkor neked kell panelt csinálni. (szerintem egy próbapanelon összerakható) viszont a méretekkel szabadabban gazdálkodhatsz.
(#) Kékróka válasza rettung hozzászólására (») Aug 2, 2019 /
 
Másik nagy kérdés. Melyik a fontosabb, maga a villogás, vagy ismerkedni a a procikkal?

most nézem csak:Bővebben: Link

ilyen is van.
A hozzászólás módosítva: Aug 2, 2019
(#) szucsistvan123 hozzászólása Aug 2, 2019 /
 
Üdv!

PIC 24-es prociknál hogyan kell számolni, hogy adott osztáshoz mennyi lehet a Timer periodus?
Van rá valami kalkulátor? Vagy képlet?

Köszi!
(#) Tasznka válasza szucsistvan123 hozzászólására (») Aug 2, 2019 /
 
Szia!
Ezzel meg tudod nézni,hogy ,hogy az adott prockóhoz a timernél megadott időkhöz mit kellene beállítanod .
A másik egyszerű megoldás,mplabX->Code configurator(ennél látod,hogy a forrásrfeki,és az osztóbeállítással mettől-meddig tudod állítgatni).
(#) szucsistvan123 hozzászólása Aug 3, 2019 /
 
Heló!

Próbálom működésre bírni egy PIC24FJ256GA702-ben a Timer1 -et.
Az egész B portot kapcsolgatnia kellene, de nem csinál semmit! Valami ötlet? 1s -re van beállítva a timer.

  1. #pragma config BWRP = OFF               // Boot Segment Write-Protect bit (Boot Segment may be written)
  2. #pragma config BSS = DISABLED           // Boot Segment Code-Protect Level bits (No Protection (other than BWRP))
  3. #pragma config BSEN = OFF               // Boot Segment Control bit (No Boot Segment)
  4. #pragma config GWRP = OFF               // General Segment Write-Protect bit (General Segment may be written)
  5. #pragma config GSS = DISABLED           // General Segment Code-Protect Level bits (No Protection (other than GWRP))
  6. #pragma config CWRP = OFF               // Configuration Segment Write-Protect bit (Configuration Segment may be written)
  7. #pragma config CSS = DISABLED           // Configuration Segment Code-Protect Level bits (No Protection (other than CWRP))
  8. #pragma config AIVTDIS = OFF            // Alternate Interrupt Vector Table bit (Disabled AIVT)
  9.  
  10. // FBSLIM
  11. #pragma config BSLIM = 0x1FFF           // Boot Segment Flash Page Address Limit bits (Enter Hexadecimal value)
  12.  
  13. // FSIGN
  14.  
  15. // FOSCSEL
  16. #pragma config FNOSC = PRI              // Oscillator Source Selection (Primary Oscillator (XT, HS, EC))
  17. #pragma config PLLMODE = DISABLED       // PLL Mode Selection (No PLL used; PLLEN bit is not available)
  18. #pragma config IESO = OFF               // Two-speed Oscillator Start-up Enable bit (Start up with user-selected oscillator source)
  19.  
  20. // FOSC
  21. #pragma config POSCMD = XT              // Primary Oscillator Mode Select bits (XT Crystal Oscillator Mode)
  22. #pragma config OSCIOFCN = OFF           // OSC2 Pin Function bit (OSC2 is clock output)
  23. #pragma config SOSCSEL = ON             // SOSC Power Selection Configuration bits (SOSC is used in crystal (SOSCI/SOSCO) mode)
  24. #pragma config PLLSS = PLL_PRI          // PLL Secondary Selection Configuration bit (PLL is fed by the Primary oscillator)
  25. #pragma config IOL1WAY = ON             // Peripheral pin select configuration bit (Allow only one reconfiguration)
  26. #pragma config FCKSM = CSDCMD           // Clock Switching Mode bits (Both Clock switching and Fail-safe Clock Monitor are disabled)
  27.  
  28. // FWDT
  29. #pragma config WDTPS = PS32768          // Watchdog Timer Postscaler bits (1:32,768)
  30. #pragma config FWPSA = PR128            // Watchdog Timer Prescaler bit (1:128)
  31. #pragma config FWDTEN = OFF             // Watchdog Timer Enable bits (WDT and SWDTEN disabled)
  32. #pragma config WINDIS = OFF             // Watchdog Timer Window Enable bit (Watchdog Timer in Non-Window mode)
  33. #pragma config WDTWIN = WIN25           // Watchdog Timer Window Select bits (WDT Window is 25% of WDT period)
  34. #pragma config WDTCMX = WDTCLK          // WDT MUX Source Select bits (WDT clock source is determined by the WDTCLK Configuration bits)
  35. #pragma config WDTCLK = LPRC            // WDT Clock Source Select bits (WDT uses LPRC)
  36.  
  37. // FPOR
  38. #pragma config BOREN = OFF              // Brown Out Enable bit (Brown Out Disabled)
  39. #pragma config LPCFG = OFF              // Low power regulator control (No Retention Sleep)
  40. #pragma config DNVPEN = ENABLE          // Downside Voltage Protection Enable bit (Downside protection enabled using ZPBOR when BOR is inactive)
  41.  
  42. // FICD
  43. #pragma config ICS = PGD1               // ICD Communication Channel Select bits (Communicate on PGEC1 and PGED1)
  44. #pragma config JTAGEN = OFF             // JTAG Enable bit (JTAG is disabled)
  45.  
  46. // FDEVOPT1
  47. #pragma config ALTCMPI = DISABLE        // Alternate Comparator Input Enable bit (C1INC, C2INC, and C3INC are on their standard pin locations)
  48. #pragma config TMPRPIN = OFF            // Tamper Pin Enable bit (TMPRN pin function is disabled)
  49. #pragma config SOSCHP = OFF             // SOSC High Power Enable bit (valid only when SOSCSEL = 1 (Enable SOSC low power mode)
  50. #pragma config ALTI2C1 = ALTI2CEN       // Alternate I2C pin Location (SDA1 and SCL1 on RB9 and RB8)
  51.  
  52. // #pragma config statements should precede project file includes.
  53. // Use project enums instead of #define for ON and OFF.
  54.  
  55. #define FCY 10000000
  56. #include <xc.h>
  57. unsigned char tick = 1;
  58.  
  59.  
  60.  void __attribute__((interrupt, no_auto_psv)) _T1Interrupt() {
  61.        
  62.         if((tick % 2) == 1) {
  63.             LATB = 0xFFFF;
  64.         }
  65.         else {
  66.             LATB = 0x0000;
  67.         }
  68.        
  69.         tick ++;
  70.        
  71.        IFS0bits.T1IF = 0;
  72.     }
  73.  
  74.  
  75. int main() {
  76.    
  77.    
  78.    
  79.     LATA = 0x0000;
  80.     LATB = 0x0000;
  81.  
  82.     /****************************************************************************
  83.      * Setting the GPIO Direction SFR(s)
  84.      ***************************************************************************/
  85.     TRISA = 0x0000;
  86.     TRISB = 0x0000;
  87.  
  88.     /****************************************************************************
  89.      * Setting the Weak Pull Up and Weak Pull Down SFR(s)
  90.      ***************************************************************************/
  91.     IOCPDA = 0x0000;
  92.     IOCPDB = 0x0000;
  93.     IOCPUA = 0x0000;
  94.     IOCPUB = 0x0000;
  95.  
  96.     /****************************************************************************
  97.      * Setting the Open Drain SFR(s)
  98.      ***************************************************************************/
  99.     ODCA = 0x0000;
  100.     ODCB = 0x0000;
  101.  
  102.     /****************************************************************************
  103.      * Setting the Analog/Digital Configuration SFR(s)
  104.      ***************************************************************************/
  105.     ANSA = 0x0000;
  106.     ANSB = 0x0000;
  107.    
  108.     /****************************
  109.         Timer 1 configuration
  110.      ****************************/
  111.     T1CON = 0x0000;
  112.     TMR1 = 0x0000;
  113.     PR1 = 0x9896;
  114.     IPC0bits.T1IP = 0x00;
  115.     IFS0bits.T1IF = 0;
  116.     IEC0bits.T1IE = 1;
  117.     T1CON = 0x8030;  /* 1:256 | Fosc/2 | T1 on */
  118.    
  119.    
  120.    
  121.  
  122.     return 0;
  123. }
A hozzászólás módosítva: Aug 3, 2019
(#) szucsistvan123 válasza szucsistvan123 hozzászólására (») Aug 3, 2019 /
 
Probléma megoldva!

A prioritást rosszul állítottam be.
(#) sonajkniz hozzászólása Aug 4, 2019 /
 
Sziasztok!

Egy PIC12F1840-es programozásával gyűlt meg a bajom.
A programom hossza meghaladja a 2 KWorld-ot. Elvileg ez nem lehetne baj, lévén ebben a PIC-ben 4KWorld programmemória van.
Csakhogy a fordító addig le sem volt hajlandó fordítani a programot, míg a program egy részét nem címeztem eleve org 0x800-tól.
Ezután lefordult, csak épp nem működött. Szimulátorban nézve kiderült, hogy az olyan GOTO és CALL utasításokat, amik az org 0x800 feletti területre mutatnak, rossz helyre címzi. A mellékelt képen látható, hogy az egyik GOTO utasítást direkt címzéssel láttam el, és a fordító még ekkor is rossz helyre címezte.
Az lenne a kérdésem, hogy csak azért van 4Kworld programmemóriája ennek a PIC-nek, mert elfért a lapkán, vagy használni is lehet valahogy?
A hozzászólás módosítva: Aug 4, 2019
(#) sonajkniz válasza sonajkniz hozzászólására (») Aug 4, 2019 /
 
Ezen a képen látható legjobban, honnan kezd el hibázni a fordító.
(#) nedudgi válasza sonajkniz hozzászólására (») Aug 4, 2019 /
 
A fordító/linker nem jelezte a laphatár átlépését?
Nem world(=világ), hanem word(=szó) a helyes kifejezés.
(#) sonajkniz válasza nedudgi hozzászólására (») Aug 4, 2019 /
 
Idézet:
„Nem world(=világ), hanem word(=szó) a helyes kifejezés.”

Ennyit az angol tudásomról.

Végül sikerült működésre bírni.
Nagy segítségemre volt benne Pali79 barátom, valamint ez a cikk.
Mivel az adattár a kiolvasó rutinnal együtt elfért a második lapon, így viszonylag egyszerűen meg lehetett oldani.
(#) Hp41C válasza sonajkniz hozzászólására (») Aug 4, 2019 /
 
A PIC16 program memóriája 2kszó méretű lapokra van osztva. Ez a programrész egy táblázatos elágazás (kiszámított ugrás). Az assembly fordító csak figyelmeztet (warning) a program laphatár átlépésére. A kódban nem látható a PC 11. és magasabb bitjeinek értéke:
a goto 0x9A2 utasítás a PCLATH 6..3 bitjelieak állása szerint lehet ugrás a 0x1A2, 0x9A2, 0x11A2 stb. Ha ekkora tartományban kell vezérlést átadni, a PCLATH regisztert is kezelni kell.
(#) lelkes amatőr hozzászólása Aug 5, 2019 /
 
Szeretnék segitséget kérni.

Nem tudok programot tölteni a 12F675-be, 0027-es errort kapok.
Nem tudom, hogy én csinálok valamit rosszul vagy más gond van.

  1. Erasing Target
  2. PIC12F675 found (Rev 0xB)
  3. PICkit 2 Ready
  4.  
  5. Blank Checking
  6. PIC12F675 found (Rev 0xB)
  7. Blank Checking Program Memory
  8. Blank Checking EEPROM Memory
  9. Blank Checking User ID Memory
  10. Blank Checking Configuration Memory
  11. PICkit 2 Ready
  12.  
  13. Programming Target (2019.08.05.  14:25:16)
  14. PIC12F675 found (Rev 0xB)
  15. Erasing Target
  16. Programming Configuration Memory
  17. Verifying Configuration Memory
  18. PK2Error0027:  Failed verify ([b]Address = 0x2007 - Expected Value 0xFFF - Value Read 0x1FF[/b])
  19. PICkit 2 Ready
(#) Pali79 válasza lelkes amatőr hozzászólására (») Aug 5, 2019 /
 
Biztos ebbe a PIC-be való a hex amit bele akarsz tölteni? Esetleg forrás is van?
(#) lelkes amatőr válasza Pali79 hozzászólására (») Aug 5, 2019 /
 
Igen, erreaz eszközre való programmal próbálkozok, ez volt elötte is benne, pár értéket akartam módositani.

  1. /*  Name     : main.c
  2.  *  Purpose  : Main file for i2c code for PIC12F675.
  3.  *  Date     : 04-11-12
  4.  */
  5.  #include <htc.h>
  6.  
  7. #define _XTAL_FREQ   4000000      // Hz
  8.  
  9. /* Pin configuration
  10.  *
  11.  * GP4 = SDA pin for i2c
  12.  * GP5 = SCK pin for i2c
  13.  */
(#) Pali79 válasza lelkes amatőr hozzászólására (») Aug 5, 2019 /
 
Ennyi? Tedd fel a lefordított hex-et is.
Következő: »»   1095 / 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