Fórum témák
» Több friss téma |
Sajnos nekünk nincs más, mint a kapkodás. Az általunk épített, forgalmazott rendszerek (mind külföldi és ált. Microchip alapúak (16Cxxxx)) tartalmaznak bug-ot. Vannak olyan hibák, amiket nem akarnak vagy nem tudnak kijavítani. Ezt a példát amit felraktam, nekik kellett volna beépíteniük a mikrovezérlőjükbe, de nem hajlandóak, vagy mivel elég régi a proci, már lehet, hogy nem fér bele. Így nekem nem kellene kínlódni hardweresen, meg szoftweresen.
Az indulási késleltetést olvastam itt a fórumben egy hozzászólás erejéig, de HP41C-jét még nem, elolvasom. Ezeket a finomságokat csak úgy tudja megtanulni az ember, ha végig kínlódja, meg ha kap ilyen hathatós segítséget.
Ezzel kapcsolatban van még egy érdekesség, mármint azzal, hogy nem mindent jól állít be a flowcode.
Ennél a panelnél ill. pic12f1822-nél az analóg csatorna kezelését nem jól kezeli a program. Legalábbis ezt tapasztaltam. C-kód generálásnál összeállítja a deklarációkat stb. És ebben van egy ADC TYPE konstans amit erre a mikrovezérlőre 26-ra állít be. De nekem az ADC nem működött. Ez a mikrovezérlő a kommentekben nincs felsorolva az ADC-TYPE-oknál. Míg végül megkerestem, ill. kitapasztaltam, hogy az ADC-TYPE 10-es változat amivel működik (12f1840). Idézet: Több ilyen hiba is van a programban, nem egyedi eset. Úgy értem, hogy több kontrollernél vannak ilyen és ehhez hasonló gondok (bug-ok). Nincs mit tenni, valahogy ki kell kerülni a hibát. „pic12f1822-nél az analóg csatorna kezelését nem jól kezeli a program” Idézet: „A programban használsz Boolean (logikai) változót. Flowcode-ban nem túl szerencsés, hibákhoz vezethet, javaslom a byte típust.” Elképzelhető-e az, hogy emiatt van az előző fejlesztésemben egy olyan hiba, ami ritkán jön elő és nem találom az okát? Időnként egy feltétles elágazásnál, eltéved a program. A 40db panel nem következetes módon, véletlenszerűen hibázik. Sajnos nincs a panelen ICSP-hogy élesben láthatnám a belét. Szimulátorban pedig nem tudom előidézni. Csak a hiba jellege (látható tünet) alapján tudom, hogy nem az az ág fut le, mint aminek kellene. Oszcilloszkóppal mérve a bemeneti jeleket jól kapja kb. 99% (legyen 95%)-ban jól fut le, de időnként nem. A probléma a tettenéréssel van, hogy egyszerre 40db megy és nem 1-2 géppel van probléma, hanem véletlenszerűen. De a hiba mindig ugyan az. Újraírom a programját. Csak 40db felprogramozni menet közben húzós lesz.
Javaslom, hogy a 40 egységből csak négyet-ötöt programozz át. Ha azokon nem jelentkezik a hiba, akkor megvan, mit kell változtatni.
Ezt úgy szoktam "csinálni", hogy 1db-on panelcsere új programmal. Teljes körű teszt, hogy működni működik-e a berendezés. Utána 10db pót mikrovezérlő felprogramoz. 1 ember gépek bontása, 1 ember mikrovezérlő csere, újabb 10-10-10 felprogramozása, 1 ember gép összeszerel. Nincs idő. Termelés.
Szia !
Idézet: „nem tudom megbecsülni előre azt az időt, hogy mekkora szűrési időre van szükség.” Milyen környezetben vannak ezek a panelek, hogy ilyen módú és intervallumú szűrésre van szükség ? 4MHz -en kellene járatni, és a program elején beállítani a belső órajelet, ehhez pedig a timert. Timer alapot ezen belül még lehet pontosítani, én 1000Hz -re állítanám. Ha ezen kívül külső potival még akarsz ofszetet állítani azt ennél egyszerűbben is meglehet tenni szerintem. Idézet: „az ADC-TYPE 10-es változat amivel működik (12f1840).” Multkor kinlódtam vele én is, bár az ADC ment, csak furcsa volt. Hogyan állítottad át az ADC_TYPE értékét, hogy az, azzal a #define MX_ADC_TYPE_10 fordítsa hex-re ?
Szia!
Ez egy berendezésnek (fejésvezérlő) külső indításának javítására szolgál. A probléma kovetkező: leemelő munkahengerben van egy mágnessel előfeszített reed cső (NO). Ha a fejős meghúzza a kötelet, mert meg akarja fejni a tehenet, a reed csőtől elhúzza a dugattyúban található másik mágnest, így a reed cső kontaktot ad. A fejésvezérlő eszt észlelve, elzárja a vákuumot, így a kezelő le tudja húzni a kötélet a fejőkészülékkel, miközben elindul a pulzáció. Ahogy öregedik a leemelő munkahenger, valamiért egyre érzékenyebb lesz a reed cső, mert fajs indítási jeleket küld a fejés vezérlőnek. Valószínű ezek tüskék, de pontos hosszuk nem ismert, mert itt is kiszámíthatatlanul bármelyik készülék tudja ezt produkálni. A gond nem is a fejés indítással van, hanem a fejés végi automatikus leemeléssel, ugyanis ez nem történik meg. A fejésvezérlő programja csúszik szét. Ha a tejátfolyás mérő által indított fejés vége nem történik meg, a tehén túl lesz fejve, ami tőgyulladást okoz. A pontos időzítést ill. a szoftveres szűrést nehéz "kitalálni", mert nem lehet menet közben, egyszerre 24 fejőállást, vagy 56db fejőállást monitorozni és detektálni a hibát, megállapítani a tüskék hosszát. Ez több okból: egy fejőház nem az a körülmény, ahol laptoppal, oszcilloszkóppal stb. tud rohangálni az ember. A szoftveres késleltetés nem lehet túl hosszú, mert a kezelőnek annyi ideig stabilan adott pozícióban kell tartani a berendezést, ha túl gyors akkor a valódi indítást is kiszűröm, ha túl lassú akkor meg sohasem fog elindulni a berendezés. A körülmények mostohák: sz*r, h*gy, amónia stb. A tehén megemeli a farkát és már fröcsög is minden szerteszét. Az állásszerkezetekre felszerelt berendezések, hatalmas ütéseket kapnak, mert a 500kg-800kg-ig terjedő tehenek fészkelődnek a helyükön, döngetik az állásszerkezetet. Láttam olyat is, hogy az amúgy egy tehén szélességre tervezett helyen egyik tehén elment a másik mellett. Azt hittem szétszakad minden. Tehént nem érdekli, hogy mi szakad. Keressetek rá a neten: "SAC fejőrobot fábiánsebestyén". Lézeres tőgykeresés és kamera van beszerelve a robot fejbe. Ha bolond a tehén és rúg, ne tudjátok mit kap a robot fej. Idézet: „Ha ezen kívül külső potival még akarsz ofszetet állítani azt ennél egyszerűbben is meglehet tenni szerintem.” Ötlet?
Megkerestem az FCD alkönyvtárban a mikrovezérlő leírását: pl: pic12f1822.fcd.
Átnéztem, és van benne egy sor ADC_TYPE_26 Meg megkerestem a CAL könyvtárban az PIC_CAL_ADC.c és megnéztem, hogy melyik ADC_TYPE az ami szerintem jó lehet. Nem sikerült elsőre. A pic12f1822.fcd-ben kijavítottam az ADC_TYPE_26-ot. Idézet: „4MHz -en kellene járatni, és a program elején beállítani a belső órajelet, ehhez pedig a timert. Timer alapot ezen belül még lehet pontosítani, én 1000Hz -re állítanám.” Bakman segített ebben, kivágta az erdő elől a fát. Ebben a projektben nincs igazán annak jelentősége, hogy 100ms vagy 120ms, mert itt nem marad le a rendszer semmiről. A nagyságrendi eltérésből lehet probléma, ha 0.2 sec helyett 2 sec-ig késleltetek, mert az 800db tehénnél 1600sec. Következő alkalommal a fejők kikészítik a vasvillát, mire odaérek.
Szia !
Az 1000Hz -es tmr0-t azért írtam, mert azzal a késleltetést egyszerű meghatározni. Ha alapból, csak a példa kedvéért mondjuk van konstans 100mS, ahhoz a potival +/- tudsz adni. Idézet: „A pic12f1822.fcd-ben kijavítottam az ADC_TYPE_26-ot.” Kijavítottam én is, Köszi !
Nekem az 1000Hz-es megszakítással van bajom, ill. a nagyságrendjével.
Nagyon nagyon régen foglalkoztam mikrovezérlő programozással. Akkor programoztam utoljára PIC-et, amikor 16C84-es újdonság volt. Nekem újra kell tanulnom az egészet. Kellene annyi agyamnak lenni, hogy kiszámoljam vagy annyi tapasztalatomnak lennie, hogy ráérezzek, hogy a megszakítás kérelmek gyakoriságával, valamint az interruptokba írt kód mennyisége ne akadályozza a programfutást stb. Annyira sok minden újdonság van ebben a Pic-es dologban, meg mindenféle periféria, hogy rengeteg idő kell. Ezért tetszik a Flowcode, mert agresszív fejlesztést tesz lehetővé (meg nagy szívásokat is), mert ha újra megtanulnám az Assembly-t, akkor kénytelen lenne az ember mindent megírni, következetesen végigmenni mindenen és nem azt gondolni, hogy ha beállítom a programban az internal clockot, akkor azt lekezeli, nem kell vele foglalkozni. Idézet: „Ha alapból, csak a példa kedvéért mondjuk van konstans 100mS, ahhoz a potival +/- tudsz adni.” Én úgy gondolom, hogy ez történt, csak a maximum beállítható, külső időt arányosítom. A hozzászólás módosítva: Dec 5, 2015
Ha nem értem teljesen félre amit szeretnél akkor ez is egy lehetőség.
potival beállítasz egy időt ami a késleltetés, és ahhoz számolsz 1mS pontossággal.
Szia !
Villámkérdés Ha be szeretném kapcsolni az ADC belső referenciát, vajon elég egy C blokkban megadni FRVCON = 0b11000001; vagy piszkálnom kell az PIC_CAL_ADC.c -t ? köszi,
A beállítás függ a kontrollertől, de általánosságban elmondható, hogy az adcon1 és vrefcon0 regiszterekkel kell játszani.
Szia !
Magyarázzátok el légyszi, mert le vagyok maradva egy szinkópával, ezekkel a módosításokkal. PIC_CAL_ADC.c
Szeretném bekapcsolni ADCON1 0-1 bit-jét --> adcon1 = adcon1 | (ADREF & 0x03); FVRCON --> fvrcon=fvrcon | 0xC2; Hova illesszem ezt be, egyáltalán igy jó ?
ADC Fix feszültség referenciát bekapcsolni.
Legalább azt áruld el, milyen kontrolleren.
Nagyjából mindegy, jelenleg a módosítás menetét szeretném megismerni.
De konkrét kontroller pl: 16F1936, 12F1822, ....
Nem mindegy, mert vannak különbségek, az adatlapokban benne vannak.
Mivel a Flowcode-ban nem lehet megadni a belső referenciafeszültséget, kénytelen vagy C blokkokkal operálni. Én így csinálnám (lásd melléklet). A regisztereket kikeresve az adatlapból, végig lehet követni, melyik mit csinál. Perpillanat az an0 lábon lévő feszültséget olvassa be és adja vissza az x nevű változóban, 8 bites felbontással. Ha kevés a 8 bites felbontás, akkor az adresh és adresl regisztereket is ki kell olvasni, nem csak az egyiket.
Szia !
Köszi, kipróbálom a napokban. Üdv.
Sziasztok
Olyan kérdésem lenne hogy a több irányú elágazást lehet e 10-nél több felé ágaztatni?
Nem de használhatsz többet a második elágazás 11-től indul és 20 ig megy stb
A hozzászólás módosítva: Dec 13, 2015
Nem. Ha két vagy több ilyen elágazást teszel egymás után, nem jó? Ha a tíz lehetséges irány közül egyik sem jó, akkor a "bal szélen" megy tovább a folyamat, tehát a tíz irányú elágazás tulajdonképpen 11 lehetséges irányt jelöl.
A hozzászólás módosítva: Dec 13, 2015
Sziasztok
A mellékelt programban hogy tudnám megkülönböztetni az utoljára bekapcsolt bit-et? Sajnos semmi ötletem nincs rá. |
Bejelentkezés
Hirdetés |