Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Valahogy így:
A hozzászólás módosítva: Dec 25, 2012
Pedig a main-ben ott van az engedélyezése.
enable_interrupts(int_rb); Ha le akarod tiltani, másold arra a helyre, ahol tiltani kell a B port megszakítás engedélyezését: disable_interrupts(int_rb); Persze, utána újra engedélyezned kell, hogy a következőnél már reagáljon.
És tényleg ott van, de nagy vakló vagyok. No eddig úgy néz ki elmúlt a hangosodásos jelenség.
Viszont a pattogás nem, szóval ott ténylég más gond lesz. Az I2C értékek között küld egy ack bitet az IC, viszont ez nincs megvárva, vagy ilyesmi, ez nem lehet gond? Egy busz órajelciklus alacsony szint, azt hiszem az ack. Benjami köszi. A hozzászólás módosítva: Dec 25, 2012
No a megszakítás letiltva az összevisszaság teljesen megszűnt, késleltetést 100us-re állítottam, de az adatküldés után, mivel túl gyorsan nem kaphatja az adatot az IC, persze, ha valaki tudja, hogy pontosan milyen gyakran kpahat új infót az IC megallgatom . A rotary-nál volt még kis probléma, mert, ha egy állapot sem volt jelen (túl gyorsan tekertem) akkor össevissza állítgatta a hangerőt, függetlenül attól, hogy melyik irányba tekertem.
Most bármilyen gyorsan tekerem, bármerre, mindíg veszi a lapot nem hangosodik összevissza, lehet gyepálni, mint a gyárit. Most van kész a program, köszi a segítséget mindenkinek. A pattogással pedig megyek az erősítős topikba csak, hogy watt is nyugodtan aludhasson.
Azt hogy milyen sűrűn frissítheted a hangerőértéket könnyű letesztelni. A főprogramhurok végére (a data=0 után) tegyél be várakozási időt, akár 100msec-et is. Ekkor ritkábban fogja a hangerőt állítgatni. Az encoder-be ez nem szól bele, mert az úgy is megszakításból történik.
A megszakításba viszont továbbra sem tennék várakozást.
Most már ott van a várakozás, a megszakításból kivettem, igazad volt, most minden teljesen normálisan reagál, működik (happy vagyok :jump A 100ms nagyon sok, mert gyors hangerőcsökkentéskor túl lassú. a 100us-el most kb realtime-nak érezni a dolgot és még nem bolondul meg az ic. Ha túl gyorsan megy az adat, akkor csattok kattog, eleinte pedig nem volt benne a data=0-1 megoldás és folyamatosan küldte, ahogy bírta a pic, na akkor durva hangja volt. Viszont a mostani recsegésnek is ugyanolyan hangja van, nem a szokásos hangerőváltozásos IC-s huppanás, hanem ilyen digitális hangú tüske, emiatt gondolok az adatküldés pontatlanságára..
Olyan dolog történt, hogy alacsonyra állítottam az SDA, SCL kimeneteket, tehát csak adatküldéskor van magas szinten, így most jelentősen csökkent a pattogás, de még mindíg előfordul.
Szóval a programban van a hiba az biztos.. Ötlet, javaslat?
Szia.
Nekem még nem volt szükségem szoftveres I2C-re, de az alapállapotnak szabvány szerint nem magas szintnek kell lennie?
Elméletileg igen, de gyári eszközt méregetek referenciának és ott is low-on van alapban. Most is bevált valamennyire,de még mindíg nem az igazi.
Sziasztok!
Kérdezni szeretnék. Adott a csatolt kapcsolás-részlet. A step-up-al csak egy grafikus LCD lenne meghajtva, 1mA-es fogyasztással (muszály neki az elem fogyástól független fix táp, hogy a kontraszt állandó maradjon), tehát maga a step-up elmegy simán PIC-lábról, és így teljesen lekapcsolható, amikor nem szükséges. Magyarul az "LCD_VCC_SHD" és az "LCC_VCC_3" is a PIC32MX-nek 1-1 IO lába. Működik is így a kapcsolás, de felmerült bennem, hogy a bemeneti 68µF-os kondi (C31), gondot okozhat. Belül korlátozva van a PIC IO lábainak árama és emiatt nem lesz gond? Vagy Elbírja rövid ideig a túláramot, amíg feltölt a kondi és utána nincs gáz? Vagy Csak a szerencsén múlt, hogy eddig nem füstölt el? Mit javasoltok? Soros ellenállás? Mondjuk egy 150 Ohm-os ellenállás (VDDmax=3V esetén) lekorlátozná 20mA-re az áramot. (Nem tudom, hogy befolyásolná a működést). Köszönöm! Idézet: „Csak a szerencsén múlt, hogy eddig nem füstölt el?” Leginkább. Már pár nF-ot sem javasolt direktbe rákötni egy PIC kimenetére, 68µF-ot meg pláne nem. Nem értem, hogy miért nem közvetlenül kötöd a tápra az áramkör bemenetét. Elég lenne a Shutdown lábat vezérelni a PIC lábáról.
Sajnos nem, mivel a PMEG3005AEA átengedi a delejt akkor is, ha a MAX856 ki van kapcsolva... sajnos az előző panelen ebbe már belefutottam. De akkor egy 150 Ohm-os sorba kötve a problémát orvosolja, nem?
Ja, persze, minden step-up ilyen.
Leginkább egy Logic-level P MOSFET vagy egy PNP tranzisztor orvosolná a dolgot. Az ellenállás "megoldja" ugyan a PIC problémáját, de kérdés, hogy mennyivel csökken miatta le a feszültség a bemeneten, és ez mennyivel rontja az áramkör hatásfokát. Egy próbát megér. A hozzászólás módosítva: Dec 28, 2012
Hát jó kérdés, hogy mekkora lehet az ekvivalens ellenállása a kapcsolásnak, amivel a korlátozó ellenállás feszültségosztót alkot. Illetve ugyanez a probléma ez esetben más PIC láb esetén is. Egy másik PIC lábbal 2 műveleti erősítőt hajtok meg, rajtuk 100nF-osokkal. Oda is be lehet tenni éppen egy soros ellenállást, de akkor az feszültségosztó lesz és a műveleti erősítőkre kisebb feszültség jut. Vajon mennyivel? Mekkora "belső" ellenállással lehet számolni egy műveleti esősítő tápja és földje közt? FET-es kapcsolás már nem nagyon férne el a panelen, mert csumig van pakolva... tulajdonképp már kész is van a NYÁK-terv csak még nem adtam le gyártásra... egy ellenállást még be tudok zsúfolni, de mást már igen nehezen...
A hozzászólás módosítva: Dec 28, 2012
Idézet: „Mekkora "belső" ellenállással lehet számolni egy műveleti esősítő tápja és földje közt?” Ez az áramfelvétele alapján dől el. Ha éppen 1mA a fogyasztása, és 3V-ot adsz neki, akkor 3kohm-nak megfelelő "belső" ellenállása van éppen. Ha valami elemes eszközökbe szánt, ultra low-power, uA-eket zabáló cucc, akkor röhögve kéne így működnie. Ha egy standard, több mA-es IC-t használsz, akkor gondok lehetnek a működéssel. Idézet: „FET-es kapcsolás már nem nagyon férne el a panelen, mert csumig van pakolva...” Két 0603-es ellenállás meg egy SOT23-as FET azért csak beférne valahova... A hozzászólás módosítva: Dec 28, 2012
Ezek vannak a vonalon (nem is két, hanem 3 OPAMP):
INA126, ha jól értem az adatlapot, max 200uA TL971, ez 2-3 mA MCP601, ez pedig 300uA Ez más sok, igaz? Mi lenne, ha egy PIC lábról 150Ohm-os ellenálláson keresztül kapcsolnám be ezeket a fogyasztókat, majd, egy kis idő múltán egy másik PIC lábról kapná meg a "fogyasztási" áramot, amin már nincs ellenállás, hanem közvetlenül megy az adott tápvonalra? Mint egy lágyindítás... vagy van jobb ötleted esetleg? A hozzászólás módosítva: Dec 28, 2012
Használd légyszives a LINK gombot a válaszablakban!
Ha látnád a a panelt... De mondjuk elképzelhető, hogy be tudom préselni... mint ahogy egy 0805-ös ellenállást is kínlódva, de be tudnék tenni valahová valószínűleg.... Csak szívesebben mennék a legegyszerűbb megoldás irányába, mert olyan szinten zsúfolt a panel, hogy így is fél órás meló lesz ellenállásonként kb.
Sziasztok!
Találkoztatok olyan problémával, mikor az adatlap egy utasítás végrehajtási idejét 1cyc adja meg, de valójában 2cyc ideig tart neki? Egy PIC24EP64GP202 lenne szó. /FOSC=100MHz, FCY=50Mhz , 1cyc(20ns)/ Az adatlap szerint a BSET, BCLR, NOP utasítások 1cyc ideig tartanak. Oszcilloszkópon megmérve a BSET, BCLR 2cyc ideig a NOP 1cyc ideig tart. A mellékelt képekhez az alábbi utasítások tartoztak. Kep1: asm("BSET 0xE15, #7"); asm("BCLR 0xE15, #7"); Kep2: asm("BSET 0xE15, #7"); asm("BSET 0xE15, #7"); asm("BCLR 0xE15, #7"); Kep3: asm("BSET 0xE15, #7"); asm("nop"); asm("BCLR 0xE15, #7");
Az SFR bit operation 2 ciklusos utasítás.
Ha 1 ciklus eltéréssel kéne változtatni a bit értékét, akkor megpróbálhatod nem bit művelettel változtatni a bit értékét (ez ugyanis két buszművelet), hanem eltárolod egy-egy CPU regiszterbe az adott memóriacím tartalmának két verzióját (bit = 0 és bit = 1), és a megfelelő regiszter tartalmát írod be oda. A hozzászólás módosítva: Dec 30, 2012
Köszönöm válaszod.
A PIC18 családnál egy PORT lábát 1cyc időre be lehetett kapcsolni. Az mplab xc16 fordítóban az asm utasítások integrációja nem a legjobb (lehet hogy csak a free miatt). Gyakorlatilag nem tudom megoldani, hogy egy portláb aktív H idejét 1cyc lépésekben tudjam állítani. Egy 70MIPS PIC-nél max100ns pulzus szélességet a portlábon 7 lépésben tudnám állítani de mivel 2cyc így csak 3 lépés. Idézet: „Gyakorlatilag nem tudom megoldani, hogy egy portláb aktív H idejét 1cyc lépésekben tudjam állítani.” PIC32-nél ez működik: (mondjuk ott vannak jobb megoldások is, pl. LATASET, LATACLR)
Szerintem ez a módszer itt is menne, a "beírás" művelet 1 ciklus alatt végrehajtható, ha a portup/portdown regiszterben van, akkor simán lehet így 1 ciklus hosszú magas jelet kiadni.
Köszönöm ismét a segítséget.
Első ránézésre meglepődtem a kódon, amit írtál. Ha jól értelmezem a W14,W15-be tárolja el a fáj regiszter címét amiben a két érték van.
Nálam két művelet a portup/portdown
Viszont a fordító optimalizálási szintjét 0-ról 1-re állítom, akkor 1 ciklus alatt végrehajtja.
Így már működik az 1 ciklus hosszú magas jel. Azért a free fordító sokszor megtréfálja az embert. Örülnék egy pro változatnak A lényeg hogy működik a megoldásod, amit nagyon köszönök.
Ne haragudj _vl_, semmiképpen nem szeretnék "erőszakoskodni", csak azt hiszem, az egyik felvetésem elkerülte a figyelmed, ezért ideírom újra.
Lehet, hogy hülyeség, de: Idézet: „Mi lenne, ha egy PIC lábról 150Ohm-os ellenálláson keresztül kapcsolnám be ezeket a fogyasztókat, majd, egy kis idő múltán egy másik PIC lábról kapná meg a "fogyasztási" áramot, amin már nincs ellenállás, hanem közvetlenül megy az adott tápvonalra? Mint egy lágyindítás...” A stepup és az egyik szenzor IC esetében nem lesz gond, mert a szenzor IC 1.8Vig üzemképes és amúgy is 1 mA-t eszik, a stepup meg 1.2V-ig képes előállítani a 3.3V-ot, de azért mindjárt kipróbálom őket. Már "csak" az analóg rész maradt, ahol a fentebbi izédet szerint gondolnék eljárni. Sajnos ott tényleg nincs hely FETnek, csak nagy munka árán.
Nem tudom, hogy az ötleted mennyire jó gondolat. Így elsőre nem látok benne kivetnivalót, meg kell próbálni.
Sziasztok!
Azzal a problémával fordulok hozzátok, hogy a Pickit3-amat elrontottam mert véletlenül lehúztam a gépről miközben töltötte be a TARGET-hez tartozó firmware-t. Most annyit ír az MPLAB hogy "Not Pickit Connected", és mindhárom LED világít, a Status pirosan. Magyarul jól elcseszerintettem. Hogyan tudnám orvosolni a problémát? Előre is köszönöm a segítséget. Üdv: Dempsey.
Három esetet tudok:
- működik még rajta a bootloader, és azon keresztül rá tudod tölteni a firmware-t, - nem működik rajta a bootloader, szétbontod a fedelét (szerintem ez nem visszafordítható művelet lesz), és az ICSP lábakon keresztül egy másik Pickittel felprogramozod, - a supportot megkeresed, mivel hallottam már olyat, hogy a nem működő Pickit3-at ingyen kicserélté...álónak.
Indulásból meg kéne nézni, hogy milyen USB eszköznek látszik (látszik-e egyáltalán) a készülék.
Control panel/System/Device manager alatt megvan-e, ha megvan, akkor milyen USB ID szerepel a Details tab alatt. Ha Linuxot használsz, akkor egy lsusb kell neki. A hozzászólás módosítva: Jan 7, 2013
|
Bejelentkezés
Hirdetés |