Fórum témák
» Több friss téma |
Esetleg használj RTC-t és azt pl. másodpercenként olvasod.
Bővebben: Link
Ha az ora megszakitasban van, akkor amig lekezeled az idokritikus 1-wire reszt a foprogramban, addig tiltani kell a megszakitasokat, utana engedelyezeskor ugyis beut majd.
Ertelemszeruen a timer megszakitasi idoalapnak ritkabbnak, lassabbnak kell lennie, mint az idokritikus resznek, kulonben valoban pontatlan lesz az ora. A megszakitasok nehez tema a kezdoknek. Az az alapkoncepcio, hogy a foprogi fut, fut. Egyszercsak jon a megszakitas (ez sokmindentol beuthet, pl egy felprogramozott timer tulcsordul) ez a foprogramot ket utastas kozott felfuggeszti, es elugrik a megszakitasi vektor cimere, amit megadtal neki. Itt eloszor el kell menteni a regisztereket, aztan lekezelni a megszakitast - legalabb a bitjet torolni - aztan visszaallitani a regisztereket es visszaterni RETI-vel. Mivel sokfele okbol lehet interrupt es ez mind ugyanoda ugrik, az elejen celszeru megvizsgalni, hogy vajon tenyleg az okozta-e, ami neked kell. Ha nem, siman visszatersz. Ha igen, lekezeled es visszatersz. A kezdok altalaban az engedelyezeseket szoktak elrontani, azert nem megy. Sok helyen be kell allitani, hogy adjon megszakitast. Peldaul eloszor a foprogramban kell beallitani a timert, aztan inditani. Fontos, hogy az orajelhez kepest mennyivel ketyeg a timer, ezt is erdemes bealitani. Vannak eloosztasok. A te esetedben a megszakitasban ujbol fel kell a timert tolteni, inditani es utana visszaterni, hogy a kovetkezo interrupt pont ismet ugyanakkor usson majd be. Elsore nem konnyu megerteni, de NAGYON hasznos a PIC-nel az interruptok ismerete. Megsporolhatod vele az ures varakozasokat, azalatt mast csinalhat a nem idokritikus foprogram.
Nincs olyan hogy assembly tömb. Ez nem VB. Ez hardverközeli programozás. Itt vannak bitek, 8/16/32 bites regiszterek és egy rakat logikai, alapvető matematikai, ugró utasítás. Ebből kell építkezni. Amúgy az LCD kezelés helyett esetleg kezhetnél valami olvasmánnyal, és akkor nem lennének ilyen felreértések.
Pl: Pic mikrovezérlők alkalmazástechnikája
Üdv
Ha az MCLR lábat bemenetnek használom és egy gombot kötök rá, akkor tehetek a 10Kohmos felhúzó ellenállás és a PIC közé egy 1K/100nF os RC tagot? Jól gondolom, hogy az nem fog bezavarni a programozáskor?
Tudna nekem valaki olyan könyvet ajánlani vagy e-könyvet ami a kezdetektől elmagyarázza a pic működési elvét példákon keresztül amik mikroc-sek?
Pontosan hogy gondoltad a bekötést? És mi lenne a szerepe?
Ne fáradj. Ma egész nap ezt mondtuk neki. Fölöslegesen. Én inkább nem válaszolok.
Így gondoltam, pergésmentesítés, zavarszűrés miatt raknám be, az ICSP csatlakozóba kötném a kapcsolót.
Az 1 kohm PIC felőli végén ne legyen kondenzátor! A másik végén esetleg, de minek? A gyári kártyán (pl. PICkit2 Starter Kit) sincs tudtommal.
A 10k-val és 100nF-dal nem lenne gond, de a soros 1k-t nem biztos, hogy szeretni fogja. Max a progizás idejére rövidrezárod.
Ez így pont zavarná az égetést. Ha az 1k másik végére tennéd a kondenzátort, és az ICSP csatlakozót meg közvetlenül a kontroller lábára, akkor már nem zavarná. Viszont én nem tartom lényegesnek, szoftveresen is meg lehet csinálni a pergésmentesítést minimális programidő felhasználásával, csak a 10k felhúzót tenném, meg persze égetés közben nem szabad nyomni a gombot.
icserny, vicsys, potyo:
Megpróbálom megúszni, hogy szoftveresen kelljen megoldani a gondot, inkább belerakok 1-2 alkatrészt. Megpróbálom majd RC taggal az égetést és ha nem megy kiszedem az ellenállást, ha ezután se akkor meg leprogizom a dolgot. Az ICSP csatit sajnos nem tudom az ic lábához tenni, de nincs messze max 3-4 centi vezeték, a kapcsoló az ICSP csatiba megy majd bele így programozás közben nem tudom megnyomni.
Valamit félreértettél! Az ICSP csatlakozás közvetlenül legyen az MCLR lábra kötve, ne az ellenállás másik végére, ez a lényeg. Az 1 kohmot nem kell kivenni programozáshoz. Sőt!
Ez a gagyi hardveres pergésmentesítés messze áll attól, hogy a szoftveres pergésmentesítést pótolja! Valamit javíthatnál rajta azzal, ha a nyomógombbal is lenne sorbakötve egy ellenállás. A kondenzátornak meg nagyobbnak kellene lennie a pergésmentesítéshez.
Az ICSP csatit kell használnom, hogy rádughassam a kapcsolót, úgyhogy nem lesz ellenállás csak a kondi, és ha ez nem elég, akkor marad a szoftveres pergésmentesítés.
Jó étvágyat mindenkinek az ebédhez.
C-ben (CCS) ugye az "read_adc();" utasítással, az analóg lábakon egy PIC16F887 esetében ugye 256 különböző feszültség állapotot lehet lekérdezni. Kérdésem, hogy ezt fordítva, azaz kifele, meg lehet oldani, hogy az egyik analóg (vagy bármely másik) lábán a pic-nek szabályozhassam a kimenetei feszültséget? Mondjuk pl, egy LED fényerejét ezáltal állíthassam? Válaszokat előre is köszönöm.
PWM esetleg? Amugy az AD 10 bites nem 8. Sot vannak 12 bites fajtak is.
Jól sejtem, hogy ez esetben szükségem lesz egy másik I.C.-re ami a PWM jelet feldolgozza, és az vezérli a LED fényerejét??
Ha így van, akkor kérdésem, hogy a PIC16F887-et leszámítva más I.C. használata nélkül nem oldható meg a LED fényerejének szabályzása?
Nem kell másik IC, csak egy kapcsoló elem (pl. tranyó) ha nagyobb áramot szeretnél a LED-n átzavarni. A PWM kitöltési aránya határozza meg, hogy mennyi ideig van be ill. kikapcsolva a LED. Megfelelő frekin ezt a szem csak fényerő változásként éli meg.
Hadd kapcsolódjak be egy kérdéssel. A hardweres prellmentesítés nem jó? Vagy melyik jobb?
Miert kellene masik IC? A PIC labai 25 mA terhelest birnak el. A PWM kimenetre gondolom egy 5 wattos LED-et akarsz kotni. Egy sima LED ugy altalaban megelegszik 15-20 miliamperrel is. Tehat csak a SW PWM berugasa szukseges, es jol megvalasztani a PWM frekit. Lehet par szaz Hz felett valasztani, es akkor csak a fenyerovaltozast latod, nem fog villogni.
És tényleges feszültségszabályozás nem csikarható ki a PIC-ből valahogyan egyéb I.C. használata nélkül?
Ha esetleg NEM, akkor milyen egyéb I.C. bevonásával lehetne megoldani? És mi van ha a PWM jelet kiegészítem egy kondival? Akkor elvileg nem fog villódzni (még kamerán keresztül sem) és a fényerő is változik. Jól gondolom?
Megint csak az van, hogy ha olvasnád az adatlapot, tudnád, hogy a 887-esnek van PWM modulja.
Azt tudom hogy van, csak eddig nem tudtam, hogy az egyéb eszköz nélkül is használható.
Viszont én meg azt szeretném elérni, hogy a LED fényerejét tényleges feszültségváltoztatással, nem pedig villogtatással lehessen állítani. Erre, meg ha jól sejtem önmagában a PIC kevés lesz.
Jo lehet az is, ha RC tag es ST inverterbol all. A PIC bemenetei nem ST tipusuak, es ezert nem tanacsos a bemenettel parhuzamosan nagyobb kondit kotni. De azert egy SW prellmentesites sem egy ordongosseg. Viszont sokkal kevesebb helyet foglal el a panelon.
Nezzel mar meg egy LED karakterisztikkat legyszives. Feszultseg valtoztatassal nem lehet a fenyerejet valtoztatni. Viszont a PWM vezerles teljesen megfelel a celnak. Soot : 16F887 2 azaz ketto PWM csatornaval rendelkezik, azaz 2 LED vezerleset is meg lehet oldani ugyanazon idoben.
Ugy latom Te "Write only" uzemmodban forumozol.
A LED egy félvezető, annál nem működik az, hogy a feszültséget tekergetem és a LED úgy ugrál. A Led fényerejét a PWM megoldáson kívül csak áramgenerátoros megoldással tudom elképzelni. A két megoldás közül még mindíg a PWM az egyszerűbb.
Ez ha jól látom saját videó.
Gratula hozzá szép munka, elég látványos, és még így kamerában sem villódzik. Akkor kérdésem, csak simán rákötötted az egyik PIC lábra a LED-et és kész? Ellenálláson kívül semmi nincs kötve a PIC-LED-Föld közé?
Alapvetően az RC tag az nem prellmentesítő, hanem csak a jelszintváltozás meredekségét csökkenti. De ha a jelszint a pic bemenetének 0-1 érzékelési határánál mozog, akkor ugyanúgy prell lesz a bemeneten. Valódi prellmentesítés akkor lenne, ha a bemenet ST típusú lenne, mert akkor van némi hiszterézise, és lehet hozzá méretezni RC tagot. De TTL bemenetnél csak csökkenti a prellt, ami az esetek egy részében valóban akár elegendő is lehet. De ha már kontroller, akkor firmware-ből is meg lehet csinálni a prellmentesítést, és inkább ezt szoktuk csinálni, főleg ha több nyomógombról van szó, vagy gombmátrixról.
|
Bejelentkezés
Hirdetés |