Fórum témák
» Több friss téma |
Raktam az RA2-re "jelet" és mindig bemegy a megszakításba, a counter szépen számol... !
A hozzászólás módosítva: Szept 3, 2018
Sziasztok!
Keresném a mikroC compiler for PIC régi verzióját! Képen mellékelem, hát ha beugrik valakinek! Nagy szükségem lenne rá, az újabb verziókkal nem akarok újratanulni..... Aki tudna segiteni hogy meglegyen újra ez a program, kérem irjon rám! Köszönöm!
Értem, meg tudtad nézni, ellenőrizni a PWM jelet és a kiköltést is?
Most kicsi program módosítással elértem, hogy ki írja az adatokat, de észre vettem, hogy ADC mindig maximumot mér. Ezt te meg tudod nézni? Mármint, hogy ADC mennyit mér, nálad? 25%-os kitöltés mellett a 4.73v digitálisan 1023 helyett, 1.18v digitálisan 255-öt kellene mutatnia. Nálam valamiért folyamatosan 1023-at mutat.
Mint írtuk: a felfutó él után a tápot méri, hiszen az 1kHz az 1ms, 25%-nál 250us-ig táp van kinn, ezt méri meg.
Mintavételezési időt kellene növelnem?
De ez a PIC ha jól látom ilyet nem tud. Mivel tudnám ezt megoldani, vagy is hogyan, hogy a megfelelő értéket kapjam meg?
Mi van akkor, ha egy for ciklusban több mintát veszek és azokat átlagolom?
Ezzel lehet be tudnék állítani egy mintavételezési időt. Bár megszakításba nem túl elegáns, de nem tudok hirtelen jobbat. A hozzászólás módosítva: Szept 4, 2018
Mert milyen eredményt vársz a méréstől? Ha mérsz mondjuk 100 mintát, 25%-os kitöltésnél 25 tápot és 75 0-át fogsz mérni (+- 1 mérés bizonytalanság), ha más jönne ki árulás van a dologban.
Igen végül ezt választottam. 100 mintát veszek, majd osztottam 100-al, így pontos a dolog.
Köszi srácok.
Egy alul áteresztő szűrő a PWM kimenet és az AD bemenet között.
Arra próbáltam célozni, hogy ez így felesleges, nem mérhetsz így mást, mint amit beállítasz.
7.5% -os áremelés várható a Microchip által gyártott régebbi típusoknál. Forrás típus listával
A hozzászólás módosítva: Szept 4, 2018
Uraim, kérnék egy kis segítséget.
ADC méréssel kapcsolatos, amit most nem értek, vagy is nem teljesen értem a mértet. A következő a jelenség: Kitöltési tényezőt állítok egy 1KHz-es jelen, egészen 63%-os kiköltésig nincs gond, majd 64%-os kitöltés beállítása után, hirtelen megváltozik, visszaesik a mért digitális érték. A következőket méri a program: 62% - 643 63% - 653, 64% - 9, 65% - 20, 66% - 30...stb A % beállítására írtam egy ilyen kis rutint:
Az ADC-t egy PWM felfutó élre történő megszakításban mérem, ami így néz ki:
Látható, hogy minden 501. megszakításban mérek, mert felesleges sűrűbben. Az is látható, hogy 100mintát veszek majd azt átlagolom, így elvileg az eredménynek jónak kéne lennie végig. Lát esetleg valaki valami hibát a programban? Esetleg magyarázat a működésre, ha van? (ha van akkor kérnék egy lehetséges javítási tanácsot is) Annyira rájöttem, hogy mikor 64%-ot állítok be, akkor gyakorlatilag a 63% által mért eredményt hozzá kell adnom a 64%-al mért eredményhez és akkor nagyjából ott is vagyok ahol eredetileg kellene lennie a mérésemnek. De minden olyan mérésnél, amely nagyobb mint 63%, nem akarom + hozzáadni annak mérési eredményét. Eléggé gánynak tartanám, ha csak így tudnám megoldani. Előre is köszi a türelmet és segítséget.
Szia!
Szerintem a read_ADC fv. 16 bites számot ad vissza, amiből 100-at összeadva már nem fér el 16 biten és amennyiben ADC 16 bites, akkor túlcsordul és csak az alsó 16 bit értékét látod a 100-as osztás után ![]() szerk: magy.: Visszaadott kód max. 1023 lehet, amit 100-szor összeadva több, mint 65535 ! Megoldás: az ADC ne 16 bites legyen ![]() A megszakításban nem jó ötlet 100 AD-t csinálni, mert "nagyon sokáig" tart ! A hozzászólás módosítva: Szept 5, 2018
Köszönöm.. Ügyesen rájöttél, hogy itt lesz a kutyus elásva..
Már kész is a dolog.. ![]() ADC és megszakítás: Megszakítás minden impulzus okoz, de mérést csak minden 500. megszakítást követően mérek. Sajnos nem tudtam hirtelen jobban megoldani, de most hogy mondod, lehet csak a megszakítás gyűjteni fogja az adatot, főprogram majd osztja és kiértékeli. A hozzászólás módosítva: Szept 5, 2018
Mivel a PR2 249-ig számol, a CCPR1L-re ne számolj ennél nagyobb értéket.
Azt mondtad, hogy PWM...azt minek AD-zni ? Van egy számlálód ( counter), ami számolja, hogy megszakításnál hányszor 1-es a jel, tudod a PWM periódusidejét --> hányszor lesz közben megszakítás ( periodus)... Minden PWM 0-->1 átmenetnél Duty = counter / periodus * 100% !
A PWM szélsőértékeit kilogikázod ( ha lehet folytonos 1 vagy 0 ![]() Idézet: „Az adatlapban azt olvastam, hogy a PWM kiköltését CCPR1L 8bit-es regiszterben adhatom meg.” A PWM kitöltését 10 bitre adhatod meg, a CCPR1L a felső 8 bitje, az alsó 2 bitet a CCP1CON 7. és 6. bitjén kell beállítani. Az adatlapban az is olvasható, hogy a PWM egy ciklusa megegyezik a TMR2 regiszter átfordulási ciklusával. A TMR2 után osztójával lehet megszakítást kérni. Ha a TMR2CON 6..3 bitjein beállítanál 10 -es osztásnak megfelelő értéket 1001, akkor minden 10. PWM ciklusnál kapnál TMR2 megszakítást. Nem kellene a külső átvezetés, az INT megszakítás, csak a PIE1 TR2IE -t kell 1 -re állítani.... Máris tízszer kevesebb megszakítás kiszolgálás lesz... Ha csak 64 AD mintát adsz össze, az eredmény elfér 16 biten. A hozzászólás módosítva: Szept 5, 2018
Köszi.. Át is állítottam.
kissi: ejj, de jó ötlet ez.. ![]() De ez csak a kiköltést adja meg nem? Mert ADC az 10bit-es.
A PWM kitöltés aló két bitje az nem a CCP1CON 5. és 4. bit?
Biztos csak elírtad, vagy én nem értelmezek jól valamit.
Én feszültséget mérném folyamatosan, szükségem van a változás figyelésére.
Egy töltőt. Már megcsináltam és annak a mintájára akarok készíteni egy kicsi költségvetésű és egyszerű fapados kapcsolást, ehhez akarom ezt a kis PIC-et felhasználni.
A hozzászólás módosítva: Szept 5, 2018
Közben visszaolvastam és láttam, hogy a PWM 12V-os lesz és azt terheled ellenállásokkal...
Az ellenállások nincsenek rajta "folyamatosan" ?! Mert ha igen, akkor minden PWM ciklus kezdetén mérj egyet, a zavarok miatt átlagold pl. 100 mérésnek az eredményét ( jobban jársz/gyorsabb, ha 128-nak ![]() szerk.: Nem láttam, hogy a múltkor mi lett a megoldás, miért nem ment jól a megszakításod ![]() A hozzászólás módosítva: Szept 5, 2018
Igen de nincs rajta ellenállás, csak ha én teszek oda.
Alap esetben szabadon fut a PWM. Múltkori hiba nem a PWM miatt volt, hanem a kijelző programjával volt bibi, arra rájöttem és megoldottam a dolgot. Most szépen megy kijelzővel együtt, nincs reset.
A következő kérdésem lenne a PWM kitőltésével kapcsolatba:
Kézzel megadom, a kitőltési tényezőket a regiszternek és valamiért a PWM nem indul be. Én úgy gondoltam, hogy 0 és 100% közt lehet állítani majd a kitőltést, de úgy fest nálam 9% alatt nem hajlandó elindulni az 1KHz-es PWM jel. Mi lehet ennek az oka? Regiszterek: 1% kitőltés beállítása.
Valami ötlet? Fentebb a kód. Előre is köszi.
Mi lenne, ha beállítanád az MpLab szimulátort, felvennéd a CCP1 kimenetét a Logikai analizátor képére és végigfuttatnád a programodat. Rögtön kiderülne a turpisság... Pl. a 100 mért érték túlcsordulása, stb. Gyorsabban menne, mint ide beírni.
Basszus kulcs.. Nem tudtam, hogy van szimulátor az MPLAB-ban.. Ha ezt előbb tudom..
![]() Köszi.
Ez nagy arcul csapás volt..
![]() MPLAB-ot használom az elejétől kezdve, de egyszer sem kattintottam a szimulátorára mert azt hittem ahhoz kell valami külső hardver. Bár akkor nem szimulátor lenne a neve, de akkor is ez volt bennem. Egész idáig itt volt az orrom előtt.. Kész vagyok.. ![]() Esetleg ebben segíthetnétek, hogy ez alatt mit is ért Hp41C: Idézet: „felvennéd a CCP1 kimenetét a Logikai analizátor képére” Gondolom nem a sima watch ablakot, vagy de? A hozzászólás módosítva: Szept 6, 2018
|
Bejelentkezés
Hirdetés |