Fórum témák
» Több friss téma |
basszus jó lett.
![]()
Szívesen segítettem. Jó programozást a továbbiakban.
Most már müködik a kapcsolgatás. De csak a 2 és 4 lábon.Már csak az lenne a kérdésem hogy hogyan tudom használni a többit is bemenetnek?Hiába állitom a programba bemenetnek.Ez ugye kiderült a szivásom miatt
![]()
Sziasztok! Valaki nem gondolkozott még azon, hogy csinál egy cikket erröl a progirol? Tetszik nekem is nagyon, viszont fogalmam sincs, hogy hol áljak neki, Esetleg valaki nem tud valami magyar leírást róla? Előre is köszi a választ!
Hát én se értem hogy azok a lábak miért nem mennek.Valamiért szerintem a program nem kezeli megfelelöen.De most beszereztem egy 16F676 azzal tökéletesen megy.Most probálkozok ezzel.
Azt hogy lehet megcsinálni hogy ha a kimeneten világit a led egy ideig és ha világitás alatt megnyomok egy gombot akkor megszakadjon a világitás.Még akkor is ha van még idö hátra.És mennyen a program tovább.
Még egy kérdés.
![]()
Annyi változott, hogy 16f676 lett a pic. A pontos timer0 sincs beállitva.Mert igy látom mit csinál.De az lenne a legjobb takarékoskodás szempontjábol ha lefutna egyszer és sleepbe menne és wdt és a manuális kapcsolo felébresztené. Légyszi nézd meg hogy jó e igy a progi.
Köszi
Hát én is.
![]() ![]()
Hát tuti, hogy nem jó.Mert nem megy probapanelon.Mindegy kisérletezgetek.
Na sikerült.
![]() Hasonloan gondoltan a progit? Találsz benne olyan hibát amivel gond lehet?
Nem kellene müködnie?
Ha a másodperc "s" 3-nál kissebb akkor belép a feltételbe ahol ha 2-nél kisebb akkor a követ kezöbe. Itt ha a zsalu zárva van "nyitva=1" akkor tovább megy és megnézi hogy a "kap=1" ha igen akkor nyit rajta.Ezt 2 másodpercig csinálja mert eléri a feltétel a "s<2".Ekkor elindul a várakozás mig a p "perc" elnem éri a 60-at.Akkor mindent nulláz és kezdödik elölröl. Ugyan ez igaz a másik állapotra amikor teljesen nyitva van a zsalu és akkor zárja. A man_kapcs meg arra szolgál hogy bármikor kitudja nyitni a várakozás alatt és közbe lenulláza a percet is. De ez ebbe még kimaradt. Szóval onnan folytatodik az idő ahol nyitottam. Mi a gond vele? ![]()
Hello!
Hát ez nálam nem megy. Csak villog. Nincs megállás. Ami azon az oldalon van az ugyanezt csinálja ha berakok kapcsolot meg ledet . Viszont azt észre vettem , hogy ott a megszakitásba GP2INT van és nincs semmi a tulajdonságaiba a megszakitásnál. Amit te küldtél abba meg RB0INT és ott ugye az INT megszakitás van. Most a programom szorakázik? Vagy nem értem mi van. Ja és ha az eredeti programba az int_handle makroba megváltosztattom az idöt pl. 5 másodpercre akkor ha megnyomom a gombot akkor 5 másodpercre feljön az a ablakocska amin számol. De a te progidba ezt nem csinálja. Amugy bocsi ha nagyon lefárasztalak. ![]()
Lehet, hogy akkor az a baj. Mert nekem 4-es van. De kiprobálom 3-assal.
3-as portableval nem megy.Nekem csak ez a 3-as van
Akkor a te verziod is 4-es. És nálad megy amit küldtél?
Na megcsináltam a 3-as portable verzioba de itt is folyamatosan megy a villogás. Csak akkor csinál valamit ha azt csinálom amit már irtam a késleltetés átirással. Akkor reagál a gombra. Ha 4-be csinálom meg az egészet ott semmi nem történi nálam. A villogáson kivül. A kapcsolos dolog se megy. :no: Hát érdekes ez nekem
Nyisd meg szövegszerkesztőben /FCD/12F675.fcd-t.
Írd át RB0INT-et GP2INT-re (2 helyen). Utána működni fog.
Sajna az bent van melohelyen. Csak hétfön tudom élöbe kiprobálni.
Hát tegnap kicsit elnéztem a dolgot. Azt hittem péntek van
![]() ![]()
Hát igen nekem nincs olyan állitási lehetöség. Ha jól olvasom az adatlapba 72 ms van reset. Timer1-be is fellehet ébreszteni. De azt hogy kell beállitani ugy hogy tulcsorduláskor ébresszen?
timer1 Itt irja csak kinai ![]()
Sziasztok!
Egy kis segítséget szeretnék kérni. TMR1-es megszakítást szeretnék csinálni pl. 16f877-es procin, de úgy, hogy egy adott, előre kiszámolt és a tmr1h és tmr1l regiszterekbe beírt értékről induljon a tmr1, és túlcsorduláskor szakítson meg, majd ez az érték újra töltődjön be és így tovább. Külön makrót kell erre definiálni vagy a meglévőkkel is meg lehet csinálni? előre is köszi ![]()
Szia!
Megnéztem,de c-ben valami ilyesmi lenne: //tmr1-et inicializaljuk //timer uzemmodban, belso clock T1CON.TMR1ON=1; T1CON.TMR1CS=0; //belso ora, foszc/4 20/4=5MHz 0,2 usec T1CON.T1CKPS0=1; T1CON.T1CKPS1=1; //elooszto 1:8 5MHz/8=625kHz > 1,6 usec //625 a tmr1-ben 64911 FD 8F INTCON.GIE=1; //global interrupt enable INTCON.PEIE=1; //peripheria int. enabled TMR1H=0xfd; TMR1L=0x8f; --------------------------idáig inicializálás -----------itt a megszakitas void interrupt() { if (PIR1.TMR1IF==1){ //tmr1 szakitott meg? 1 msec letelt //t1_cnt++; TMR1H=0xfd; TMR1L=0x8f; PIR1.TMR1IF=0; //timer1 int torlese if (t_lcd>0) --t_lcd; ....és így tovább... : ))) mivel a flowcode-ban nem tudok kihozni pontos időzítést 20 MHz-ről, ezért gondoltam, hogy c-ben megszokott módon előre beállítom a tmr1-et, szépen elkezd inkrementálni, majd meszakít, így pontos 1 msec-os megszakítást tudok létrehozni. Egyébként proci regiszterekhez hogy lehet hozzáférni? pl. értékét áttölteni változóba? Köszi
Szia!
nekem sajnos 20 MHz-es kvarcom van. A Flowcode pedig a virtuális perifériák miatt tetszik, ismerkedni akarok vele, bár van próbapanelem is, de így gyorsabban tudom kipróbálni. Böngészem még egy kicsit a Matrixmultimédia fórumát, hátha megvilágosodom... De köszönöm a segítséget... Ha felfedezek valamit, majd megírom. ![]()
Egyébként amit szeretnék:
- pontos 1, 2 , 4 stb msec-os megszakítás - a megszakítási rutinban csökkentem egy változó értékét -ha ez nulla, végrehajtom a taskot, pl. lcd task és visszaállítom a változó értékét -pl.150 msec-onként lcd-re kiiratás, vagy 50 msec-onként billentyűzetleolvasás ehhez kellene a tmr1-hez hozzáférni, ami az előbbi c kódban sima ügy.
Sziasztok!
Nektek megy a tmr1 megszakítás szimulációban? Nekem pl. a led nem villog, csak pl. a tmr0-ról. De a próbapanelon meg jól megy, a fordítás úgy néz ki, jó.
Szia!
Köszi, érdekel. Közben én is találtam infókat a "Custom Interruptokról", most próbálkozok vele, én is felrakom, ha lesz rá érdeklődés. Üdv
Szia!
A T1SYNC engedélyező bitet, hogy tudom 1-re állitani? A TMR1CS 1-en van. Aszinkron modba szeretném kapcsolni a timer1-et.
Nem watchdog. Azt kilötem. A timer1-el akarok egy megszakitást, hogy ébresszen. De csak akkor ébreszt ha ez a bit 1-en van. "aszinkron módba" De ez eddig nem sikerült. Azért köszi
Az a baj hogy néztem.
//Megszakítás //Megszakítás: Engedélyezés TMR1 intcon.PEIE=1; t1con.T1OSCEN=1; t1con.TMR1ON=1; t1con.TMR1CS=1; t1con = t1con & 0x0F; intcon.GIE=1; pie1.TMR1IE=1; Csak itt nin olyan. És sehogy se tudom ide becsalogatni. Azzal lehetne tiltani a külsö órajel szinkronizálást. Mert csak akkor lessz a timer1 aszinkron modba. Gondolom te se foglalkoztál még ilyennel.
Hát sajna nem nagyon.Itt kaptam egy ötletet
[quote]PIC16F676 és MPASM esetén így: BSF T1CON,NOT_T1SYNC (ilyen bugyuta nevet adtak a 2. bitnek, hogy NOT_T1SYNC, a P16F676.INC állományból lehet kilesni.) De ez igy biztos nem megy. A boost C include mappába a 16F676.h-ba van egy ilyen definicio "#define NOT_T1SYNC 0x0002". De ha ezt berakom c-be akkor semmi extra nem történik. |
Bejelentkezés
Hirdetés |