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   1125 / 1158
(#) pipi válasza Peet19 hozzászólására (») Jún 17, 2020 /
 
Nézd meg a linkeken a kapcsi rajzon a programozó csatit
(#) Peet19 válasza Hp41C hozzászólására (») Jún 17, 2020 /
 
Szia!
Egy PicKit 2 -t akartam csinálni, de annyiba kerülnek hozzá az alkatrészek mintha vennék egy zsír új PicKit 3-at . Pedig már megvan a 18f2550-es is felprogramozva. A Watt féle pk2 klón akartam megépíteni és ott van egy 12V-os zéner a Vpp lábon. Ebben az esetben mi legyen?
Csak a programozáskor nem kell kondi az MCLR lábhoz, vagy alapból nem kell? Amúgy az áramkör többi része rendeben van? Így már ráköthetném a programozóra és fel is töltené rá a progit?
(#) Peet19 válasza pipi hozzászólására (») Jún 17, 2020 /
 
Nézegettem, köszi és nagyon tetszik. Leszedtem a te rajzodat is (az internet rádióst). Ez maga a webszerver ha jól értem? A PICDEm adatlapján a 35. oldaltól lefelé van a kapcs.rajza . Ez szerinted a teljes kapcsolás? Nem néztem még át tüzetesen de ha ezt összeraknám akkor kapnék egy PICDEM-et?
http://ww1.microchip.com/downloads/en/DeviceDoc/50001623E.pdf
A hozzászólás módosítva: Jún 17, 2020
(#) usane válasza Peet19 hozzászólására (») Jún 17, 2020 /
 
Az MCLR-re alapból nem kell kondi, csak felhúzó. 100nF a táplábak közé, és egyéb szükséges helyekre (ha van), az adatlapban megadott, pl. Vcap.
(#) Hp41C válasza Peet19 hozzászólására (») Jún 17, 2020 /
 
Idézet:
„A Watt féle pk2 klón akartam megépíteni és ott van egy 12V-os zéner a Vpp lábon. Ebben az esetben mi legyen?”

A Watt féle kapcsolásban tényleg van egy 12V -os Zéner. Egyáltalán nem szerepel az eredeti rajzon.
Ha nem kell a Vpp feszültség, a PWM -et nem kapcsolja be a program, a FET2 lezár (ill. nem nyit ki). A Vdd tápfeszültség az L1 -en, D8 -onkeresztül megy a Q3 -ra. Ha magas szint kell a MCLR lábra, a Q3 nyit, ha alacsony, a Q4. Nem kerül Vdd -nél magasabb feszültség a MCLR lábra.
Idézet:
„Csak a programozáskor nem kell kondi az MCLR lábhoz, vagy alapból nem kell?”

Egyáltalán nem kell a kondenzátor a MCLR lábhoz.
(#) Peet19 válasza Hp41C hozzászólására (») Jún 17, 2020 /
 
Végig követtem a rajzot és tényleg igazad van. De akkor minek oda a 12V -os zéner?
Nem értem teljesen a rajzon ezt a VPP részt. Most olvasom a PK2 adatlapját és azt mondja, hogy (bemásolom):
Idézet:
„5.2.1.6 VPP programozófeszültség előállítása
A programozófeszültség 5V-os rendszerek esetén 13V, 5V míg 3,3V-os rendszer esetén 3,3V.
A PICkit 2 tartalmaz egy diszkrét elemekből felépített PWM vezérlésű Step Up típusú DC-DC
feszültségkonvertert.”

Még mindig nem teljesen tiszta. Azt mondod hogy a VDD-nél nagyobb feszültséget nem ad a VPP.
Ha a PK2 5V-al működik (PC USB), akkor a VDD is annyi lesz. Ha a VPP is max 5V, akkor ha a céláramkör 5V-os vagyis 12V-os programozófeszültséget igényel akkor a belső Step Up konverter megemeli a VPP feszültségét? De akkor hogy működik ha 3.3V-os a rendszer mint jelen esetben?

usane: köszi, értem. Leveszem a kondit a MCLR lábról.
(#) Hp41C válasza Peet19 hozzászólására (») Jún 17, 2020 /
 
Az eredeti PICkit2 -ben van egy Vdd_target (cél áremkör Vdd tápfeszültség) -et előállító egység. Sajnos néhány klónból kihagyták pl. Szilva féle klón.

Olyan klónnal, amiben nincs meg ez a fokozat, csak külső egységgel (Vdd stabilizátor és jelvonal szinthatároló) lehet 18FxxJ (5V -ná alacsonyabb feszültségű) kontrollert programozni. Egy másik lehetőség, a cél rendszer tápfeszültségét használni a programozás alatt - ez a módszer működik ilyen klónnal, de oda kell figyelni...

Olyan klónnal, amiben megvan ez a fokozat, lehet 18FxxJ (5V -ná alacsonyabb feszültségű) kontrollert programozni.
A Watt féle klónban U2 és FET1 - FET4 állítja elő az USV 5V -jából a kívánt Vdd feszültséget.
FET1 - FET4 közös drain pontjára csatlakozik L1, így a fent leírtak alapján a MCLR lábra legfeljebb a kívánt Vdd feszültsége kerülhet.


Idézet:
„Ha a PK2 5V-al működik (PC USB), akkor a VDD is annyi lesz. Ha a VPP is max 5V, akkor ha a céláramkör 5V-os vagyis 12V-os programozófeszültséget igényel akkor a belső Step Up konverter megemeli a VPP feszültségét?”

Ha olyan típust programozunk, aminek kell a magasabb Vpp feszültség, a PICkit2 bekapcsolja a PWM modulját, vezérli a FET2 -t, FET2, L1 és D8 előállítja a Vpp feszültséget, amit R7-- (R8 + R31) osztó segítségével mér és szabályoz. Ezt a feszültséget kapcsolja a Q5 és Q3 a programozandó kontroller MCLR lábrára.
A hozzászólás módosítva: Jún 17, 2020
(#) Peet19 válasza Hp41C hozzászólására (») Jún 17, 2020 /
 
Értem most már, köszönöm. Akkor a rajzomon a VPP-t közvetlen a MCLR lábra kössem, vagy az R1 mögé? Még annyit, hogy a program feltöltésénél a külső tápot le kell kapcsolni?
(#) Hp41C válasza Peet19 hozzászólására (») Jún 17, 2020 /
 
Idézet:
„Akkor a rajzomon a VPP-t közvetlen a MCLR lábra kössem, vagy az R1 mögé?”

A VPP-t közvetlen a MCLR lábra kell kötni.
(#) usane válasza Peet19 hozzászólására (») Jún 17, 2020 /
 
Közvetlen az MCLR lábra. Ha nincs kondi akkor a 100 ohm sem kell oda. Az a kondiból folyó áramot szabályozná. Látom, hogy az adatlapon ott van a kondi mint ajánlás, de egy jól tervezett áramkörben felesleges. Én sosem használtam és mégsem volt emiatt egy áramkörömben sem reset. Na meg ki is lehet kapcsolni a legtöbb PIC-ben.
(#) pipi válasza Peet19 hozzászólására (») Jún 17, 2020 /
 
Hali!
Kondi akkor spórolható, ha a resetet a konfig bitben belsőre állítod.
Én a készülékeket a saját tápjukról járatva programozom, de választható a pickiteknél hogy saját táp, vagy a pickit látja el táppal, de akkor figyelni kell a teljes áramköröd tápigényét el kell bírja a pickit
(#) pipi válasza Peet19 hozzászólására (») Jún 17, 2020 /
 
Igen.
(#) Peet19 válasza usane hozzászólására (») Jún 17, 2020 /
 
Ok. De ha szeretnék egy külső resetet akkor is elvegyem a kondit? Ez esetben az R1-et otthagynám.
Hp41C: köszönöm.
pipi: Köszi neked is, és ha úgy csinálom ahogy a rajzon?

rajz2.png
    
(#) Hp41C válasza Peet19 hozzászólására (») Jún 17, 2020 /
 
A panelre tervezd rá a kondenzátort, de egyenlőre ne ültesd be. Csak akkor, ha tényleg szükség lesz rá.
(#) pipi válasza Peet19 hozzászólására (») Jún 17, 2020 /
 
Megoszlanak a vélemények én már leírtam az enyémet, rajzot küldtem, régóta így csinálom a pices áramköreimet, be van ültetve a kondi+felhúzó+soros ellenállás az mclr-en, helyenként reset gomb is a kondival párhuzamoan. Prog csati rádug, panel saját tápról programoz.
Amúgy mindent kispórolhatsz, ha belső resetre programozod (de azért egy felhúzó javasolt).
(#) Peet19 válasza Hp41C hozzászólására (») Jún 17, 2020 /
 
Oké, úgy csinálom.
Amúgy mennyi áramot fogyaszthat max? Jól tudom hogy kb: 200-300mA? A saját tápját is bele akarom tervezni csak tudnom kéne mekkora áramra számíthatok. Esetleg az LT1129CST-3.3 megfelelne hozzá?
Húúú most néztem meg az árát. Inkább ez LF33CDT.

pipi: köszi tanulmányozom a rajzaidat sokat tanulok belőle. Egyenlőre nekem már az is elég ha annyit megcsinálok hogy fel tudjam tölteni programmal és azt csinálja amit megírtam.
Még az assemblyt is jobban meg kell ismernem, inkább C-ben programozok ezért is választottam 18f-est. Plusz még azért is tetszett mert van rajta ethernet.
A hozzászólás módosítva: Jún 17, 2020
(#) Hp41C válasza Peet19 hozzászólására (») Jún 19, 2020 /
 
Miért LF33, ami még hűteni is kell ??? Miért nem STDN-3P-3V3.
(#) nedudgi válasza Hp41C hozzászólására (») Jún 19, 2020 /
 
Akárhogyan számolom, legalább két üveg sör a különbség.
(#) Hp41C válasza nedudgi hozzászólására (») Jún 19, 2020 /
 
Legalább az egyik sör ára elmegy a hűtőbordára...
(#) DJozso hozzászólása Jún 23, 2020 /
 
Sziasztok! Segítséget szeretnék kérni. Az egyik új projektemhez szeretnék használni egy 18F2550 PIC-et. Ez ugye "tud" 2 PWM generátort. MikroC-be írtam neki egy egyszerű programot, ami egy poti értékét konvertálja a led fényerejévé. Ez működik is. A baj, hogyha a "Config"-ba bekapcsolttatom a Timer0 időzítőt perifériás megszakítással, akkor a PWM generátorok leállnak. A PIC pdf-je szerint nem használja egyik PWM generátor se a Timer0-t. Akkor mi lehet a baj?
  1. unsigned int ADC_One;
  2. unsigned short PWM_Ertek;
  3.  
  4. void Config(){
  5.  
  6.    TRISA = 0xFF;
  7.    PORTA = 0x00;
  8.    TRISB = 0b11110001;
  9.    PORTB = 0x00;
  10.    TRISC = 0b01111001;
  11.    PORTC = 0;
  12. //   T0CON         = 0x80;   //10mS  Timer0
  13. //   TMR0H         = 0x15;
  14. //   TMR0L         = 0xA0;
  15. //   INTCON.GIE  = 1;
  16. //   INTCON.TMR0IE  = 1;
  17.    ADCON0 = 0b00000001;    //AD bekapcsolása
  18.    ADCON1     = 0b00001101//AN0 és AN1 analógra állítása
  19.    PWM1_Init(5000);
  20.    PWM2_Init(5000);
  21.    PWM1_Start();
  22.    PWM2_Start();
  23. }
  24.  
  25. void main() {
  26.     Config();
  27.     PORTB.F1 = 1;   // A ledek anódjára ad "+" tápot
  28.     while(1) {
  29.        ADC_One = ADC_Read(1);
  30.        while (ADCON0.F1 == 1);
  31.        PWM_Ertek = ADC_One/4;
  32.        PWM1_Set_Duty(PWM_Ertek)//Első Led katódját hajta PWM jellel
  33.        PWM2_Set_Duty(255-PWM_Ertek);} //Másik ledek katódját hajta PWM jellel
  34. }
(#) icserny válasza DJozso hozzászólására (») Jún 23, 2020 / 1
 
Timer0 megszakítását ki és hol kezeli?
(#) DJozso válasza icserny hozzászólására (») Jún 23, 2020 /
 
Uh, basszus kulcs. Milyen igazad van... Köszönöm, és nagyon szégyenlem magam...
(#) Hp41C válasza DJozso hozzászólására (») Jún 23, 2020 / 1
 
A micro C PWM könyvtárában van egy kis filozófiai hiba.
Ha egy bizonyos frekvenciát állítasz be a PWMx_Init() függvénnyel, az aktuális órajelet figyelembe véve kijön valamilyen érték a PR2 -re. A PWMx_Duty() függvény pedig egy 0 -255 közötti értéket vár bemenetnek és azt gondolkodás nélkül beírja a CCPRxL regiszterbe.

Csakhogy, ha CCPRxL > PR2, a PWM kimenet nem változik.

Legyen FOSC= 40MHz, a PWM frekvencia 5kHz (PWM1_Init(5000)), akkor az órajelet 800 -zal kell osztani. Fosc / 4 / 16 / 250 formulával kijön az 5kHz. ebben az esetben a kitöltés nem mehet 249 fölé. Azaz 100% nem 255 lesz, hanem csak 250.

Ahhoz, hogy 255 legyen a 100%, olyan PMW frekvenciát kell kiválasztani, ami PR2 -be 255 beállítást eredményez.

Ugye mennyire átlátható egy C függvénykönyvtár?
(#) Peet19 válasza Hp41C hozzászólására (») Jún 23, 2020 /
 
Jó lesz, köszi, nem is láttam.
Még egy kérdésem lenne, hogy a GPIO lábakat lehet használni analóg bemenetként pl. a PIC12F509 -en?
(#) Bakman válasza Peet19 hozzászólására (») Jún 23, 2020 /
 
Abban nem, nincs benne ADC modul.
(#) Peet19 válasza Bakman hozzászólására (») Jún 23, 2020 /
 
Értem, köszi.
(#) DJozso válasza Hp41C hozzászólására (») Jún 25, 2020 /
 
Huha. Van mit pótolnom. Azért használom a mikroC-t, mert kevesebb hardver ismerettel is lehet csodát csinálni, csak ha "beüt a krakk" akkor fogalmam sincs mi okozza, mert nem látom át a háttérbe dolgozó könyvtár tartalmakat. Én úgy tervezem, hogy ezen keresztül próbálom a lehető legtöbb hardver ismeretet összeszedni, majd ezután ugranék bele valami "hardver közeli"programnyelvbe.
Minden esetre köszi a tájékoztatást, ezzel is fejlődik az ember.
(#) slimcolt hozzászólása Jún 26, 2020 /
 
Sziasztok,

Nekem egy olyan kérdésem lenne, hogy az EZEN az oldalon található UART minta programban lévő programrészlet pontosan hogyan működik?

Ez:

void UART_Print(const char *data)
{
uint8_t i = 0;
while (data[i] != '\0')
UART_PutC (data[i++]);
}

Igazából az érdekelne, hogy a data[i++] művelet pontosan mit is csinál?
Ha i=0 induláskor, akkor kiírja a data[0]-t majd megnöveli eggyel az indexet? Mert ha egy sztringet akarok kiíratni, akkor elvileg azt tömbként kell értelmeznem és az első eleme a 0-n van. Vagy nem?
(#) Hp41C válasza slimcolt hozzászólására (») Jún 27, 2020 / 1
 
szia!

A C nyelvben egy struktúra neve egy rá mutató mutató is egyben. A char *data a paraméter listában azt jelzi, hogy egy char típusra mutató mutatót vár. A data[i] a megkapott mutatóval történő indexelés. A data[i++] pedig azt írja elő, hogy ki kell olvasni a data[i] indexeléssel az értéket, és ez után az i változót növelni kell a mutatóval megcímzett objektum méretével (ebben az esetben 1 -gyel).
Ebben a ciklusban csak két felesleges összeadás van előírva.
  1. void UART_Print(const char *data)
  2. {
  3. while ((*data) != '\0') UART_PutC(*(data++));
  4. }

Itt magát a megkapott mutatót használjuk fel, az indexelés helyett a mutatót irányítjuk a következő karakterre.
A hozzászólás módosítva: Jún 27, 2020
(#) icserny válasza slimcolt hozzászólására (») Jún 27, 2020 / 1
 
Az egyszerű(bb) válasz:
a data[i++] címzéssel előbb előveszi a data[i] tartalmát, majd utána megnöveli az i indexet (postincrement).
Következő: »»   1125 / 1158
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