Fórum témák
» Több friss téma |
C-ben van pár lehetőség.
1: strstr -rel megkeresed az "előtagot" ,ha megvan,akkor onnantól pakolás 1 stringbe. Ahogy eléred a space (0x20) ,akkor onnan elkezded másik stringbe pakolni,ect. De azért strlen,sizeof -ot használd,nehogy a végtelenségig olvasgasson,bár ha tényleg rendes string,akkor a NUL(0x00)-ot is elég figyelni
Szia Zsombor!
Amint ígértem, összeraktam a panelt, hogy lásd, hogy működik! Mivel üres panelom már nem volt, a kedvedért egy már készre szerelt áramkörből kiszedtem a kütyühöz felesleges alkatrészeket, hogy ne zavarjanak meg téged. Itt nézheted meg! (A videó vége sajna lemaradt, mert betelt az SD kártyám.)
Értem. Simán csak bekapcsolni próbáltad, hogy akkor világít-e? ? Egyszerre csak egy ledet.
Mivel programozod? Fejlesztő környezet? Nem hiszem, hogy a gyári PIC hibás.
Sajnos az sem hozott eredményt, hogy egyszerre csak 1 LED világít. PICKIT2-n keresztül programozom, MPLAB X IDE v4.01 fejlesztőkörnyezetben és a legfrissebb XC8 fordítót használom. A PIC biztosan nem hibás, a hiba szoftveres. Itt tenném fel a kérdést, hogy a beforrasztott áramkörben miért nem lehet programozni ezt a típusú PIC-et? Mindig ki kell forrasztanom programozáshoz, így real time debuggra sincs esély, ami nagyon megnehezíti a dolgot. Nem ez az első munkám PIC-el. Eddig semmilyen problémám nem volt.
Ha minden igaz teljesen pergés mentes de marattam a felengedéskor akció elvnél. Idézet: „Itt tenném fel a kérdést, hogy a beforrasztott áramkörben miért nem lehet programozni ezt a típusú PIC-et?” Minden PIC -et lehet az áramkörbe beforrasztva programozni. ICSP = In Circuit Serial Programming... Ahhoz, hogy működjön, néhány dolgot be kell tartani: - A PGD és PGC lábakat nem szabad jelentősen terhelni, nem szabad nagy kapacitásra kötni. A programozónak elegendően gyorsan kell tudnia vezérelni. - A MCLR láb egy ellenállással legyen a Vdd -re húzva. Ha bemenetnek használjuk, a meghajtásának ki kell bírnia a 13V -os Vpp feszültséget is. Amennyiben ez nem lehetséges, egy jumperrel le kell tudni választani. - Két táplálási módszer közül kell választani: -- A programozó látja el a panelt Vdd feszültséggel. Figyelembe kell venni, hogy max 20..30mA -rel terhelhető a PICkit2/3. Nem biztosítják (kellő időben) a tápot, ha jelentős kapacitással van szűrve. -- Saját táplálás melletti programozás. Ügyelni kell a programozó beállítására. - Figyelembe kell venni, hogy a panelen a kontroller oszcillátora elindul (még a külső is), ezáltal elindulhat a program végrehajtása. - Konfiguráció: -- Lehetőleg hagyjuk meg a MLCR lábon a MCLR funkciót, illetve a PGC és PGD lábakat hagyjuk szabadon. -- Ha mégis felhasználjuk a MCLR lábat bemenetnek, legalább a Power On Timer - t hagyjuk bekapcsolva. -- Egyes típusokon a T1 oszcillátor a programozó lábakon van. A többinél is megtehető, hogy kimenetté állítjuk. Ha a MCLR funkció és/vagy a Power On Timer le van tiltva, a program elején (mielőtt a kritikus beállításokat megtenné) helyezzünk el néhány ms várakozást. - Ha ez még mindig nem lehetséges, akkor használhatjuk a Vpp First Entry módszert - de ebben az esetben a panelt a programozónak kell elleátni Vdd feszültséggel. - A legfontosabb a végén: ki kell alakítani a szabványos ICSP csatlakozót.
Sziasztok
Párnapja gondolkodom hogy lehetne azt megvalósitanni hogy egyik led fényerejét nőveljem másikét csöketnem ez azért lenne jó mert rgb lednél saját szint tudnék keverni nem csak 7dbot. Elrendezésem minden szinten 8db RGB ledem van 5 darab szintem. És itt jön egy kérdés PWM és idö multiplexelés egyidöbe mennyire szerencsés?? Fizikai elrendezésem 1. shiftregiszterem a piros szinek 2. shiftregiszterem a zöld szinek 3. shiftregiszterem a kék szinek.Blank lábakat pwmeztetem külön külön. Ti hogy oldanátok meg azt hogy minden egyes lednek belehessen állítani a fényerőt idömultiplexeléssel együt? Segítségeteket előre köszönöm.
Ja, bocs, úgy tűnik pillanatnyi rendszerhiba lehetett, hogy nem küldte el az üzenetemet...
De lehet szoftveresen is.
Egy példa: a multiplex miatt minden LED-nek (vagyis szintnek, vagy akárminek) jut egy időszelet. Ez az időszelet lesz a 100%. És ennek a kitöltését változtatod. Hp41C megoldása azért elegánsabb, mert így tehermentesíted a PIC-et erőforrás szempontból, meg valószínűleg nagyobb fényerőt tudsz kinyerni (és még FET-ek sem kellenek).
Ha nem kell túl finom fényerő változtatás, és elég magas a multiplexelés frekvenciája, akkor megteheted, hogy egyes időszeletekbe bekapcsolod az aktuális ledet, vagy éppen nem kapcsolod be. Ha mondjuk 8 multiplexelési ciklus még 10msec (100Hz) alatt van, akkor 1/8-os lépcsőkben könnyen állíthatod így a fényerőt.
Én ezt valahogy úgy oldanám meg, hogy minden csatornához rendelnék egy számot 0 és 15 között (ez a fényerő). Aztán egy timert interruptra programoznék pl. 0,5 milisec-re. Minden alkalommal növelnék egy regisztert 15-ig majd 16-nál nulláznám (8 milisecenként körbejár). Az interruptban ennek a regiszternek az értékéből kivonnám sorban a fényerő regiszterek értékét, és a carryt kiraknám az adott portra. Az interrupt lehet gyorsabb is, ha kell. Most így este ez elegánsnak tűnik, szimulátoron próbáld ki. Az Interrupton kívül meg gombot olvasol, regisztert állítasz stb.
A hozzászólás módosítva: Szept 27, 2017
Időmultiplex úgy van beállitva hogy 1ms alat 5 szintet járbe vagy is egy szint 200us.
Sziasztok, az lenne a kérdésem, hogy az alábbi linken található programozó szerintetek használható PIC programozáshoz vagy felejtsem el ezt a verziót, esetleg próbált már valaki ilyet?
Programozó link
Nagyon szépen köszönöm a leírást. Ezek után csak így fogom megtervezni a kapcsolásokat. Rengeteget segít az ICSP. A LED-ekkel kapcsolatban pedig tovább vizsgálódok.
Nekem van egy ilyenem és eddig nem volt vele gondom.
Amatőr szinten használom.
Én is így vettem egyet hobbi célra kb. 2 éve. Bár csak 16F kontrollereket programoztam, de mindig szó nélkül tette a dolgát. Letöltöttem hozzá a PICkit3 v3.10 alkalmazást, így több PK2 funkció (pl. Vpp first) is elérhető.
Az ott komolyan egy pickit3 3 ezer huf-ért ingyenes szállítással? Mi a fene történt, ami leötödölte az árát?
Idézet: Nem, ha jobban megnézed, ezen nem Microchip logo van, hanem W, mint Wolfgang (vagy Michel a francia...). „Az ott komolyan egy pickit3 3 ezer huf-ért ingyenes szállítással?”
Az, hogy nem eredeti. És lehet, hogy a klónnak is a klónja. Ha megveszi valaki és működik, akkor az öröm és boldogság. De az ilyeneket mindig fenttartásokkal kell kezelni, senki sem tudja mi maradt ki belőle, vagy mit módosítottak rajta.
A hozzászólás módosítva: Szept 29, 2017
Idézet: „senki sem tudja mi maradt ki belőle, vagy mit módosítottak rajta” Nem a kihagyás vagy módosítás a probléma. Szerintem nem veszik a fáradtságot, hogy azzal szórakozzanak. 1:1-ben leklónozták és kész.Bár még nem szedtem szét egyet sem. Nyákot meg a kínaiak is tudnak olyat gyártani mint más. A buktató itt a beültetett alkatrészek eredetisége inkább. De nem is azért drágább az eredeti hanem mert rajta az a vacak "M" betű. A hozzászólás módosítva: Szept 29, 2017
Ha 1:1 leklónozzák a hardvert, azért beperelhetik őket. Valójában már a nevet sem lenne szabad használniuk, bár arra lehet, hogy találtak a jogászok valami kiskaput.
Nos ebben igazad van, meg az alkatrészek különbözősége miattt is bele kellett nyúlni, de amennyire a képről meg tudom állapítani darabra eléggé hasonlít. A lényeges alkatrészek helye nem változott a többit meg kicsit eltologatták footprintek-hez igazodva.Persze ahogy mondod, lehet hogy a szerzői jogok miatt módosították, de az is lehet, hogy ennyi már elég, hogy megkerüljék, nem tudom.
Az enyémen eredeti feliratok vannak, egy picit drágább volt, mint a "egyéb"PIKkit 3 . Akkor eredetiként szerepelt a hirdetésben is. Egyébként ez egy fekete(piros) doboz, mindegy mi van benne, ha az jön ki, amit várok...
A hozzászólás módosítva: Szept 29, 2017
Jó pár alkalommal volt már komoly vita itt a fórumon az assemblysek és az egyéb programnyelveket használók között.
Nos ezek a "magas szintű"-nek nevezett programnyelvek most verték ki nálam végképp a biztosítékot. Hosszú évek óta használom az Unitronics cég PLC-it. Programozói szemmel nézve a leg könnyebben használható fejlesztői környezettel rendelkeznek. Mint mindent, ezt is folyton frissítgetik, akárcsak a készülékekben lévő szoftver alapot. Most sikerült csúcsot dönteniük. Egy olyan program, ami assemblyben egy PIC18-ra írva maximum 4000 sor lenne, olyan terjedelmes kóddá kerekedett, hogy a PLC ciklusideje elérte a 40 milisecundumot. Ilyen lassú programot PIC-re még sosem sikerült írnom. Mindezt megfejelte azzal, hogy a program a futása során többször hibázott. Adott bitek nem kapcsolódtak be, vagy éppen ki, nem töltödött be egy változóba egy érték, mindez nem következetesen és mindíg, csak néha. A hibát keresve, arra a pontra ahol hibázott. Betettem egy 10 másodperces időzítőt, ami megállította a program futását, hogy online lássam, mit ront el. Látszatra semmit, és a késleltetés lejártával rendben tovább ment a program. Tehát benne hagytam ezt a megállítást, csak lerövidítettem amennyire csak lehetett. Azóta működik. Elfárad a PLC? Pihennie kell egy kicsit? Nem értem. Miképp azt sem, hogy mitől ilyen lassú.
Az nem egy programnyelv hibája, hanem a dilettáns fejlesztőké
Sziasztok.
Olyan érdekes hibába ütköztem megint a 74hc595 ötnél amikor C-ben beállítom a 100% kitöltést akkor elkéne sötétedni mindennek de valamiért kb 5% még villágítanak a ledek ötlet miért kapom ezt a jelenséget?? Nincs semmiféle felhúzó ellenállás.
Az egy latch, aminek a kimenete vezérelhető. Írj egy rövidke programot, amivel beállítod csak azt, hogy az outputot kikapcsolod, mérj is rá, hogy tényleg ki van kapcsolva, és nézd meg úgy a ledeket. Ha akkor is világítanak, akkor valamit nagyon furcsán kötöttél. Ha nem világítanak, akkor valamit a végeredményben félreprogramoztál. Elsőként a hiba jellegét kellene megállapítani.
|
Bejelentkezés
Hirdetés |