Fórum témák
» Több friss téma |
Nézd meg a linkeken a kapcsi rajzon a programozó csatit
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 ![]() 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?
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
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.
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.
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.
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
É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?
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.
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.
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
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?
A panelre tervezd rá a kondenzátort, de egyenlőre ne ültesd be. Csak akkor, ha tényleg szükség lesz rá.
Megoszlanak a vélemények
![]() Amúgy mindent kispórolhatsz, ha belső resetre programozod (de azért egy felhúzó javasolt).
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úúú ![]() pipi: köszi tanulmányozom a rajzaidat ![]() 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
Miért LF33, ami még hűteni is kell ??? Miért nem STDN-3P-3V3.
Akárhogyan számolom, legalább két üveg sör a különbség.
![]()
Legalább az egyik sör ára elmegy a hűtőbordára...
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?
Timer0 megszakítását ki és hol kezeli?
Uh, basszus kulcs. Milyen igazad van... Köszönöm, és nagyon szégyenlem magam...
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?
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?
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. ![]()
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? ![]()
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.
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
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). |
Bejelentkezés
Hirdetés |