Fórum témák
» Több friss téma |
Ha az üresjárati (terheletlen) eredő feszültségre vagy kíváncsi, egyszerűbb, ha kiszámolod.
Elég pontos adatot fogsz kapni. Ha pedig a kimeneten van pufferkondi és terhelés is, akkor timer2 flag bitjének bebillenésekor kezdj el mérni, folyamatosan az újabb bebillenésig. Közben egy számlálóval számold, hányszor mértél. Majd add össze a mérési adatokat, (bár ezt közben is teheted, így nem kell annyi ramot használni) majd oszd el a mérések számával.
Terheltre és terheletlenre is kíváncsi vagyok. Ellenállást mérek vele.
Kipróbálom a két bebillenés közti mérést. Közben agyaltam és bár lehet rosszul gondolom, de a két bebillenés közt nem csak 1ms idő telik el? 1KHz-es PWM jelnél 1mp alatt 1000 jel érkezik? Nem lenne kevés a minta? A hozzászólás módosítva: Okt 11, 2018
Sziasztok,
16F1826-al kapcsolatban volna néhány kérdésem mert nem vagyok túl gyakorlott az adatlap olvasásban. Első kérdés hogy ha LIR2450-el táplálom ami feltöltve 3,6V akkor nem muszály az L-es verziót választanom hiszen a "sima" is működik 1,8-5,5V-ig? Második kérdés hogy ha jól olvasom a külső kvarc az RA6 - RA7 lábak közé megy viszont ha én egy hét szegmenses kijelzőt akarok vele közvetlenül hajtani akkor az A-G szegmensek mehetnek az RA2, RA3, RA4, RB0, RB1, RB2, RB3 azonos oldalon lévő lábakról vagy az RB0 nem lehet vezérlő láb? Harmadik kérdés hogy az RA5/MCLR lábat muszály-e felhúynom külső ellenállással Vdd-re vagy ha nem használom RESET-re akkor lóghat üresen? köszönöm.
1. Igen, de 2,5V alatt max. 16MHz-en megy.
2. Igen, RA6-7 a kvarc, de mi bajod az RB0-val, nem látok rajta problémás perifériát? 3. Semmi sem kötelező, de ha ki is van kapcsolva az MCLR a lógó láb akkor is összeszedhet valami zavart ami okozhat véletlen resetet. Ajánlott felhúzni. Ha nem akarsz külső ellenállást, az adatlap szerint az RA5-ön is van WEAK PULL-UP, azaz belső felhúzó, használd azt. A hozzászólás módosítva: Okt 11, 2018
Köszönöm a válaszokat!
Jól értelmezem program szinten teljesen inaktívvá lehet tenni az RA5-öt vagy nem lehet de a weak pull-up-ot külön be kell kapcsolni rajta? Azt hittem az egy fizikailag beleintegrált felhúzó ellenállás?
A MCLR funkciót le lehet tiltani, de a programozási módba belépés funkcióját nem.
Attól függ, mekkora órajelen megy a proci.
Ha legalább 8 MHz-n akkor az analóg bemérés a keretfunkciókkal együtt is le futhat 10usec alatt. Az pedig 100 mintavételezés. Annyi már csak elég.
Bocs, ezt elfelejtettem megemlíteni. 1MHz-en jár a PIC.
Mit értesz azon, hogy teljesen inaktívvá tenni?
Ahogy Hp41C fórumtárs írta a MCLR funkció letiltható, ekkor a láb digitális bemenetként működik és csak bemenetként, vagy ha más periféria osztozik a lábon akkor az,de jelen esetben csak a SS1 funkció van rajta ami nem zavar mert alapból ki van kapcsolva. A felhúzó ellenállás integrált, de nem megy állandóan, szoftverből ki és bekapcsolható.
Így valóban kevés.
Van valami gyakorlati oka annak, hogy ilyen alacsony az órajel?
Csak óvatosan vitatkozom, mert a 16-os szériát nem ismerem.
De a 18-asnál, ha az MCLR-t letiltom, automatikusan bekapcsolódik a felhúzó ellenállás, viszont nem válik teljesen inaktívvá a reset funkció. Zavar-gazdag környezetben sűrűn resetel. Én ezt úgy szoktam kiküszöbölni, hogy a panelba beültetek egy jumpert, és miután befejeztem a programozást, rátolom a rövidzárat. Ezzel az MCLR lábat GND-re húzom. Így már nem következik be reset.
Igazából nincs, lehetne magasabb órajelen is járatni.
Amúgy a timer2 megszakítást vehetem úgy, hogy mint ha mindig a felfutó élre történik a kiszolgálás?
Ha a CCP1CON úgy van beállítva, hogy aktív magas, akkor igen.
Így már értem, köszönöm.
Valójában az a tervem hogy mivel használat közben sosem szeretném használni a reset funkciót szoftverből felhúzom a lábat és fizikailag levágom így értékes helyet nyerek egy vezetősávnak a nyákon plusz ugye megspórolok egy smd ellenállást is ami megint csak plusz helyet foglalna.
Idézet: „1100 = PWM mode; P1A, P1C active-high; P1B, P1D active-high 1101 = PWM mode; P1A, P1C active-high; P1B, P1D active-low 1110 = PWM mode; P1A, P1C active-low; P1B, P1D active-high 1111 = PWM mode; P1A, P1C active-low; P1B, P1D active-low” Ezekből az aláhúzott van beállítva.
Ebben a beállításban, ha utóosztó nincs állítva, akkor a flag bit bebillenését követő órajelnél vált magasra a kimenet.
Ha van utóosztó, akkor timer2 lejáratát követő újrainduláskor (pontosabban PR2-ben beállított érték elérése utáni órajelnél) vált magasra a kimenet.
Húúú teljes most már a képzavar.
Pontokba szedve újra, mert már elvesztem. Tehát az interrupt kiszolgáló:
PIC 1MHz-es órajel beállítása:
Timer2 és ADC beállítása:
Timer2 PWM indítása:
Ebből hogy tudnám megoldani, hogy kitöltés változtatása mellett tudjam mérni a helyes feszültséget? 10-től 50%-ig kellene a kiköltést változtatnom, így ebben a tartományban kellene a méréseket is jól végeznem. Idézet: „T2CON = 0b01001000; // Alap esetben kikapcsolva, 10-es utóosztó a megszakításnak” Mi célt szolgál a megszakítás? Mert így a flag bit csak minden 10. PWM ciklus végén billen be. Azaz a flag-tól flag-ig mérés így feleslegesen sok adatot szül. Ráadásul az, hogy a kitöltést csak 50%-ig viszed fel, nem jelenti azt, hogy csak eddig kell mérni. A mérést a teljes impulzus hosszon kell végezni, minél többször.
Tudnál nekem segíteni, hogy miképpen állítsam be és hogy mérjem?
(a mi célt szolgál a megszakítás kérdésre ![]() Egy példát tudsz írni nekem, hogy oldjam meg a megfelelő mintavételezést, ami megszakításban mérne? A lényeg, hogy jól mérjen az eszköz. A hozzászólás módosítva: Okt 12, 2018
PIC 18-ra assemblyben megírt példaprogramot át tudsz írni?
Ugyanis PIC 16-ost még sosem programoztam, C-ben meg pláne nem.
Szerintem meg tudom oldani, némileg már elkezdtem tanulmányozni az assembly-t, illetve van itt mellettem valaki aki érti is.
Megköszönöm a példát. A hozzászólás módosítva: Okt 12, 2018
Rendben. Délután összedobom, de folytassuk privátban.
Rendben, előre is köszi a türelmed.
Kár, hogy privátban, szeretem olvasni a fejleményeket, abból is tanul az ember.
A 18-asokat meg én nem vágom fejből, de ezt sem fejből néztem, az adatlap szerint ha MCLR engedélyezve van akkor automatikusan be van kapcsolva, egyébként a felhasználó által kontrollálva.
A zavarral kapcsolatban egyetrtek, azért is javasoltam neki, hogy lógni semmiképp ne lógjon. Felhúzva nálam még nem resetelt PIC, de lehet, hogy te zavartelibb környezetben használtad.
Azért egy SMD ellenállás nem szekrény méretű, és azt hozzá kell tenni, hogy sokkal megbízhatóbb mint a belső felhúzók. Azok szoktak kiszámíthatatlanul viselkedni.
Elkészültem a programmal.
Tesztelve nincs, de kikommenteltem, így a lényeget látni fogod.
Köszi, sajnos csak jövőhéten tudom majd C-re fordíttatni, akkor számomra is teljesen tiszta lesz a logika.
Már nem assemblyzek, de miért kell a nop az org után mikor tanultam assembly-t mindig néztem az elektró tanárom példakódjait nála is ICD-re hivatkozva egy nop a reset vektoron.
Problémát okoz neki a GOTO 2 utasításciklusos feldolgozása?
Szia!
Bővebben: Link Nem írja, de szerintem azért, mert indulásnál vizsgálja, hogy belépjen-e DEBUG módba és ha igen, akkor el kell indulnia egy programnak, ami a korábban beolvasott első utasítást felülírja ( felülírná) ! |
Bejelentkezés
Hirdetés |