Fórum témák
» Több friss téma |
A timer-ek külön mennek, nincs gond.
PWM is jól megy, bár tegnap tesztelgettem a kiköltést és valami nem volt kerek, de arra ma is ránézek. kissi: igen én is így tudtam, hogy 1 vagy 0 a PWM, de még is valamiért nem okoz megszakítást. VCC 4.79, szerintem ez rendben lesz, valami más lesz a hiba amit nagyon nem veszek észre.. Ma újra átnyálazom az egészet. pajti2: nincs kapcsolási rajzom, csak agyalgatok egyelőre és tesztelgetek, hogy meg e tudom oldani ezzel a kis PIC-el a dolgot. Egy kiszuperált panelt használok erre célre, hogy élesben is tudjam tesztelni. Nincs befolyáoló tényező, a PIC lábain nincs más. Tehát: Belső órajelről járatom, 1MHz-en a 16F684-es PIC-et.
PWM-et beállítottam 1KHz-re 50% kitöltessél (pin5, RC5 CCP1)- ezt mérem és jó
PWM jelet, be engedem egy az egyben most A3-es lábra (pin3 RA4),
+ a megszakítást kezelő lábra is ráengedem (pin11 RA2 INT) és beállítom a megszakítást
Termesztésen a szükséges beállításokat elvégzem az elején:
Így nem lehetne akadálya a megszakításnak. Ezek után már jöhet is a megszakítást kezelő rutin: A while ciklusban pedig csak annyit teszek, hogy kiíratom LCD-re a vett eredményt. ui: amit most észre is vettem, hogy leírtam, hogy az INT lábat nem tettem bemenetre.. Ez javítom is... És úgy fest lehet jó is lett.., de jó, hogy van ez a fórum, az ember mire leírja a gondját meg is oldja.. ![]() A hozzászólás módosítva: Szept 3, 2018
Kész, nem tudom mi lehet a gond.
Van valakinek esetleg egy kis ideje, hogy tesztelje a kódot? 16F684-es PIC-re kellene tölteni, PWM jelet vissza vezetni az külső megszakításba, majd egy LED-et villogtatni, esetleg ADC-t mérni illetve számolni a megszakítást és while ciklusban kiíratni 2x16-os kijelzőre. Utóbbi nem kell, ha tudja valaki debugolni, de fontos, hogy a counter számolja a megszakításokat, ebből lehet tudni, hogy rendesen fut a program. A kódokat csatoltam, már az is sokat segítene, ha valaki rápillantana. Előre is köszi..., ha esetleg jobb lenne, akkor ki is teszem ide a teljes kódot.
Igen, a PWM rendesen megy.
Sajnos megint resetel a PIC, olyan mint ha reset hurokba kerülne a beállításokkal. Fesz nem ingadozik, stabil. A hozzászólás módosítva: Szept 3, 2018
Otthon megnézem majd, ha van ilyen PIC-em, akkor kipróbálom Neked...!
Addig is próbáld meg "beszakaszolni" a hibát: ha kikapcsolod az INT-et, AD-t ( egyesével!), akkor a többi megy rendesen ? szerk.: RESET lehet tápfesz, WDT, verem túl,ill. alulcsordulás ( ennél a PIC-nél nem néztem!) ! A hozzászólás módosítva: Szept 3, 2018
Ha az INT-et, kikapcsolom már is minden a helyére kerül.
Viszont szükségem lenne a megszakításra az AD méréshez. Reset: tápfesz stabil, nem ingázik, WDT ki van kapcsolva, remélem ezt a PIC is értelmezi, verem passz... A hozzászólás módosítva: Szept 3, 2018
és ha az INT-ben csak a LED villogtatást hagyod ?
Ugyan ez a hiba, ha van INT akkor jön a reset hurok, újra indulgat folyamatosan.
Ha nincs INT akkor gond sincs.. Ettől független PWM működik. A hozzászólás módosítva: Szept 3, 2018
Most néztem a zip-et, ott is kivetted a megszakításból az AD-t...
A LED-nél nincs valami árulás ( rövidzár, kicsi ellenállás), ami a működtetésnél tápfeszcsökkenést okoz ?!
Kipróbálom, de nem hiszem, hogy lenne.
Most ellenőriztem csak a PWM-et még egyszer. Freki rendben van és a kitöltési tényező is rendesen megy. A LED-es témát ellenőrzőm, hátha.... Fesz továbbra is stabil, 820Ohm-os ellenállással használom a LED-et. Most már csak a PWM és a külső megszakítás játszik.. Azonnal reset-be hajszolja PIC-et ha engedélyezem a megszakítást. (amúgy tényleg olyan mint ha verem vagy wdt túlcsordulás lenne) A hozzászólás módosítva: Szept 3, 2018
WDT nem lehet, mert akkor int nélkül is menne...
![]() Szerintem a LED környéke gyanús, szemed mennyire jó ![]()
Nagyon jó a szemem.
Arra gondoltam, hogy ADC bemenete húzza esetleg le a PWM jelet és ezért lehet valami gubanc, de most levettem PIC-ről teljesen az ADC bemenetéről, így a PWM jel szabadon járhat, de a megszakítás továbbra is resetbe tartja a PIC-et. LED-et leveszem most, hogy azt is kizárjuk. Szerk: Sajnos továbbra is ugyan az a helyzet. A hozzászólás módosítva: Szept 3, 2018
Idézet: „Nagyon jó a szemem.” ![]() Az ADC ( ha jó !) nem csinálhat ilyet ! Várom a LED-es eredményt! szerk: ![]() A hozzászólás módosítva: Szept 3, 2018
Csak az INTE-t kapcsold már nullába, a PEIE, GIE maradjon!
Egyből működik, kijön resetből.
While ciklusban számolgat szépen... A hozzászólás módosítva: Szept 3, 2018
A #define LED3 RC4 jó ( én nem használom a HI-TECH fordítót !) ?!
Igen, ez így jó.
Kicsit furcsa a HI-TECH, de ez így helyes. Ebben a típusban nincs LATx regiszter, csak a PORT regiszter használható szint állításra. Szerk: most leveszem LCD kijelzőt is, hátha az kavar be. Tesztelem. A hozzászólás módosítva: Szept 3, 2018
Az OK, csak nincs benne a PORTC ( pl. C18-ban PORTCbits.RC4 lenne, persze ez attól lehet helyes, mert RC4 csak ott van ...
![]()
Jaja ez sajna nem C18, a regiszterek beállítása kicsit másabb.
RC4 most jelenleg azt jelenti, hogy LATCbits.LATC4.
Itt nincs árnyékregiszter ( LAT ), tehát inkább azt, amit írtam
![]() szerk.: egyelőre kifogytam az ötletekből ( a kijelzőnek nem szabadna befolyásolni, ha egyébként működött és nem érinti ezt a lábat a beállítása!) ![]() A hozzászólás módosítva: Szept 3, 2018
Nem érinti és még is.. Most levettem kijelzőt és úgy fest nem resetel, legalább is remélem, mert most nem látom a megfelelő értékeket. Áhh ez így nem lesz egyszerű..
Lehetséges magyarázat: LCD nem tud olyan gyorsan frissíteni, ahogyan annak kellene, ezért a megszakítások torlódhatnak egyes esetekben olyan az ütközés, hogy resetelik hardvert. Vélemény? ui: úgy teszteltem, hogy egy számomra is látható és szabályos villogtatást állítottam be megszakításba.. Ha kijelző ment akkor látható volt, hogy szabálytalan a villogás, de ha nincs inicializálva az LCD akkor szabályos a villogás. A hozzászólás módosítva: Szept 3, 2018
Még sem a kijelző a probléma.
A programban van valami. While ciklusban ha kiíratás előtt bármilyen olyan műveletet akarok csinálni ami az int típust char-re változtatja azonnal resetel. Szerintem az lehet a baja, hogy nincs elég ideje elvégezi a műveletet a megszakítások miatt, így téveszt, vagy túlcsordúl. Pl. ennél már ki is akad. Ha csak egyszerű kiírás van benne, vagy is nincs benne az itoa, akkor nincs semmi baja.
A kiakad számomra azt jelenti, hogy pl. a kijelző lefagy, de ez nem RESET !
Most akkor mi van ?!
Rosszul fogalmaztam. Resetel továbbra is a fentebb leírtak szerint.
A resetet úgy azonosítom be, hogy a program indulásánál egy adott szöveget ír ki, majd a cikluson belül már csak számolnia kellene, a számolás nem megy, azonban a kezdőszöveg szemmel láthatólag újra és újra betölt.
Számomra az lcd_bcd_digit nem tiszta:
- miért extern? - miért long típusú az első paramétere, ha a hívó oldalon int típussal van meghívva? - a decimal tömb miért long, ha utána a tömb elemei karakterként vannak használva?
Küldd már át a hex-et ( az LCD-t vedd ki belőle, mert szimulálni akarom...!)!
Parancsolj, LCD nincs benne.
Tehát 16F684, 1MHz belső, 1KHz PWM, Analóg beállítva vételre, LED RC4, villogása 500KHz-enként. Kitöltés 25% A hozzászólás módosítva: Szept 3, 2018
Az most nem érdekes, nem én írtam én csak gyorsan használni akartam valamit, de mivel nem kell és nem is érdekel az LCD driver, nem is igen néztem át, csak annyira, hogy működjön.
Tehát nettről kotort anyag. A hozzászólás módosítva: Szept 3, 2018
A szimuláció szerint jól működik, periodikusan bemegy a megszakításba, valahol máshol van a hiba...!
Villogás csak INT, külső megszakításba bevezetett PWM esetén fog működni.
Ez lemaradt az előzőből. |
Bejelentkezés
Hirdetés |