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   1115 / 1203
(#) menyus válasza sonajkniz hozzászólására (») Ápr 5, 2020 /
 
Atyaég... Milyen PIC ez hogy ennyi bankja van? Meg is bolondulnék. Még egy 40 lábú F877 nek is csak 4 bankja van ennek a nyolc lábú kis törpének minek ennyi bank?
(#) proli007 válasza menyus hozzászólására (») Ápr 5, 2020 /
 
Én már vagy 10 éve nem foglalkoztam a dologgal, de általában a lényeg, hogy elinduljon a dolog és ha megérted a működését, akkor már menni fognak az átalakítások. A karakteres LCD vezérlők legtöbbje HD44780-al kompatibilisek. Néha van némi eltérés, de az majd kiderül. A félbájt csere jó lesz, a port átdefiniálása nem lehet gond.
(#) menyus válasza proli007 hozzászólására (») Ápr 5, 2020 /
 
Rendben, és köszönöm a segítséget! (lehet még kérdezni fogok... )
(#) nedudgi válasza menyus hozzászólására (») Ápr 5, 2020 /
 
A képességei miatt sok regiszterre van szüksége, sok regiszter pedig sok memórialapot igényel.
(#) menyus válasza nedudgi hozzászólására (») Ápr 5, 2020 /
 
Értem, köszi. Látom a perifériákat is, nem semmi hogy mi minden belefér egy ilyenbe.
(#) Hp41C válasza menyus hozzászólására (») Ápr 5, 2020 /
 
Ennyi sok?? 16F18455 családjának, a 18F25Q43 családjának 64 bankja van. Ekkor még szóba sem hoztuk a 24FJxxxDAx10 sorozat EDS lehetőségét 512 RAM lappal.
A hozzászólás módosítva: Ápr 5, 2020
(#) jdani válasza nedudgi hozzászólására (») Ápr 5, 2020 /
 
Ja, a 47K nekem is sok, azthiszem 10K használtam oda.
Tehát ha PL abemenet csak 4,5V lenne, akkor is jól működne a kapcsolás?
Hol működik, hol nem, nemtudom miért.
Ez egy sportkamerába van beépítve, szerepe, hogy ha USB van csatlakoztatva, a kamera bekapcsoljon, és kezdje a felvételt.
(#) menyus válasza Hp41C hozzászólására (») Ápr 5, 2020 /
 
"Csecsemőnek minden új", jómagam a 16F648 ig, illetve az F877 ig jutottam. Mondhatni csak "hobbista" vagyok PIC es fejlesztési téren. Ezeknek a perifériáknak nem mondom hogy még a hírét se hallottam de használni sosem használtam még őket. (RS485, ADC, I2C, CAN..stb) Lenne fejvakarás ha ilyenekre kéne fejlesztenem valamit. A munkahelyemen ilyeneket javítok, élesztek és tesztelek. Pl RS485 ön és / vagy CAN BUS on kommunikáló ipari kazán vezérlők ezek melyek központi egysége 8 db termoszátot fogad és kezel külön. Internetes elérhetőség központi szerveren keresztül..stb. A termosztátok erintőképernyős grafikus LCD k (Minden kijelzett tartalom egy .JPG kép.) el kezelhetőek, címezhetők, proxymity (közelítésre élednek fel) páratartalom és hőmésrséklet mérés, hiszterézis beállítás...stb De a fejlesztésekre külön team van, így a kút mélyére nem látok le de nem is érteném. A tesztfolyamatokra külön tesztkörnyezetek vannak. A javításokhoz meg van schematics, partlist, PCB (eagle) viewer az általában 4 rétegű panelekhez, RS485/USB konverter a PC hez illesztéshez mivel azokon fut a tesztprogram. Az eszközök Atmel procikra épülnek nem PIC re. De van bennük Cypress, Texas és NXP mikrovezérlő is. De ezek programozásához csak a főmérnökünk ért profi szinten, mi csak felprogramozzuk az eszközöket, teszteljük, ha gond van hardveresen akkor javítjuk. A beültetést sem mi végezzük, gépi beültetéssel jönnek a panelek. Többnyire BGA - s Atmel procik vannak rajtuk, egy külön processzor kártyán ami ráültethető az alap panelre. Az egészet egy SD kártyáról futtatott mini linux vezényli. Elég összetett kütyü.
A hozzászólás módosítva: Ápr 5, 2020
(#) Szemmy hozzászólása Ápr 6, 2020 /
 
Sziasztok. Lenne 1 gondom, 16F877A PIC-nél ha azt álltom be hogy.
movlw b'11111000'
movwf trise
eltünik a D Port ha 0-ra álítom a trise-t akkor visszajön.
Mit kellene be vagy ki kaccsolni? Assembly-be
van valami köze egymáshoz?
(#) pipi válasza Szemmy hozzászólására (») Ápr 6, 2020 /
 
Mit jelent hogy eltűnik a D port? Eltűnni nem tud, ott van az.
Bankváltások rendben?
(#) Szemmy hozzászólása Ápr 6, 2020 /
 
A D összes led-je világit, ha a trise-t átálitóm ahogy irtam, ráküldöm a progit, már nem világitanak
(#) Hp41C válasza Szemmy hozzászólására (») Ápr 7, 2020 /
 
Idézet az adatlapból:
Idézet:
„REGISTER 4-1: TRISE:
bit 4 PSPMODE: Parallel Slave Port Mode Select bit
1 = PORTD functions in Parallel Slave Port mode
0 = PORTD functions in general purpose I/O mode

PORTD operates as an 8-bit wide Parallel Slave Port,
or microprocessor port, when control bit PSPMODE
(TRISE<4>) is set. In Slave mode, it is asynchronously
readable and writable by the external world through RD
control input pin, RE0/RD/AN5, and WR control input
pin, RE1/WR/AN6.”
A hozzászólás módosítva: Ápr 7, 2020
(#) Szemmy hozzászólása Ápr 7, 2020 /
 
Aha. Na ezt nem találtam az adatlapjában. Thx KÖSZÖNÖM.
A hozzászólás módosítva: Ápr 7, 2020
Moderátor által szerkesztve
(#) Rolend89 hozzászólása Ápr 8, 2020 /
 
Szervusztok!
Nem tudtam ide vagy a haladóba írjak. Az elején leszögezném segítséget kérni jöttem és abszolút nem foglalkozom a jövőben PIC-el. Most szükséges egy beadandó feladat miatt iskolában.
A feladatom: PIC18F45K22-vel, LM35 hőmérséklet érzékelővel megvalósított PID hőmérséklet szabályozás. A programot mikroC-ben írom és Proteus-ban tesztelem, majd ha kész megépítem a hardvert.
Jelen állás szerint egy keypad-ről beviszem a referencia értéket a kijelző megjeleníti. Majd feldolgoztam az LM35 értékét, ezt is megjeleníti és stimmel. Na most jön a gond a PID-rész.
Rengeteget olvastam és nem tudom, hogyan is írjam le a programban. Megértettem a PID lényegét,hangolást stb., de nem megy.
A végén a PWM is stimm. (Itt jegyzem meg L293D motorvezérlővel egy DC motort sebességét szabályozná a PWM jel.)
Valaki tudna nekem a PID részben bármely nemű segítséget nyújtani?
Előre is köszönöm!
Szép napot Mindenkinek!
(#) Hp41C válasza Rolend89 hozzászólására (») Ápr 8, 2020 /
 
Ha már mikroC-ben írod, akkor itt találhatsz egy PID eljárást.
(#) Rolend89 válasza Hp41C hozzászólására (») Ápr 8, 2020 /
 
Igen, nem említettem. Dupla 0 a C tudásom. Amit eddig összeírtam azzal is több, mint 1 hetem ment el. De próbálkozok azért! Köszönöm!
(#) Peter65 válasza Rolend89 hozzászólására (») Ápr 8, 2020 /
 
Esetleg ez segíthet.
(#) mate_x válasza Rolend89 hozzászólására (») Ápr 8, 2020 /
 
Első lépésben a PID szabályozód átviteli függvényét kellene meghatároznod. Akár készíthetsz hozzá MATLAB-os szimulációt. Ez az átviteli függvény analóg szabályozót ír le, de a PIC-kel csak diszkrét idejű szabályozót lehet megvalósítani. Több féle elmélet is van diszkrét idejű szabályozó tervezéséhez, a legegyszerűbb leutánozni az analóg szabályozót(emuláció). Erre több módszer is van, pl.: differenciaegyenlet módszer(Euler módszer). Ezek alapján fel tudsz írni a szabályozód differenciálegyenletéből egy differenciaegyenletet, amiből levezethető egy rekurzív algoritmust. Azt már talán nem olyan nehéz leprogramozni, az időzítések betartására figyelni kell, a beavatkozó jel a PWM középértéke.
(#) LSB hozzászólása Ápr 9, 2020 /
 
Sziasztok.
(A 8 biteseknél már többször írtam több kiloszavas programot (sikerrel).
A C nyelvet viszont (szükségből) nem rég tanultam meg. És hogy a nehézségeket fokozzam,
a 32 bitesekkel kezdtem el foglalkozni. Az MX-ekre MCC segítségével már sikerült programot írnom, de az a processzor is kevésnek bizonyult a feladathoz, a C miatt nem nagyon tudtam meghatározni, hogy elég lesz e hozzá, de ugy gondoltam, hogy biztos elég.
NEM.
Így hát célba vettem a leghiperebb Pic-et, az MZ-t.
Az a baj, hogy itt már MCC sincs, ami fogná az ember kezét.
Már az első kóstolgatásnál beletört a fogam.)

MPLAB X IDE-ben,a Timer1-et szólítottam meg, de a kis *** csak szaladni hajlandó és beállítani a flag-et, viszont az ISR függvényt már nem hívja meg.
Ebben kérném a segítségeteket.
Köszönöm, az esetleges választ.
Ha kellene a kód is:

  1. volatile unsigned long int szamlaloegyvillogo=0;
  2.  
  3. // PIC32MZ2048EFH100 Configuration Bit Settings
  4.  
  5. // 'C' source line config statements
  6.  
  7. // DEVCFG3
  8. #pragma config USERID = 0xFFFF          // Enter Hexadecimal value (Enter Hexadecimal value)
  9. #pragma config FMIIEN = OFF              // Ethernet RMII/MII Enable (MII Enabled)
  10. #pragma config FETHIO = OFF              // Ethernet I/O Pin Select (Default Ethernet I/O)
  11. #pragma config PGL1WAY = OFF             // Permission Group Lock One Way Configuration (Allow only one reconfiguration)
  12. #pragma config PMDL1WAY = OFF            // Peripheral Module Disable Configuration (Allow only one reconfiguration)
  13. #pragma config IOL1WAY = OFF             // Peripheral Pin Select Configuration (Allow only one reconfiguration)
  14. #pragma config FUSBIDIO = ON            // USB USBID Selection (Controlled by the USB Module)
  15.  
  16. // DEVCFG2
  17. #pragma config FPLLIDIV = DIV_1         // System PLL Input Divider (1x Divider)
  18. #pragma config FPLLRNG = 1// System PLL Input Range (5-10 MHz Input)
  19. #pragma config FPLLICLK = PLL_FRC       // System PLL Input Clock Selection (FRC is input to the System PLL)
  20. #pragma config FPLLMULT = MUL_50       // System PLL Multiplier (PLL Multiply by 50)
  21. #pragma config FPLLODIV = DIV_2        // System PLL Output Clock Divider (2x Divider)
  22. #pragma config UPLLFSEL = FREQ_24MHZ    // USB PLL Input Frequency Selection (USB PLL input is 24 MHz)
  23.  
  24. // DEVCFG1
  25. #pragma config FNOSC = 1           // Oscillator Selection Bits (SPLL)
  26. #pragma config DMTINTV = WIN_127_128    // DMT Count Window Interval (Window/Interval value is 127/128 counter value)
  27. #pragma config FSOSCEN = ON             // Secondary Oscillator Enable (Enable SOSC)
  28. #pragma config IESO = ON                // Internal/External Switch Over (Enabled)
  29. #pragma config POSCMOD = OFF            // Primary Oscillator Configuration (Primary osc disabled)
  30. #pragma config OSCIOFNC = OFF           // CLKO Output Signal Active on the OSCO Pin (Disabled)
  31. #pragma config FCKSM = CSECME           // Clock Switching and Monitor Selection (Clock Switch Enabled, FSCM Enabled)
  32. #pragma config WDTPS = PS1048576        // Watchdog Timer Postscaler (1:1048576)
  33. #pragma config WDTSPGM = STOP           // Watchdog Timer Stop During Flash Programming (WDT stops during Flash programming)
  34. #pragma config WINDIS = NORMAL          // Watchdog Timer Window Mode (Watchdog Timer is in non-Window mode)
  35. #pragma config FWDTEN = OFF             // Watchdog Timer Enable (WDT Disabled)
  36. #pragma config FWDTWINSZ = WINSZ_25     // Watchdog Timer Window Size (Window size is 25%)
  37. #pragma config DMTCNT = DMT31           // Deadman Timer Count Selection (2^31 (2147483648))
  38. #pragma config FDMTEN = OFF              // Deadman Timer Enable (Deadman Timer is enabled)
  39.  
  40. // DEVCFG0
  41. #pragma config DEBUG = OFF              // Background Debugger Enable (Debugger is disabled)
  42. #pragma config JTAGEN = OFF             // JTAG Enable (JTAG Disabled)
  43. #pragma config ICESEL = ICS_PGx2        // ICE/ICD Comm Channel Select (Communicate on PGEC2/PGED2)
  44. #pragma config TRCEN = OFF               // Trace Enable (Trace features in the CPU are enabled)
  45. #pragma config BOOTISA = MIPS32         // Boot ISA Selection (Boot code and Exception code is MIPS32)
  46. #pragma config FECCCON = OFF_UNLOCKED   // Dynamic Flash ECC Configuration (ECC and Dynamic ECC are disabled (ECCCON bits are writable))
  47. #pragma config FSLEEP = OFF             // Flash Sleep Mode (Flash is powered down when the device is in Sleep mode)
  48. #pragma config DBGPER = PG_ALL          // Debug Mode CPU Access Permission (Allow CPU access to all permission regions)
  49. #pragma config SMCLR = MCLR_NORM        // Soft Master Clear Enable bit (MCLR pin generates a normal system Reset)
  50. #pragma config SOSCGAIN = GAIN_2X       // Secondary Oscillator Gain Control bits (2x gain setting)
  51. #pragma config SOSCBOOST = ON           // Secondary Oscillator Boost Kick Start Enable bit (Boost the kick start of the oscillator)
  52. #pragma config POSCGAIN = GAIN_2X       // Primary Oscillator Gain Control bits (2x gain setting)
  53. #pragma config POSCBOOST = ON           // Primary Oscillator Boost Kick Start Enable bit (Boost the kick start of the oscillator)
  54. #pragma config EJTAGBEN = NORMAL        // EJTAG Boot (Normal EJTAG functionality)
  55.  
  56. // DEVCP0
  57. #pragma config CP = OFF                 // Code Protect (Protection Disabled)
  58.  
  59. // SEQ3
  60. #pragma config TSEQ = 0xFFFF            // Boot Flash True Sequence Number (Enter Hexadecimal value)
  61. #pragma config CSEQ = 0xFFFF            // Boot Flash Complement Sequence Number (Enter Hexadecimal value)
  62.  
  63. // #pragma config statements should precede project file includes.
  64.  
  65.  
  66.  
  67. #include <xc.h>
  68. #include <p32xxxx.h>
  69. #include <stdlib.h>
  70. #include <stdio.h>
  71. #include <sys/attribs.h>
  72.  
  73.  
  74. #define RS LATAbits.LATA14
  75. #define E  LATAbits.LATA10
  76.  
  77.  
  78.  
  79.  
  80.  
  81. int main(void)
  82. {
  83.     TRISB=0xFFEA;
  84.     PR1=0x9C4;    //25uSec (bemenet 100mhz)
  85.     TMR1 = 0x0000;
  86.     IPC1bits.T1IP = 2;
  87.     IFS0bits.T1IF = 0;
  88.     IEC0bits.T1IE = 1;
  89.     INTCONbits.MVEC = 1;
  90.     T1CONbits.ON = 1;
  91.  
  92.    
  93.  while (1)
  94.  {
  95.  }
  96.  
  97. }
  98.  
  99.  
  100. void __ISR (_TIMER_1_VECTOR, IPL2AUTO) T1Interrupt(void)
  101. {
  102.              szamlaloegyvillogo++;
  103.              if (szamlaloegyvillogo==120000)     {szamlaloegyvillogo=0;}
  104.              if (szamlaloegyvillogo<40000)              
  105.              {LATB=((LATB&0xFFEA) | 0x0001);}
  106.              if (szamlaloegyvillogo>=40000 && szamlaloegyvillogo<80000)
  107.              {LATB=((LATB&0xFFEA) | 0x0004);}
  108.               if (szamlaloegyvillogo>=80000)              
  109.              {LATB=((LATB&0xFFEA) | 0x0010);}
  110.              IFS0bits.T1IF = 0;
  111. }
A hozzászólás módosítva: Ápr 9, 2020
Moderátor által szerkesztve
(#) Moderátor hozzászólása LSB hozzászólására (») Ápr 9, 2020
 
Azért a [co_de] gomb használatát nem kellene nélkülözni!
(#) Rolend89 válasza Peter65 hozzászólására (») Ápr 9, 2020 /
 
Lefordítottam az egészet már magyarra. Próbálom megérteni. Köszönöm a reakciót azért!
(#) Rolend89 válasza mate_x hozzászólására (») Ápr 9, 2020 /
 
Scilab oldalon találtam (discrete pid) hasonló gondolat menetet szerintem. MATLAB videót is néztem erről. A szabályozott szakaszom átviteli függvénye kell hogy legyen, nem? Jelen esetben hőmérséklet szabályozás, de 12V-os DC motorral fújatom be a meleg levegőt vagyis a motornak kellene az átviteli függvénye?
Találtam Libstock-on egy pid_lib könyvtárat, ezt is belehetne valahogy építenem a programba? Mint kezdő azzal sem vagyok tisztában.
(#) Szemmy hozzászólása Ápr 9, 2020 /
 
Sziasztok. Segítségre lenne szükségem. Belső EEPROM , fogjuk rá hogy hogy értem , már tudtam bele írni adatot. De szükségem lenne egy külső EEPROM-ra , amibe nem csak 1-2 bit adatot írnák , hanem nagyobb , tömbökbe szervezett adat halmazt, amit a PIC-el betöltök vagy kiolvasok. A 24LC128-as eeprom-ot használnám. Sehol nem találok leírást róla. Az adatlapja szinte semmit nem ír.
Ebben szeretném a segítséget kérni . Keresgéltem itt a fórumban is már de konkrétumot nem találtam.
Videókat néztem, olvasgattam stb. Szinte semmi siker. Természetesen Assembly-ben írnám.
Hogy lehetne ezt megvalósítani előre is köszönöm a segítségeket.
(#) Hp41C válasza Szemmy hozzászólására (») Ápr 9, 2020 /
 
A Goooooogle -nak beírni: 24LC128 datasheet
A második találat a gyártó oldala.

A struktúrák, tömbök tárolása ill. visszaolvasása byte sorozat írására, olvasására lehet visszavezetni. Vagy (unsigned char*) pointerrel vagy u_n_i_o_n -nal (aláhúzások nélkül).
A hozzászólás módosítva: Ápr 9, 2020
(#) usane válasza Szemmy hozzászólására (») Ápr 9, 2020 /
 
Minden benne van az adatlapjában. Az MC-s adatlapok nem olyan rosszak. Konkréten mit nem értesz?
Viszont ha a PIC EEPROMját tudod használni akkor minek 1 külső is pláne ha csak 1-2 bithez kell?
(#) Szemmy hozzászólása Ápr 9, 2020 /
 
Nem csak 1-2 bit-hez kell. köszönöm.
(#) Hp41C válasza Szemmy hozzászólására (») Ápr 9, 2020 /
 
Milyen típust használsz? Van benne MSSI modul?
(#) Peter65 válasza Rolend89 hozzászólására (») Ápr 9, 2020 /
 
Ugyan nem engem kérdeztél, de próbálok segíteni.
A szabályzó köröd alapjele az előírt hőmérséklet, ezért minden jellemzőt ilyen alapon kell meghatározni. A motorod átviteli függvénye alatt nem tudom mire gondolsz, de szerintem neked egy olyan függvény kellene, ami a kimenő pwm jel és a motorral meghajtott hűtő ventilátor kerékkel megmozgatott levegő hőszállítását írja le, ami szinte biztosan változó paraméterű függvény lesz. Továbbá a szabályozott szakaszról semmit nem mondtál, milyen hőteljesítmény milyen hőtani jellemzőjű testet fűt, a mérés pontja és a hűtőfelület milyen kapcsolatban vannak. Röviden; ennek korrekt matematikai leírása szinte esélytelen. A gyakorlatban nem is szokás ezzel foglalkozni, hanem általában egységugrás jellel vizsgálva a szabályzó működését, addig állítják a P, I, és D paramétereket, amíg nem lesz megfelelő a működés.
Nem ismerem a tantárgyi elvárásokat, de szerintem ebben a feladatban az a lényeg, hogy megértsd a PID szabályozó működését, és annak uP-re való megvalósítását.
Én még az analóg világban szocializálódtam, így az analóg PID-ekkel találkoztam előbb, de ha az analóg áramkörök közelebb állnak hozzád, innen is el lehet indulni, és megérteni annak a kb. tucatnyi műveletnek a miértjét. Bővebben: Link , Bővebben: Link
A gyakorlati megvalósításkor (értem ezalatt a teljes algoritmus meghatározását, és annak leprogramozását) nekem általában a korlátozások megírása adja a legtöbb munkát (egy 4/4-es szabályozó esetében), ami az eddig hivatkozott irodalmakban nem nagyon van leírva. Pedig az integráló tag külön, és a szabályzó egésze is mindenképpen korlátozásra szorult a meghatározott működési tartományra.
(#) Szemmy válasza Hp41C hozzászólására (») Ápr 9, 2020 /
 
Szia. PIC16F877A-as pic használnám, és szubrutinokat raknák bele. semmi extra, egymás után hívná őket. Egy 5-ös ledkocka mintái lennének benne.
(#) Hp41C válasza Szemmy hozzászólására (») Ápr 9, 2020 /
 
RC3 és RC4 felhasználható a 24LC128 kezelésére?
Igen: MSSI modullal megcsinálható az I2C felület kezelése. Mindkét kivezetésre kb 2k2..2k7 felhúzó (Vdd -re) ellenállás kell még.

Nem: Programból kell megcsinálni az I2C felület kezelését.
Következő: »»   1115 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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