Fórum témák
» Több friss téma |
Nézd meg a Timer1-et. Annak megszakításait számlálva, meg lehet oldani a feladatot.
Sajnos a Timer1-nek más feladata van, a Timer2 a PWM-et vezérli, így hát csak a Tmr0 marad.
Akkor elnézést kérek, én csak a sourceforge-os linken találtam rá és ott még 2004-es az utolsó bejegyzés. Viszont ettől függetlenül az elterjedtsége alacsony, nemtudom mennyire érdemes foglalkozni vele...
Jó a timer0 is, csak amikor túlcsordul, akkor a megszakításban növel egy számlálót, ami lehet akár 24 bites is. Ezzel már bármekkora időzítő előállítható.
Annak a számlálónak az értékét megmár programból figyeled néha.
Egy Timert több dologra is lehet használni, ha periódikus mindkét esemény.
Idézet: Akkor ez a program kell neked, s itt a megoldás (4 MHz-re).„Bocsánat, hogy nem írtam, asm-ben próbálkozok.” Idézet: Az mindegy. Az előző JAL példában csak a vezérlő nevét kell kicserélni. „Ja és PIC16f882-ről van szó.” Idézet: Kb. annyira, mint a CCS C-vel, MikroC-vel. A különbség az, hogy itt a könyvtárak forrása is hozzáférhető.„nemtudom mennyire érdemes foglalkozni vele...” A jelenlegi szinten kb. a PIC14K50 és a PIC18F4550 USB CDC, HID és bootloader, ameddig van támogatás, illetve PIC18F4620 FAT32 mintapéldákat láttam. Ami ezen túl van (TCP-IP, új mikrovezérlő típusok, illetve a 16 és 32 bites mikrovezérlők) az nem támogatott. Magas szintű nyelv lévén nem nagy dolog áttérni JAL-ról C-re vagy Pascal-ra.
[Akkor ez a program kell neked]
Köszi, de ez nem jó mert közben a PIC-nek más dolga van.Ha ezt a delay rutint berakom akkor mást már nem tudok csinálni, mert csak számlál meg számlál...... Úgy szeretném megoldani, hogy fut egy program, de csak 10 percig, és ha lejárt az idő, a program befejezi az éppen aktuális műveletet, és leáll. Valójában összetettebb lenne a művelet, de sajnos a PIC belső EEPROM-ját még nem tudom használni, ezért maradtam a 10min -os idözítésnél.
Sziasztok!
Nem tudjátok, emelkednek a pic mikrokontroller árak a japán tragédia miatt vagy nincs rá hatással? Egyes számitástechnikai eszközök ára ugy tudom már emelkedett...
Egyrészt valószínű emelkedni fog, másrészt nem csak a PIC-ek ára, de ez más kérdés...
Senki sem tudja pontosan, mindenesetre a Microchip tagadja, hogy barmilyen hatassal lenne a gyartasi lancfolyamatra, hiszen nem volt gyaruk az erintett teruleteken.
Itt irtam anno rola ill van ott egy link a hivatalos bejelentesre is: Bővebben: Link
Köszi, azt sejtem hogy mindenre hatással lesz valamennyire.
A kérdés ugy helyes hogy a két fő mikrokontroller családot vajon egyformán érinti a várható árnövekedés vagy valami miatt lehetnek különbségek? Esetleg ujjabb érv keletkezik valamlyik mellet, tovább mélyítve a vitát melyiket érdemesebb alkalmazni?
Sziasztok!
Építettem egy keypad lcd PIC combót kb ahogy a mellékelt képen van. (csak pull up resistorok vannak a bill sorain illetve az oszlopokon nincsenek az 1K-sak rajta) Írtam hozzá C18-ban meghajtó fv-ket, működik is minden szépen csak valamiért a program újra és újra lefut. Tehát ha pl kiírok valamit az lcd-re és bekérek egy számot és azt akarom h a szám jelenjen meg az lcd-n akkor késleltetéssel ki is tudom csalni azt viszont mindig visszaugrik az első szövegre. Ha valaki tudni esetleg tippet adni h ez miért lehet, hálás lennek. Üdv
Rosszul írtad meg a programot.
Ha értelmes választ is akarsz, lehet, hogy csatolni kéne a programot is!
Így aztán rezeg, mint állat...
Hali.
Köszi a választ, mellékelem a forrást. Remélem tudtok segíteni. @simpi: igazad van, rossz a kapcsolási rajz. Nem így van bekötve. Elkészítem az aktuálisat és felrakom.
Bocs a dupla postért de nem találom a szerkeszt gombot.
Itt van az aktuális kapcsolási rajz. Köszi ha megnézitek.
Még mindig nem jó a rajz (vagy a kapcsolás):
1. Az MCLR bemenetet fel kell húzni (10 kOhm) 2. Mindkét VDD és VSS lábat be kell kötni (nem viccből vezetik ki két helyen) és mindkettő közé kell egy-egy 100 nF! A programmal az a baj, hogy kimaradt belőle a végtelen ciklus, emiatt a program folyton újraindul. Ilyen szerkezet kellene:
}
köszi a választ:
1. Azt olvastam, hogy ha az MCLR lábat kikapcsolom kódban akkor nem kell bekötni. 2. Mindkét VDD és VSS láb be van kötve csak lemaradt a rajzról. Módosítottam a maint ilyenre:
Így működik is de csak akkor ír ki valamit is ha megnyomok egy gombot a keypadon. Ez miért lehet? Illetve ha akármi mást a cikluson kívülre rakok vagy a pointernek a cikluson belül adok értéket akkor már nem működik.
Csak azokat kell ciklusmagba tenni, amiket többször kell vizsgálni az idő során. Az init(); ilyen függvény nálad? Nem hiszem...
Az MCLR lábat mindig fel kell húzni, vagy lehúzni 10k-val. Ha érdekel miért keress rá! Ezerszer leírtuk, kiveséztük, talán az oldalamon is megtalálod az erről szóló részt az égetők beállítása cikkben.
Szia!
A PIC18F4550 tud belső MCLR-t, tehát ha ezt az üzemmódot bekapcsolod, akkor nem kell a felhúzóellenállás, mert olyankor RE3-ként működik ! Steve
Szia!
Hallgass Watt -ra! :yes: A MCLR vonalon nincs a PIC-ben védő dióda, könnyen tönkre lehet teni a kontrollert. Ha a MCLR láb lebeg vagy túl nagy impedanciás, a zavaroktól a kontoller programozási módba bármikor beléphet.
Rendben, felhúztam az MCLR-t.
Viszont a main()-be nem értem miért kell egyáltalán a while(1), hogy ne induljon újra az egész. Miért nem áll meg a main() végén a PIC futása? Valamelyik másik fv-ben írtam valamit ami újra indítja az egészet? Belegebedek se találom meg Idézet: „A PIC18F4550 tud belső MCLR-t, tehát ha ezt az üzemmódot bekapcsolod, akkor nem kell a felhúzóellenállás, mert olyankor RE3-ként működik !” Valoban, azonban csak inputkent tud mukodni, raadasul nincs belso felhuzo ellenallasa (marmint az input pinnek), igy az lebegni fog. Lebego digitalis input pedig jobb esetben csak extra fogyasztast ideznek elo (a FET input buffer mukodesebol adodoan), rosszabb esetben pedig akar mukodesi zavarokat is (pl megrangatja a tapot, vagy EMI-t general stb). Egy ellenallas nagyon olcso, a legolcsobb alkatresz! Annak a merete is eleg kicsi ahhoz, hogy ne okozzon gondot akarmilyen kapcsolasrol is legyen szo. Szoval ezen igazan nem erdemes sporolni foleg hogy ez kell a kielegito mukodeshez. Idézet: „Viszont a main()-be nem értem miért kell egyáltalán a while(1), hogy ne induljon újra az egész. Miért nem áll meg a main() végén a PIC futása?” ...mert igy irtak meg a forditot, hogy ilyen kodot generaljon... A PIC nem szamitogep, es nincs operacios rendszere, igy nincs ertelme hogy a programbol "kilepjunk", egesz egyszeruen mert nincs hova kilepni... Es hat anno valamikor valamilyen oknal fogva ugy dontottek, hogy ha a main-bol barmi miatt is kilepnenk akkor a start-up kod azonnal ujra hivja amain fuggvenyt (gondolom ennek eszkoz megbizhatosagi okai vannak, mmivel ha veletlen a programozo kilepne a main-bol akkor max ujra indul es igy kisebb mukodesi zavart okoz mintha megallna azaz lefagyna). Ha meg akarod allitani akkor kell az a vegtelen ciklus a vegere... Idézet: Azért mert a PIC mindaddig fut, amíg tápfeszültséget+órajelet kap. Nincs olyan utasítása, hogy HALT. A main függvényt úgy kell megírni, hogy sohasem legyen vége (végtelen ciklus). „Miért nem áll meg a main() végén a PIC futása?” Gondolj csak bele: ha nem ciklusban futna a programod, esélyed sem volna gombnyomással befolyásolni, mert már rég lefutott a program, mire a gombot megnyomod!
Értem. Köszönöm a választ mindkettőtöknek. Van még probléma de akkor ezek alapján megpróbálom megoldani.
Üdv
Igazatok van! Kisebb PIC-nél én szoktam használni ( 12F675 ellenállás nélkül ), eddig nem volt probléma, de adott helyzetben lehet, hogy problémás lehet . Nagy lábszámú PIC-nél így a többi, nem használt lábra is kapcsoltok ellenállást vagy kimenetnek állítjátok?
! Steve
Kimenetnek, mert akkor nem kell ellenállás. 12F683-nál pl. el lehet hagyni az MCLR felhúzót is, ha az MCLR engedélyezve van, mert van belső felhúzó. De 12F675-nél nincs, oda mindig kellene felhúzó. Egyes újabb 18F-ek is tartalmaznak beépített felhúzót az MCLR lábon, ezeknél is lebegésben hagyható az MCLR láb, ha meg van hagyva MCLR-nek. De ez nem általános, adatlapból mindig meg kell nézni, hogy mi a helyzet ezen felhúzó terén.
|
Bejelentkezés
Hirdetés |