Fórum témák

» Több friss téma
Fórum » Folyamatábrás mikrokontroller programozás Flowcode-dal
Lapozás: OK   17 / 361
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Jan 10, 2011 /
 
Ok,

De valamiért szórakozik velem.
Chip beállításoknál, XTAIL-t állítok akkor a switc... menüben RC re áll...

Ha belül a menüövben XT re állítom akkor a chip/konfig menüben vissza áll RC re.

RC az nem rezonátor? Nekem quartz-om van... most 4MHz. Szóval akkor XT kell legyen... de akkor kívül mért RC.

A projekt menüt beállítottam közbe csak nem mentettem rá.
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Jan 10, 2011 /
 
Itt van pár módosítással.

betöltöttem a pic be, de nem üzemel.
Kiírja hogy - Fordulatszám: 240 és mereven áll.

jelenleg a RA3 lábon egy nyomógomb van amivelé tudom imitálni a bemenő jelet. 10Kohm van a 5V-on és 1k megy a lábra amúgy testel.

Hogyan kell erre az állapotra beállítani, hogy nyomásra adjon jelet.
Mert ha jól értem, most egyből 1az értéke a lábnak az áramkör szerint és akkor lesz nulla, ha nyomom a gombot.
Így a programot is át írtam, vagyis a feltétel nem "portA3 >0 hanem =0" akkor adon össze RPM+1, és a végén "RPMki" változóban tárolja.

RPM.fcf
    
