Fórum témák
» Több friss téma |
Hú... köszi ezt a kimerítő választ, már az első 10 sorban kezdett összeálni, sokkal jobban meg tudod fogalmazni , mint a netes leírások, most elmegyek itthonról, de utána kipróbálom, köszi!
Az sem bonyolult amit ott írnak csak binárisan kell gondolkozni.
vagyis a bináris számrendszerhez képest kell a ledek lábait bekötni, így ha bináris számokban számolsz akkor a kimenetet tudod úgy használni. Viszont nekem az nehezebb volt elsőre. Jól lehetett volna használni a 7 szegmenses kijelzőnél, és nem kellett volna ekkora pakkot tenni az elejére. Így én simán ledeket sorba tettem és a vezérlést úgy alakítottam ki. Először kiszámoltatom, hogy a ledsorból mennyi az ami nem világít, az értéket beteszem változóba(pl led_ki), majd ennyiszer ismételtetem meg az első ciklust(a változó megadásával) amibe a led kikapcsoló(nem világító) makrót tettem. Aztán a maradékát ami világít is változóba teszem(led_be), és a világít makrót, a követklező ciklusba teszem amit a led_be értékével ismétel meg. A végén meg csak STCP lábon 1 és 0. Az eredménye, hogy PL 10 ledből 3 nem világít majd 7 igen. Ja kimaradt, ez addig világít így míg ki nem sorozod a következőt, és le nem zárod a végén. Vagyis ha a pic kilép a ciklusokból és megáll, ez akkor is fog világítani, míg ki nem kapcsolod az egészet. Arra figyelni kell, ha 10 leded van, akkor is illendő 2x8 vagyis 16 adatot kiküldeni, mert egy IC csak 8 ledet vezérel a második is 8at de csak kettő van bekötve. (igaz nem próbáltam, ha csak 10 van kiküldve mit csinálna. Ha arra nincs semmi kötve, így a levegőben lenne, lehet hibás lenne a vezérlés) A lenti, és ez a példa csak a sorba tett ledeknél jó. Ha neked össze vissza kell kigyújtani ledeket ott célszerű az adatlapban és a többiek bináris gondolkozásával kalkulálni, dolgozni, mert 8 lednél nem gond, hogy minden 2. vagy 3. világít, de sok lednél, már problémás az én módszerem. Pl lásd a 7 szegmenses kijelzést. A hozzászólás módosítva: Okt 31, 2012
Köszi, mindkettőtöknek, akkor majd ezeket párszor átolvasom, és próbálkozok.
Köszi!
Szia!
Igen, mivel a pic st (schmitt trigger) bemenete csak a tápfeszének 80%-ánál billen magasba, az eltelt időt tudod alapul venni. Megszakításban szabadon fut a tmr0, és amikor túlcsordul 20mHz kristálynál kb 51uSec megszakítást okoz,és megnézi, hogy az adott láb magas-e? ha nem, akkor növeli a változó értékét eggyel ,ha magas, akkor beolvassa a változó értékét, ez a hasznos adat, és lenullázza a számlálót, kisüti a kondit, és kezdődik elölről(amikor szükséged van rá). Igy felépítve nem kell állandóan figyelni, a megszakítás elintézi a dolgot.Ráadásul akármilyen időközönként lehet meghívni, csak a kondit és a változót kell törülni előtte.Ugyan a skála nem lineáris, de jól lehet detektálni a poti helyzetét. üdv. Foxi
Sziasztok!
Az miért van, hogy leteszteltem az RB0-s megszakítást flowcode mintaprogramját a hardveren és nem egyesével növekszik az érték? Írtam egy programot, ami rb0-t használ és folyamatosan lefagy tőle a hardver...Nem értem mi lehet a problémája :/. A kapcsolás, amit használok a PICKIT2 Demo Boardhoz hasonló, szóval azzal biztosan nincs probléma... Annyi különbség, h csak 20MHz-es külső kristályt használok, valamint 2 nyomógombom van Próbáltam PORT megszakítással is, hasonló eredményekkel, mint az RB0-val... Valakinek valami ötlete van? A hozzászólás módosítva: Nov 1, 2012
Programban fel lehet húzni?
Vagy kívülről kell? A hozzászólás módosítva: Nov 1, 2012
Így gondolod?
10K-val vagy mekkora ellenállással?
És úgy gondolod, h ez mindkét problémámra megoldás?
felhúztam, de rb0 továbbra sem egyesével növekszik, hanem össze-vissza, nem csak felfutóélre, hanem lefutóélre is
A hozzászólás módosítva: Nov 1, 2012
Pickit2-ben égetem a progit, ahol még a config1 és config2-t is be kell állítani
Config1: --10 0000 1100 0010 Config2: ---- -110 ---- ----
Direkt felraktam kb mindent, mert én egyszerűen nem látom, h miben van a hiba :/
Annak örülnék, ha úgy működne, mint a szimulátorában...
Így is kipróbáltam a programot, amit belinkeltem az előbb...
Az rb1 működik, de amint lenyomom rb0-t azonnal lefagy a program a hardveren
Azzal is próbálkoztam, hogy lecsökkentettem a tmr0 megszakítás frekvenciáját...
De így is lefagy a program :/ Egyszerűen fogalmam sincs, h mi lehet a baja
Szia csak ötlet, ha átteszed a kapcsolot RB2-re akkor mit csinál??
Köszi az ötletet, de RB0 megszakítás RB2-n nem lehetséges...
A kapcsolónak nincs baja, mert tüskén van, és a két nyomógombot tudom cserélgetni.
Szia! Próbálj meg a gombokkal párhuzamosan rakni egy 100nF-os kondit perl mentesítés céljából.
Sziasztok csináltam egy progit és érdeklödnék hogy a logikám jol müködött e. Annyi az egész hogy A0-án mérnék egy bejövö impulzust ami n széles és ezután ennek fügvényében villogtatnám a ledet. Vetnétek esetleg egy pillantást rá hogy mit rontottam el?
Mindkettőhöz 1-1 100nF-at?
Az érdekes, hogy az RB1-es nyomógombot nem megszakításban kezelem, azzal semmi baj. Viszont az RB0 nagyon-nagyon ritkán jó, egy gombnyomás erejéig, de általában ahogy lenyomom már fagy is le az egész hardver...
A megszakítást húzd ki a ciklus elé mert így bekavarodik.
Amugy járható a dolog? Milyen értéket fogok kapni 4MHz-en 0,9-2ms között?? Csak hogy milyen pwm-el tudok majd számolni.
Örök hálám!
Nem gondoltam volna, hogy ez lehet a baj... Most már működik Nagyon szépen köszönöm Neked is és Simpi-nek is a gyors segítséget!
Az a gond hogy az időt ez nem méri csak annyit csinál, hogy figyeli a gombot, neked meg azt kellene lemérned hogy mennyi ideig van benyomva.. idozitobe rakj egy feltételes elágazást ha in =1 akkor egy változóhoz hozzáad mindig 1-et, ez lesz az impulzus szélességed és amikor in=0 akkor elmented egy segédváltozóba majd nullázod, a segédváltozóval pedig már lehet műveleteket végeztetni.
Köszi elvileg meg is csináltam, mostmár csak az a kérdés hogy 4MHz-en 2ms-os impulzusig milyen értéket kapok. Illetve jó az amit csináltam?
idozitoben felesleges a 2. feltételes elágazás mivel ha az első halmis akkor egyértelműen a másik ág lesz igaz ezért a 2. feltételes elágazásból húzd fel az első hamis ágába a számítást. Mivel 4 Mhz-en 4-es osztót állítottál be így a frekvencia 976 Hz ami 1 ms tehát 2 ms-os impulzusnál jó esetben 2-t kellene kapnod a seg változóra.
Ok öszi és akkor hogy tudok mérni 10us pontossággal, nem kell teljes pontosság de azért közelitöleg
Sehogy szerintem, de lehet rosszul tudom. 20megás kvarccal max sebességen is csak 0.0512ms-al tudsz mérni.
Hali, szeretnék csinálni egy feltételes elágazást még hozzá úgy hogy a Port D 0. bitje =1 ha igen ezt csinálja ha nem akkor meg azt.
Ezt hogy tudom beadni neki? Plusz még azt hogy tudom beki definiálni hogy pl adott változókat a pic eepromjába mentse? Ha túl nagy a program akkor lekezeli a bankváltásokat? A hozzászólás módosítva: Nov 1, 2012
|
Bejelentkezés
Hirdetés |