Fórum témák
» Több friss téma |
Én assembly-ben programozok, nem értek máshoz..
Ha a villogást delayyel csinálod akkor persze, hogy késleltetve lesz, mert addig nem csinál semmit a kontroller. Timeres megszakítással villogtass és akkor nem lassítja a főprogram futását.
Üdv,
Azt meglehet csinálni, hogy egyszerre két fajta megszakítást használók? Mivel szükségem lenne két külömböző időzítésre ami egyszerre fut. TMR0-át szeretném működtetni a belső öszcillátor segítségével valamint a TMR1 időzítőt is viszont azt egy külső léptetés segítségével. TMR0 és TMR1 túlcsordulásakor jön be a megszakítás, szóval futhat e több megszakítás egyszerre vagy, miként lehetne ezt megvalósítani mivel a második időzítést nem szeretném delay-es megoldással megcsinálni hanem azt is egy perifériával a TMR0-val. Előre is kösz
Szia!
Persze, csak a megszakításban ez IF bitek vizsgálatával el kell dönteni, hogy ki kezdeményezte ! Ha van többszintű megszakításod ( pl. 18-as sorozat ), akkor lehet külön megszakításszintre programoznod, de akkor tudnod kell, hogy az alacsonyszintűt a magasszintű megszakíthatja !
Nekem 16f887 esem van. Szóval először végrehatja az egyik megszakítást majd utána kezeli a másik megszakítást? Ebben az esetben nem lesz hatással az egyik időzítő működése a másikra? Esetleg egy rövid példaprogrammal nem tusz szolgálni, hogy miként is lehet ezt programon belül kialakítani? Két megszakításos progit nemtaláltam.
Az időzítő működésére nem lesz hatással, de azt nem árt megjegyezni, hogy a megszakítási esemény keletkezése és kiszolgálása között több-kevesebb idő eltelik, s ebbe szólhat bele a többi megszakítás...
A 16-os sorozatnak egyszintű megszakítása van. Jelez a TMR0, ezért beugrik megszakításba, ott eldöntöd a TMR0IF vagy TMR1IF jelzett, megcsinálod a szükséges lépéseket, majd kilépsz. Mivel a Timerek hardveresen mennek, ezért az, hogy az egyikhez tartozó feladatot végzed, ez nem befolyásolja a másik működését! Egyszerre a proc. persze csak 1 dolgot tud csinálni, tehát itt is a két dolog csak egymás után következhet!
Nézd meg a pdf-ben a megszakítás részt !
oks kösz!
Nincs valakinek ethernetes Proteus kapcsolása ami működik ? Proteusban szeretném szimulálni .
A hozzászólás módosítva: Ápr 1, 2015
Tényleg.. Tud is vagy 150 -et (grep CHIPname chipdata.cid | wc -l)...
A PICkit2 kb. 600 -at, a PICKit3 közel 900 -at... Nem tudom, mit kell majd kezdeni, ha a mondjuk egy újabb féle törléssel rendelkező kontrollert kellene kezelni (EraseMode 0 .. 7 van a programban). Már egy 16F88 vagy a 16F88x -et nem tud kezelni, hiszen két konfigurációs szavuk van. A PICkit2 vagy 3 nem csak programozó, hanem nyomkövető is... Bőven megéri az árát.. Nekem elhiheted, a PICkit2 "adatbázisába" is fel lehet venni újabb típusokat. A hozzászólás módosítva: Ápr 1, 2015
grep | wc -l Nem hittem volna, hogy ezen a topicon ilyet is latni...
Srácok, a timer által okozott megszakítás az egyenértékű egy külső periféria által okozott megszakítással igaz?
Tehát mind kettő esetben a főprogramból a megszakításra ugrik, végrehajtja az utasításokat majd visszatér a főprogramhoz, oda ahol abbahagyta. Ez így helyes?
Egyenerteku, ha prioritasok megegyeznek.
MikroC-ben , hogyan tudom beállítani a konfig biteket ? Próbáltam CP = 1; Nem jó. CP : 1; nem jó.
Én akarom beállítani a kódban. Nem találok ezekről semmi leírást neten. A hozzászólás módosítva: Ápr 2, 2015
Sziasztok!
Nemrég ismerkedésbe kezdtem a PIC programozással C nyelven és lenne egy eléggé kezdő kérdésem. Van például egy változóm amiben egy 4 számjegyű számot tárolok. Hogyan tudom ezt helyi értékenként lekérdezni belőle és elmenteni ezt az egy számot egy másik változóba? Előre is köszönöm a segítséget!
Tedd egy tömbbe a számokat és akkor egyesével is lekérheted.
Vagy ha a számod típusa int és egyben van, akkor át kell konvertálnod char típusra. Az itoa(), atoi() függvények fognak neked segíteni, persze ha jól értem amit kérdezel. A hozzászólás módosítva: Ápr 2, 2015
Úgy, mint a való világba, ha ki kell fizetned 3458 Ft-ot ! Elosztod 1000-el, megkapod az ezresek számát, a maradékot elosztod 100-al, megkapod a százasok számát és ha nem adod fel meglesz a tízesek és az egyesek száma is ( ott már nem biztos, hogy kell osztani ! ) !
szerk.: Remélem jól értettem a kérdésedet ?! A hozzászólás módosítva: Ápr 2, 2015
Szia , megnéztem letöltöttem a programot , megnyitottam a Pic típust , elmentettem , majd a kódomban hozzáadtam ezt a sort az elejére :
Fordításkor pedig ezt kapom : Idézet: „0 1507 Unknown pragma line ignored: '' lcd.c” A hozzászólás módosítva: Ápr 2, 2015
Még egy kérdésem lenne, nem vagyok túl jó angolból. A 16F887-es picnek csak az RB0 lába használható külső interruptként? Vagy az egész port?
TABLE 1-1: PIC16F882/883/886 PINOUT DESCRIPTION-ben azt írja, hogy az egész porton lehet interrupt-ot használni.
Idézet: Azt is írja RB1,2,3,4,5,6,7-re, hogy egyénileg szabályozható interrupt.„General purpose I/O. Individually controlled interrupt-on-change. Individually enabled pull-up.” Ami fura, hogy csak az RB0-ra írja, hogy külső... A hozzászólás módosítva: Ápr 2, 2015
Igen úgymond úgymond mindkettő külső de az INT láb ennél a PICnél megadható, hogy felfutó vagy lefutó élre billen. Az IOC a nevéből is ereded, hogy megszakítás változásra 0->1 1->0 mindkettőre megszakít(az újabb 16f-be már az IOC-ra is beállítható, hogy felfutó lefutó vagy mindkét élre billen).
Valamint az INT láb egy magasabb rendű nem periferiális megszakítás elég, ha az INTCON GIE és INTIE bitje 1. Az IOC viszont már egy periferiális megszakításnak számító megszakítás INTCON GIE PIE RBIE és az IOCB-ből amelyik PORT-ra szeretnénk a megszakítást 1-nek kell lennie. De a lényeg az egészből, hogy a PORTB-n végig van felhúzás és az egész PORT használható megszakításra, de a leírtak alapján különbözik az INT az IOC-tól.
Történelmi oka van. Más típusokon csak az RB0 használható külső megszakításra. A 16F88x -en e lehetőség helyett az IOC modullal lehet megszakítást kérni mind a 8 biten.
Még egy apróság: Az IOC modul megszakítása esetén a portot li kell olvasni a megszakítás kiszolgálásakor és utána kell törölni az RBIF bitet.
Helyreigazítás:
A 16F88x -en e lehetőség mellett az IOC modullal is lehet megszakítást kérni mind a 8 biten. Az IOC modul megszakítása esetén a portot ki kell olvasni a megszakítás kiszolgálásakor és utána kell törölni az RBIF bitet. |
Bejelentkezés
Hirdetés |