(#) lalca válasza kkrisz75 hozzászólására (») Jan 10, 2011 /
 
Akkor egy kis segítség.Amíg fejleszted a programod,a config beállítások lényegtelenek.Kiválasztod a pic-et,beállítod az órajelét és kezdheted a program írását.Az órajel a késleltetések miatt kell a flowcode-nak.A configot égetés előtt ráérsz beállítani.Én pl. megcsináltatom a hex-et,beolvasom az égető progiba és ott állítom be(legtöbbször csak kiolvasom a picből).Természetesen ha egyből a picbe küldöd,akkor már a flowcode-ban be kell állítani.
Ahogy látom,fordulatszám mérőt szeretnél készíteni.Tanácsom,a megszakító jelét RB0/INT-re vezesd.
A rutinjában növeled 1-el és kész.Az időhöz TMR1-et használj,1:8-as osztással,de ezt még be kell állítani a 4 ütemű,4 hengereshez a következő C kóddal:
tmr1l = 0x84;
tmr1h = 0x6D;

Ekkor 0.3 sec-ig mér,hacsak nem tévedek.
(#) lalca válasza (Felhasználó 15355) hozzászólására (») Jan 10, 2011 /
 
Kicsit bővebben!
(#) kkrisz75 válasza lalca hozzászólására (») Jan 10, 2011 /
 
Biztos jó megoldás, csak nem nekem....

Ha később módosítanom kell akkor gondban lennék.

Más:
A megszakítás nem úgy működik ahogy gondoltam.
Ha lépésenként megyek végig rajta teljesen mást csinál mint ahogy elvileg kellene neki.

A valóságban pedig megint mást.

Alapban nem értem, hogy írhat ki a fordulatszám értéknek, ha nincs bemenő jel, illetve a port értéke nem 0

Csináltam kis led kapcsolgató programot, hogy megtudjam, hogyan kapcsol ez a program. Az jól megy, vagyis bitet ad be. Ledet fel-le kapcsolja...

Tehát az alap program nem számlál.
Reset nem lesz 1 így nem lép ki a ciklusból, így nem is ír ki semmit, vagy hirtelen leszalad és valami fals értéket kidob.

Szóval nem számlál. Ennek 1 oka lehet, hogy a megszakítás nem fut a háttérben a valóságban. Különben ha futna a nullát legalább ki kellene írnia. De ez vagy össze vissza számokat ír ki, vagy semmit, kivéve a szöveges részt az statikusan oda van ragasztva.
(#) lalca válasza kkrisz75 hozzászólására (») Jan 10, 2011 /
 
Az INT-et azért ajánlottam,mert mire odaér a program,hogy kiolvasd,lehet már meg is szünt a jel.
(#) kkrisz75 válasza lalca hozzászólására (») Jan 10, 2011 /
 
Csak az RB0 tudom használni az INT-et?
Azon van az LCD jelenleg. RB0-5 ig.

Ilyen lassan futna le a program? 250ms ról van szó. Ehhez képest 4Mhz az órajel. Ha egy utasítás1 10 órajelig csinál akkor is több ezerszer le kell futnia 250ms alatt.
Rosszul gondolom?

Amúgy azt nem értem, hogy ha megy szimulációban jól, akkor miért nem megy a valóságban.

simpi
Módosítottam a TMR0-t a linkek alapján. lényegében a összeadás került máshova benne.

Most picbe égetve 60at ír ki. statikusan, holott 0-t kellene. Nem értem miért.

Ha a láb fel van húzva 10Kohm-al + ra, akkor jól tudom, hogy 1 az értéke mindig annak a lábnak?
Ha igen, akkor a feltételben akkor kell számolnia, ha értéke=0 val, vagyis le testelem. Majd addig nem lép tovább amíg értéke ismét 1 lesz.

RPM.fcf
    
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Jan 11, 2011 /
 
Ok.

De nekem külső quartz van... vagy ez nem arra vonatkozik?

----------------------
Közben módosítottam fel töltöttem és működik...
va....eee.

Szóval az ott nem azt jelenti, hogy külső vagy belső...
(#) kkrisz75 válasza kkrisz75 hozzászólására (») Jan 11, 2011 /
 
Na tesztelve lett a kocsiban.

Működik, csak abszolút semmi köze a fordulatszámhoz.
Össze vissza ír ki számadatokat.
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Jan 11, 2011 /
 
Közben agyaltam és sikerült.

Letesztelve a kocsiban.
A fura az, hogy a matematikának ellentmond.
2 jel jön be fordulatonként. 1/perc esetén 60as osztás, illetve felszorzás kell.

Ezzel szembe, a mérési idő 1041Hz vagyis a program ennyiszer futna le 1mp alatt ha a timer számlálója 1041re lenne megadva.(ez volt a legközelebbi a 100 ms hoz)
Ezáltal elharmadoltam az időt. 347 ig számolt.
Ez alatt bejövő jelek számát 90nel kell felszorozni, hogy jó értéket adjon.

A valóságban 335ig számol és 50el szoroz.
Ezzel mér pontosan.

Feltételezem, ezek az eltérések a program lefutásából adódnak. Így ha telítódik a program akkor ezzel kell majd variálni.

A vicc hogy 4Mhz-en fut úgy a program mint a Parsicban írt programom 20Mhz-en.

-----------
Még egy érdekesség.
Ki kellett vennem a ciklust, mert azzal állandóan hülyeséget adott vissza. Mivel a timer be kiugrott, elvégszett egy összeadást, és vissza ugrott...
A program léptetésnél vettem észre.

RPM.fcf
    
(#) Szamy hozzászólása Jan 12, 2011 /
 
Üdvözletek!

Ide írok, mert nem tudom, hogy a progi , vagy a pic hibája :
16f877 -ről van szó, eddig tökéleten működött a progi, de most az egyik pillanatról a másikra nem ír a pic a saját eepromjába, és a meghatározott címekről mindíg 0 -t olvas ki .Sajnos most épp csak 1 panelem van ,és smd a pic, úgyhogy feleslegesen nem cserélgetném. A progiban állítottam el valamit vagy tud így elhalálozni a pic saját eepromja???
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Jan 12, 2011 /
 
Igen, most olvastam, és tényleg elírtam.

A pontos számítás: Amit parsicban is kellett használni...

Pl: 6000 1/min
6000 fordulat*2jel/ford=12000jel/ford / 60s= 200 jel/s

Ezt kellett vissza, felfelé számolni a másodperc annyiad részére leosztva amennyi a mérési idő.

Vagyis ha 250ms (1/4es sec)
akkor a jelek száma RPM*4*60/2 Vagyis RPM*120
De a mérési idővel lehet variálni. Ez Parcicban így volt.
Mert minimum 2ms a mérési ciklus legkisebb léptetési ideje. vagyis ott 125ig elszámolva kapod a 250ms ot.

Flowcode-ban más a helyzet.(sokkal jobb)
Itt a Timerben meghatározott Hz-t tudsz megadni, és abból kell vissza számolnod.
Most 1041hz=1mp.
Vagyis ha jól értelmezem, ezzel a frekivel indul el a program.
Az 1/4ed ideje 1041/4 vagyis 260.2 ig kell elszámolni, hogy 250ms ot kapjak.
Mivel elég a 1/3ad másodperc is, 347 ig kell számoltatni. (normál esetben RPM*3*60/2 képlettel számolható így a fordulatszám. vagyis RPM*90.
Ez volt a kiindulás..

Érdekes módon, a valóságban ezzel a tematikával 1000nél 1900at mutatott. Akartam számolgatni az eltérést, de parsic-os tapasztalatból kiindulva, gondoltam, hogy a program lefutásának, idejével csúszik el, de nem ért annyit, hogy kiszámoljam.

Van referencia, bemért stroboszkópom amin hiteles a fordulatszám mérő. Addig változtattam a szorzáson és a számlálón amíg jó nem lett. Így 335ig számol 1041Hz-en és 50es szorzása van.
Ezzel most 6000nél is pontos. Nem beszélve, hogy sokkal szebb mikor 50esével(50-100-150...) léptet és nem 60-120-180-240.

Ha még nem tettem, köszönöm, hogy felhívtad erre a programra a figyelmemet. Sokkal tágabbak a lehetőségek, mint a parsicban. De nem felejtem el azt sem. Sok dolog abban tized annyi, idő alatt megoldható. Egyszerűbb.
Ez viszont sokkal szolgáltatás gazdagabb.
Köszi, még1szer.
(#) kkrisz75 válasza Szamy hozzászólására (») Jan 12, 2011 /
 
Nem akarlak meg ijeszteni, de valahol olvastam, hogy korlátozott a pic eepromjának írási mennyisége.
Persze ez a szám nem kicsi.

Valahol olvastam régen, hogy egy program folyamatosan használta az eepromot, vagyis szinte minden lefutásnál újra és újra beírta az értéket.
Ha ezt csak 250ms onként teszi meg is akkor 1 nap alatt hányszor írja újra...

Ott egy tanács az volt, hogy kikapcsolás előttre tervezzék az eepromba a tartalom letárolást, ha lehet.
Még azt tanácsolták, hogy az elektronikába egy kicsit nagyobb kondival, lassítsák a leállást, és egy jeladó lábat használva akkor tárolja csak el az adatot, mikor a láb leesik 0ra a kikapcsoló gomb használata után.
De hogy itt volt-e HE oldalon vagy más fórumon már nem emlékszem.

Mennyire igaz, hogy korlátozott?, azt nem tudom, nem vagyok villamos mérnök.
Én próbálkoznék a beállításokkal, programmal, addig is nem kell forrasztani. Ha mindenen átjutottál és nem jó akkor, csere és próba.
Szerintem.
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Jan 12, 2011 /
 
Ezt hogyan érted.

"Tesztkörnyezetnek Paksot használom elég pontos 50 vagy 100Hz-es jelet ad. "

Tegyem a kocsit reaktorba?

---------
Amúgy igen, le kell tisztulnia a programnak. A változókkal nincs gondom. Csak más a nevük, de az elv ugyan ez.

Lehet veszek új próbapanelt, ha megjön a többi alkatrész, és annak megfelelően más lábra pakolom az LCD-t.

Egyenlőre most jól mér, tesztelésnek jó lesz így.
Még az LCD-n a jobbra igazítást is ki kell találnom. Mert most balra igazít.

Nem beszélve, hogy ékezetes betűket nem ír. Az á helyett y van. Más a karakter táblája az LCDnek mint a programnak. Azt is is ki kell találni, hogy hogyan módosítsam. (Pl ASCii kódokkal?) Vagy van más megoldás?

Kommunikációt is ki kell próbálni először 2 pic-el aztán több pic-el.
AD bemenetet is meg kell ismerni ebben a programban.
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Jan 12, 2011 /
 
Ez ok.
Így helyeztem el a programban is a szövegeket.
A 4db szóköz a fordulatszám értékeinek törlésére kell. Így nem kell az egész kijelzőt törölni és újra mindent kiíratni.

Az meg azért kell, mert a flowcode balra igazít.
Vagyis ha egyszer mér 900 at aztán 1000 és nem törlöm, akkor utána 900nál 9000 lesz látható.

A szép az lenne ha jobbra igazítana vagyis a 0 állapotnál a legszélén jobboldalt lenne a nulla, és onnan növekszik balra ha 2 - 3 - 4 számjegy
most ilyen.
szöveg: 0
szöveg: 50
szöveg: 100
szöveg: 1000

de szebb ha:
szöveg: ___0
szöveg: __50
szöveg: _100
szöveg: 1000
erre pedig változóval feltételt kell csinálni a kiírásba. Szóval jó nagy tartalmú makró kell a kiíratáshoz...
Pedig menyivel logikusabb lenne ha a számokat alapból az lcd jobbra igazítva írná ki.

Szóval akkor kell egy karakter táblát szerkesztenem külön az LCD-hez és azt indulás után egyből feltölteni?
(Az LCD tudja az ékezeteket, csak nem azon a küdon van mint amit a programok ismernek. Parsicnál ASM be bele nyúlva 255(á értéke) lett kicserélve 160 ra és máris ott volt.(például: lcdRXTX2.asm)

De ennél nem találtam sehol a szöveget.

lcdRXTX2.ASM
    
(#) Szamy válasza kkrisz75 hozzászólására (») Jan 12, 2011 /
 
Köszi, de nincs "agyoníratva" aeeprom. Bekapcsolásonként max 2 -szer olvassa a pic, és egyszer sem írja, csak ha hiba van , tehát a gyakorlatban egyszer sem, csak én adok meg 2 értéket az eepromba beégetésnél , hogy ne kelljen igazításnál a progit nyektetni. Eddig kb 5x volt írva.
(#) Szamy válasza Szamy hozzászólására (») Jan 13, 2011 /
 
Megoldódott, a pic volt rossz.
Újabb kérdés:
Ha wdt -t akarok használni, miután a chipcfg-ban engedélyezem, mit kell még beállítanom a flowcod-ban, hogy működjön?
(#) Szamy válasza (Felhasználó 15355) hozzászólására (») Jan 13, 2011 /
 
Megnéztem, de nem találtam választ azon a napon a hozzászólások között.
Akkor konkrétizálom a kérdést:
Ha engedélyezem a wdt-t , akkor c-ben be kell írnom a progiba , több helyre a wdt resetet. Viszont delay közben ez nem fog működni. A progi amibe betenném elég kövérre hízott, nagyon sok helyen van benne delay, lehetetlen mindet felosztogatni, és közé rakni a reset -eket. Kérdés , hogy pl megszakításból resetelhető-e megbízhatóan a wdt ?
(#) kaqkk válasza kkrisz75 hozzászólására (») Jan 13, 2011 /
 
Írtam egy programocskát ,a szám ASCII konverzióra
a flow szimulációban tökéletes működik (megtalál minden ékezetes karaktert ) de a valóságban csak 4 karakter
jó a kijelzőn : i j ö ü de ezek sem ott vannak ahol a szimulációban .
(#) kaqkk válasza kaqkk hozzászólására (») Jan 13, 2011 /
 
Bocs ez lemaradt

ASCIIKOD.fcf
    
(#) kaqkk válasza (Felhasználó 15355) hozzászólására (») Jan 13, 2011 /
 
Éppen ez a problémám : a teljes 255 karakterből a kijelzőn csak ez a 4 ékezetes betű értelmezhető .
hol lehet a többi ?
(#) kaqkk válasza (Felhasználó 15355) hozzászólására (») Jan 13, 2011 /
 
Ja értem ! Akkor nem egyforma karaktertáblájuk van a kijelzőknek ? Vagy csak a kijelzőknek más a karakterkészletük , mint az ASCII kódtáblázat ?
(#) vilmosd válasza (Felhasználó 15355) hozzászólására (») Jan 13, 2011 /
 
Hali
Altalaban a szabvany LCD-k ezzel a ket valtozattal kerulnek forgalomba. Persze, a gyakoribb a ROM A00 vari, tehat a japan karakteres valtozat. Egyszerubb csinalni egy karakter tablat ami betoltheto a CGRAM-ba, es azt hasznalni. Nekem van ilyen megoldasom C-ben, de nem tudom be lehet-e illeszteni valahogy a FC-be. Akit erdekel szoljon, felteszem ide.
(#) kkrisz75 válasza vilmosd hozzászólására (») Jan 13, 2011 /
 
De jó...

Nekem egyikkel sem azonos.
Amúgy HEstore -ból vettem. kék-fehér 4x20

Az az egy van. Annak teljesen más a karakter táblája.
(#) lalca válasza kkrisz75 hozzászólására (») Jan 13, 2011 /
 
Találni a neten többet is,de ITT egy.Ezzel készíthetsz egyéni karaktereket,amit a flowcode lcd kezelő rutinjával betölthetsz a kijelződbe.Egyszerre összesen ugye 10-t.De ezeket a dolgokat megtalálni a kijelző adatlapján.
(#) lalca válasza (Felhasználó 15355) hozzászólására (») Jan 13, 2011 /
 
De itt #891865 írja,hogy csak 4 ékezetes betűt talált,+ egyéb karakterekhez is jó.

off. Hogy lehet beilleszteni régebbi hozzászólást? on.
(#) vilmosd válasza lalca hozzászólására (») Jan 13, 2011 /
 
Hali
Idézet:
„Egyszerre összesen ugye 10-t”
Egyszerre ugye "0-7 " cimig az ugye csak 8.
(#) lalca válasza vilmosd hozzászólására (») Jan 13, 2011 /
 
8-as számrendszerben írtam.
Mármint persze,elírtam.
Köszi simpi.
(#) lalca válasza (Felhasználó 15355) hozzászólására (») Jan 13, 2011 /
 
Mi a probléma,mert szó nélkül lefordul?
(#) lalca válasza (Felhasználó 15355) hozzászólására (») Jan 13, 2011 /
 
Makro helyi változó.Nézd meg makro szerkesztése.
Következő: »»   17 / 361
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem