Fórum témák
» Több friss téma |
tedd fel a progidat lássuk mi "fogja le" a programfutást
Nem az a baj, hogy lefogja valami a programfutást, egyszerűen kijelző vezérlést nem így kell csinálni. Ugye 6db kijelző van, minden kijelzőnek 16.6%-ot kell világítani. Az én programomban (de a tiédben is hasonlóan) ciklusonként vált kijelzőt. Addig nincs baj, amíg minden ciklus egyforma ideig tart, mert ilyenkor egyforma ideig világítanak a kijelzők. Lásd: ha más program nincs a pic-ben akkor jó volt.
A gond ott kezdődik, hogy ha az egyik ciklusban jön egy megszakítás (Timer0), akkor azt fel kell dolgozni a picnek, addig a főprogram nem folytatódik, ezért az a ciklus hosszabb lesz, és a kijelző is tovább fog világítani, ezért nagyobb lesz a fényereje. Ettől van a villogás. Két megoldás van: Vagy nem használ megszakításokat, viszont iyenkor számít a program hossza is, ha túl hosszú, akkor megintcsak villoghat a kijelző, (a parsic szereti pazarolni a memóriát) vagy a kijelző vezérlést kell megszakítással hívogatni. Én az utóbbit tartom jó megoldásnak. Viszont ehhez már kell az MPLAB is. Szerintetek?
Én azon gondolkodtam , hogy nem 6 digit lenne a kijelzés hanem 2*3
Már megvolt:
Bővebben: Link
Azt nem hiszem, hogy meg lehet oldani, hogy timer nélkülire átírjam: szinte mindenhez kell valami órajel, főleg az óra funkcióhoz. Jobb lenne az a megszakításos megoldás, de ahhoz én kicsi vagyok. Sem az MPLAB sem az ASM nem az erősségem (finoman szólva). Ha tudsz benne segíteni, azt nagyon megköszönöm.
Viszont amit ide feltettem, az majdnem tökéletes. Csak egy picit kellene gyorsítani a 2ms-os időalapon (pl 0,2 ms-ra), és mást nem kéne akkor átvariálni.Bővebben: Link Ezt nem lehet valahogy ASM-ben felgyorsítani? Persze úgy, hogy az óra 1000 ms-ja ne sérüljön.
Amint Panhard is írta ki kéne gyomlálni a programból az időzítéseket még 4000ms es monostabilt is láttam benne
csinálj egy időalapot 2ms es idővel és azt osztogasd le a megfelelő időzítésekhez
Sajnos órát nem lehet leosztással csinálni, legalább is amikor ezt kipróbáltam, 1-2 perc alatt is elmászott 1-2 másodpercet, ami azért vicc egy óránál.
Ha jobban megnézed két db timert használok: van egy 1000 ms az órának, és egy másik minden máshoz.
Az a baj, hogy így sincs elég ereje a procinak a hat db LED kijelzőt lekezelni, ezen kínlódok. Szerinted pont egy kis i2c busz hiányzik még hozzá?
Pedig másképp a parsicban nem tudsz pontos órát csinálni ! Órával én is kinlódtam de heti egy két percnél pontosabbra nem tudtam megcsinálni még lcd kijelzővel sem
Nem, a procinak meg se kottyan 6db kijelző, sokkat többre képes. A parsic nem tudja a kijelzőket kezelni.
Ha óra kellene én is RTC-t használnék, kérdés, hogy mennyire kell pontos óra. Azért a Parsic nagy segítség, de mellette nem árt ismerni valamennyire az asm-et. Én is csak egy éve foglalkozok pic-el, de mostanra már elég sok önálló projectet megcsináltam. Bővebben: Link De a komolyabbakhoz mindig kell az mplab is.
Itt van pl egy 6 csöves nixi órahoz írt program
74141 es meghajtó íc hez készült (bináris kimenet) de megpróbálhatod 7 szegmensre áttenni a kimenetet (ez sem volt pontos 1 timerrel !)
Csináltam egy "2*3"digites kijelzést is
ha evvel sem jó akkor csak azt tudod csinálni amit régebben DCsabi : egy pic felelős a kijelzésért , egy másik csinálja az összes többit , és uart on kommunkálnak ( egy +628 as piccel tökéletes lesz a kijelzésed) és a másikba azt írsz ami csak belefér
Leszimuláltam a programodat a 6 kijelzős hőmérőmön.
A megoldás az, hogy egy sort kell áthelyezni a parsic által generált asm-ben, és mplabbal újra lefordítani. Tökéletes lessz a kijelzés. Melléklet... Ha nem jön össze, külld át a kész progidat, megcsinálom neked.
Akkor visszaélnék az ajánlatoddal, már csak azért is mert ezen a gépen nincs is MPLAB. Bár a program még messze nincs kész, de ha jó lenne a kijelzés végre, az nagy előrelépés lenne. Felteszem az utolsó verziót és az inc -eket:
Legyél olyan kedves kivágni-berakni és főleg lefordítani! Köszönöm
Csak annyit csináltál, hogy áttetted máshova az inc. meghívását? Azt a timer0 megszakítást nem kellett beállítani?
A kijelzés hibátlan lett; sajnos én valamit még elkutyultam, mert a perc kijelzése mindig 0. A 10-es perc az jó, az óra és a másodperc is jó. Köszi mégegyszer!
Igen, csak annyit. Így megszakításból hívogatja a kijelzö.inc-t, így mindig ugyanakkor hívódik meg.
Sziasztok!
Tudna valaki egy parsicos példát mutatni két 877-es UART kommunikációjára? Kösz!
Három analóg bemenetet kellene összehasonlítgatni és az értékek függvényében vezérelni kimenetet.
Konkrétan három hőmérsékletet kell figyelni. A mérést MCP9700-al gondoltam megoldani. A hőmérsékletek 0-95C-ig lehetnek, ezt az érzékelő elvileg tudja bőven. Arra kéne valami ötlet, hogyan lehetne megoldani, hogy legyen némi hiszterézis a dologban? Azon is agyaltam, hogy esetleg a beolvasásokat kötöm időhöz, tehát nem folyamatosan kérdezné le az értékeket, hanem mondjuk csak 20-30s időközönként. Van erre valami jobb megoldás?
Referencia feszültséget muszáj beállítani?
A pic összes lába kelleni fog enélkül is...
Hello!
Csak éppen azt nem írtad meg, mi köze a három érzékelőnek egymáshoz logikailag. Vagy is mi a logikája az összehasonlításnak, amit tudnia kellene. Hiszterézises blokk, eleve van a Parsic-ban. De lehet készíteni is összehasonlító blokk, és RS tár segítségével is. Minden 2ms ciklusban lesz beolvasás, de ezt tárolhatod egy multiplexerrel, míg jónak látod. Vagy is 30sec időközönként másolod át. És minél "jobb megoldás"? Mert nem tettél fel semmit.. üdv! proli007
A feltételrendszer elég bonyolult, nem is annak a kilogikázása a probléma, hanem az analóg jelek lekezelése.
A "beolvasás" dolgon azt értettem, amit írtál is, tehát hogy 30s időközönként dolgozom csak fel az értékeket, ennyi időnként számoltatom újra. A kapcsolás egy fűtésrendszerhez készül, aminél van kétféle hőbetáplálás, puffertartály, útszelep, szivattyúk,stb. A lényeg az, hogy tudnia kell a gyors felfűtést a radiátorok felé, de amikor már temperál és megy a vegyestüzelésű rész, akkor dolgozzon a pufferre. Amikor leáll a tüzek táplálása, akkor ne keringesse a kazánhoz kimenő ágat a puffer felől, stb.
"Minden 2ms ciklusban lesz beolvasás, de ezt tárolhatod egy multiplexerrel, míg jónak látod. Vagy is 30sec időközönként másolod át."
Na, ez a rész a kérdéses, hogy ezt hogy kell megcsinálni? Minden analóg bemenetre rákötöm egy multiplexer bemenetét, az ok. De hogy megy ez az időnként letárolás?
Hello!
Ez viszonylag egyszerű. üdv! proli007
Köszi!
Közben valami hasonlót találtam dcsabi tollából is, igaz, ott mérésre használja, de ugyanez a módszer. (meg nem közvetlen analóg, hanem impulzust számol, de ez részletkérdés)
A Kaqkk tollából nem láttál valami hasonlót 7dig.pic néven egy pár hsz el feljebb ? :friday#1045047)
Bocs jobban belenéztem és látom csak az "én kijelzőm mellé" került a tároló amiről szó volt
Hali!
Valaki meg tudná mondani hogy az "Impuls, PWM out" modul impulzus része pontosan hogyan működik?
Keresd vissza itt az oldalon van a használatáról a leírás, én tettem föl kb. két hónapja.
|
Bejelentkezés
Hirdetés |