Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Akkor megiscsak PWM-et csinalsz, csak szoftveresen -- erre voltam kivancsi. En amugy valahogy igy csinalnam meg:
...es igy akkor eleg a redDuty valtozot bizeralni, az ures varakozas a duty cycle-bol szamitja ki a COMPF utasitassal...
A "Programming 32-bit Microcontrollers in C Exploring the PIC32" c. könyvben van interruptra mintapélda (lásd: Day 5.). Bővebben: Link
Az mit jelent, ha a program futásakor az LCD-n csak a második soron vannak teli téglalapok?
Elméletileg szövegnek kellene lenni mind a két sorban. Ne tudom, jól kötöttem-e be. A kontrasztot egy fix 2k-s ellenállással kötöttem be a Vss lábra. A Vcc közvetlenül kapja a +5V-ot a LED is közvetlen +5V és GND A többi láb is egyenesen a PIC portjaira megy. Sajnos nem tudok képet tenni róla, csak az LCD bekötéséről.
OK. Mester
"Problémák jöhetnek, jönnek..de megoldom". Az a szép hogy újoncként elkápráztat a problémák véges végtelensége, és ehhez társuló szintúgy számtalan megoldás. Igen a tiéd ésszerűbb. Dehogy ne a "könyvem" írjam, kérdezném: A Capture módot szeretném megtanulni. Így már lehet hogy a kérdés is hülye lesz. Hogyan lehetne a Capture módban mondjuk egy akármilyen távirányító kódját értelmezni? Gondolom nem annyi hogy bekapcsolom, az infrajel indítja és aztán micsinál? Egy számot ment egy meghatározott idő után?
Pl. lefutó éleknél elmenti a TMR2 regiszter tartalmát valamelyik CCP regiszterbe (adatlapot nézd meg, hogy pontosan hová), és megszakítást is generál. A TMR2 folyamatosan fut, és így a pillanatértékekből utólag ki tudod számolni, hogy mennyi idő telt el két le vagy felfutó él között.
A Capture módban a bemenetre adott él(aminek érzékenysége beállítható akár menet közben is fel, vagy lefutóra) hatására beleteszi a CCPR1H és L regiszterbe a Timer1(vagy 3) H és L értékét. Ha ezt elmented és a következő ilyen eseménynél kapott értéket kivonod, akkor egy a két esemény közötti idővel arányos számot kapsz. A Timer1-et úgy kell beállítani, hogy megfelelő sebességgel és felbontással számláljon a jelek között. Ha nagy felbontás kell, akkor gyorsan kell számlálni. Ekkor előfordulhat, hogy a Timer1 túlcsordul. Ezt a túlcsordulást a Timer1 jelzi, és ezzel is számolni kell a végén annyiszor, ahányszor megtörtént. Kb. ennyi.
Hello!
Ha PWM-mel akarok hangot előállítani, akkor én egy tömb segítségével intézem el, hogy a duty cycle szinusz szerint változzon. Ha a program futása alatt én azt akarom, hogy a pl: frekvencia változzon, akkor a tömbben lévő szinusz értékeket újra kellene számolni. És itt a kérdés: ezt lehet úgy csinálni, hogy egy interrupt kiszámítja az új értékeket, majd utána már ezt adom be a PWM-nek? Kösz: szepesg
Szia! Igen ezeket szépen elolvasgattam, ergo azért szépen matekozni kell. Nem mintha probléma lenne, de jobb szeretném, ha menet közben olvasni tudnék bármit, belelátnék a pic lelkébe tüzetesen. Tudom már egyszer kérdeztem,de azóta se sikerült működés közben semmiről se élőben,azonnal tudomást szereznem. Régebben írogattam binárisan ledekkel. De ez sem nem elegáns, és kevés. Tehát érthetőn, azt szeretném, ha a megírt programom futás közben láthatnám hogy valósidőben eszeveszettül pörög a TMR0, az általam kreált regiszterek csökkenek, növekednek, portok aktuális szintje, ésatöbbi. Ha persze ez lehetséges.
Mondjuk a valós idő annyiban erős hogy semmit se látnék tulajdonképpen, de akkor hogyan lehetne valósan működtetni lassabban és úgy kontrollálni?
PICKit2-vel lehet debuggolni, megszakításokkal operálni amikor láthatod a regiszterek értékeit.
Másik megoldás, hogy soros porton átküldesz adatokat a program bizonyos pontjainál a PC-re(én ezt szoktam), de valós időben nem lehet a Timer-t átküldeni, ezt gondolom sejted. Egyébként meg fogadd el, hogy a Timer pörög és számolj.
Inetrruptnak nem szabadna tul sok idot toltenie, azonkivul nem tudom mekkora a tombod, de ha az a program memoriaban van tarolva akkor ez termeszetesen nem lehetseges.
Velemenyem szerint egy tombot kellene felallitanod, ahol egy bizonyos felbontassal benne vannak a szinuszhoz tartozo ertekek, majd az eloallitani kivant frekvencia novekmenyenek fuggvenyeben novelgeted az indexedet. Valoszinuleg egy floating pointos szamitasra lenne ehhez szukseg. Ily modon egy megkozelitest fogsz kapni amit pl egy kulso rc vagy lc szurovel simitgathatsz.
Szia,
Az órajel DC is lehet, ergó kisebb külső órajellel még látható a TMR0 pörgése is.
En csinaltam szinuszt (nem hangot) ilyen modszerrel. Van egy tombom a szinusz ertekeivel. A TMR1 szamolja a frekvenciat Minden IT beuteskor egy index szerint betoltom az epp ervenyes amplitudot, majd inkrementalom (dekrememtalom) az indexet. En 3 fazis eloallitasara hasznalom termeszetesen alacsony frekvenciara (5-70 Hz). Itt hatart szab a PWM frekije. Nalam 4 kHz a PWM freki. A PIC 40 MHz frekin porog (18F4431) Magasabb frekiju szinuszhoz meg kell novelni a PWM frekit.
Vissza álltam picit a a 16f887-re. Nem értem miért van az hogy bármelyik porton bármelyik bitet bemenetre állítom. Nemérdekli, és mintha 0-án lenne mert csak a btfss parancsba fut bele, csinálhatok bármit minden külső reagálást lszr. Mit felejtettem el? Ez miért lehet? Ja mind 2 887-esem ezt műveli Ja és a Pickit2 saját programja a kiexportált hexre ( 887-re van beállítva) azt írja : Warnin: hex file loaded is larger than device. ilyeneket nem művelt teljes a káosz. 2óra alatt egy sima btfsc-s parancsal nemtudtam megbírkózni
Csatold a nem működő kódot.
HA 0 VAN HA 1 -EN ÁTLÉPI A FELTÉTELT
Az RB0 analóg bemenet, a kódodban nem tiltod le az analóg bemenetet, ezért olvas mindig nullát róla.
Az ilyenekről meg szokj le, van annak az ötös bitnek neve (RP0), azt használd, majd a fordító beteszi az odavaló számot. PORT és TRIS regisztereknél nem probléma a szám használata, de az olyan regisztereknél, ahol az egyedi biteknek külön funciójuk van, ott tessék kiírni a bit nevét egyrészt azért, mert jobban olvasható a kód, másrészt azért, mert hajlamosak vagyunk nem foglalkozni a problémával, ha nekünk kell az adatlapból kikeresgetni, hogy az adott sorszámú bit mire való.
Jajj de köszi! Megkeresem hogy kell és tiltom. A tanácsod megfogadom, mármint ami a számokat illeti de tudom melyik számnak mi a neve.
Egy hó meg tizenegynéhány oldal után (mert időközben nagyon kevés időm volt hogy méltóképpen foglalkozzak vele), de:
megvan a 16F684 tesztje! Köszönöm az áramkört, programot meg a segítséget, Watt! Persze (az én szintemre való tekintettel) a leíró oldalban lehet nem jogos a "no teszt" javítása, de működik a WLPT_Vpp_mini_v4 a WPB_F18_F16_F12_v1.32b-vel! Egy próbaáramkört állítottam ösze a 16F684-hez ledekkel ( ) Kösz!
Idézet: „de tudom melyik számnak mi a neve” Az jó, ha valakinek van önbizalma, csak nem jó, ha túl sok! Kétlem, hogy tudnád az összes regiszter összes bitjét az összes kontrolleren fejből. Vagy ha így van, akkor javaslom, hogy mellőzd a regiszternevek használatát is, meg az utasításnevek használatát is, és írd helyette a címüket illetve bináris kódjukat.
Na jó ez enyhe túlzás.. és írtam hogy fogadom tanácsod!
Csak 4-5 pic-el foglalkoztam és azokna is csak a STATUS OPTION ÉS INTCON bit számot tudom sorry
Most ide írom, pedig lehet a VPásztoros témákhoz illene, de
Különben egy villanypásztor elektronikáját szándékszom - egyelőre - megoldani a 684-gyel. Szerintetek működne-e? Mert a fúrás-faragások számát alaposan csökkentené, meg egy potméterrel egy A/D vonal használatával tudnám szabályozni a szikrák közti időt és az indukciós időt programban. De vajon kibírja-e a PIC a trafó által keltett parazita feszültségeket??? Vagyis inkább a kezdőknek szóló oldalra kellett volna írjam, bocs ebben az esetben!
Köszi a tesztet, gondoltam, hogy jó lesz!
A áramkört látnunk kéne, hogy segíteni tudjunk(rajz). Le kéne választani a vezérlést a PIC-től egy OPTO-val és akkor nem lehet baj.
Kösz.
Ez az alapmegoldás linkje. Már a FET-es változat Az Optós leválasztásra gondoltam a 47 ohmos ellenállásnál. Viszont elég-e? Az 5V-ot egy 7805-ön kerersztül kapja de ugyanarról a 12V-os tápról mint a trafó. Így van egy plussz alkatrésszükséglet, de így is egyszerűbb és "rugalmasabb"mint 555-tel (szerintem) ha bírja.
Különben a gép AMD 2700 X2-es alaplapi LPT-vel, Windows 7-es.
A felismeréssel eltöltöttem 4-5 percet, lehet, hasonló okokból, mint ahogy írtad a DLPort betöltés miatt (ehhez (sem) értek eléggé, meg azt sem tudtam eldönteni, hogy a WPB info elején leírt jelenség érvényes-e a program legújabb változatára...) Utána működik rendesen Idézet: Miért kellene neki kibírni? Meg kell oldanod, hogy ne jusson oda! --> Tápfeszültség megfelelő szűrése, NYÁK kialakítás ( van ilyen jellegű topic ! ), árnyékolás...„De vajon kibírja-e a PIC a trafó által keltett parazita feszültségeket???” PIC-el működnek gyújtások és egyéb, induktív jellegű bekapcsolások, tehát a feladat megoldható, kellő körültekintéssel ! Az optocsatolós elválasztás nagyon megbízható, de nem is biztos, hogy szükséges ( persze így tuti nem megy ki a végfok hibája miatt a PIC ! ) ! A 47 ohmos ellenállásnál használhatod az optót ( de akkor szerintem kicsi a 47 ohm ! ), de az opto másik oldalán lehet kell még egy tranzisztor a FET gyors be-kikapcsolásához ! Lényeges: az opto használata nem ment meg a táp rendes szűrésétől !! Steve
Hogyan lehet egy LCD panelről eldönteni, hogy működik-e?
Valaki nem tenne ide egy egyszerű programot assemblerhez? 16F887-re kéne. Már nem tudom eldönteni, hogy a panel rossz, vagy miért nem megy. köszönöm. |
Bejelentkezés
Hirdetés |