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 . 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?
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 é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).
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
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 |