Fórum témák

» Több friss téma
Fórum » Folyamatábrás mikrokontroller programozás Flowcode-dal
Lapozás: OK   21 / 360
(#) kaqkk válasza enree hozzászólására (») Feb 18, 2011 /
 
És próbáltál változtatni az oszcillátor beállításain ?
Ha kvarc nélkül használod az internal rc Klock out ot próbáld meg
(#) lalca válasza enree hozzászólására (») Feb 18, 2011 /
 
1. Ha csak a flowcode-ban állítottad át 1MHz-re,attól továbbra is 4 megán fut,csak a késleltetésed lesz 12.5 ms.
2. Az MCLR-t tedd internal-ra!Így lóg a levegőben,újraindulhat.
3. Itt egy régebbi progi.A gombfigyelést azért raktam bele,hogy könnyebben,gyorsabban lehessen belőni a fotoellenállást.Alakítsd kedvedre.
(#) kkrisz75 hozzászólása Feb 19, 2011 /
 
Nem jutottam előrébb.
877A val simán lefordul a program.

18F4550-el ezt a hiba üzenetet kapom.
"
Caution: argument of 'delay_us' calls must have a value of 1 or more
Caution: Delay inaccurrate: 'delay_us', Delay overhead:0ms, Unit delay:0.00101725ms, Delay resolution:1 units
Caution: Delay inaccurrate: 'delay_10us', Delay overhead:0ms, Unit delay:0.0101725ms, Delay resolution:1 units
Caution: Delay inaccurrate: 'delay_ms', Delay overhead:0ms, Unit delay:1.00016ms, Delay resolution:1 units
"

A viselkedése olyan, mikor beégetem és elindítom, mint mikor az órajel nem stimmel.

Ugyan akkor a beállításoknál 20Mhz van megadva, OSC1-OSC2 ről veszi az órajelet, HS...
chip konfigban is ugyan ez van megadva.
És mégsem megy.

Adatlapban sem találtam infót, ami előrébb juttatna.
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Feb 19, 2011 /
 
Köszi.... ez nekem is jól megy.

Megnéztem a beállítás különbségeket, és találtam egy sor eltérést. Az enyémben cseréltem, és jó is lett a többi is.

Más:
Érdekes, és ezért olvasom az összes mikrovezérlős témát amit a neten találok, hogy 877A ban 8000 szó nál alig több ez a program, míg a 4550be 14000 szo ugyan ez a program.

Bár ha jól sejtem(he nem, akkor szóljatok), már alapból az include fileokban található beállítás mennyiség/különbség is megnöveli a program hosszt. (Igaz nem ennyivel, de már több)
(#) enree válasza lalca hozzászólására (») Feb 19, 2011 /
 
Szia!
Nem "lóg a levegőben", föl van húzva tápra
Köszönöm a progit, eprészkedek vele.
(#) enree válasza (Felhasználó 15355) hozzászólására (») Feb 19, 2011 /
 
Például ha 400at írok be, azzal már nem megy. És, hogy mit jelent a nem működik? Azt, hogy nem működik, nem csinál semmit, egy led se gyullad ki bekapcsolás után... egyébként a 244ig megy, de 245el már kiakad...
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Feb 19, 2011 /
 
Ezt úgy gondolod, hogy a tmr0 megszakításban csak az lcd-t frissíteni egységnyi idő alatt, mint ahogy most van, és közben RB0 és RB1 megszakításban a bejövő jeleket megszámolni. A frissítés kor kiírni, és kinullázni a számlálókat?

Én így oldanám meg, de lehet rosszul gondolom.


Viszont ebben az esetben a fordulatszám multiplexelés már nem megy pic-ről, mert kevesebb lesz a láb.
Ezért 2 lehetőség maradna.
1., Másik pic csak multiplexelést oldaná meg. 18 és 14 lábon a maradékon meg menne egy I2C kommunikáció, amit, utána olvasva, jobb mint a soros RX-TX lábon. De még nem próbáltam, és nem tudom, hogy meg tudnám-e oldani.

2., Bele bonyolódni vilmosd által ajánlott multiplex ic-k vezérlésébe. Így viszont 1 pic mindent ellátna. Még maradna is láb.


Példában egy multiplex próbálkozást csináltam. Kipróbáltam és működik, de nagyon halványak a ledek.

multiplex.fcf
    
(#) enree válasza (Felhasználó 15355) hozzászólására (») Feb 19, 2011 /
 
Na most erre mit mondjak?
Köszi, már megint...
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Feb 19, 2011 /
 
A tmr2 miért pontosabb?

Rövid magyarázatot tudsz adni?
A tmr0-nál teljesen az órajelből tudom számolni, míg a tmr2nél pre és postcalert is meg kell adni.
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Feb 19, 2011 /
 
Erre gondoltam én is, de a 7szegmenses kijelzőnél, ugyan így meghajtva 4 darabot sem esik a fényerő. Igaz ott csak 4x7(pontot nem használom) van és nem 8*10.

Akkor ha nem közvetlen a picről használom, hanem a pic-el tranzisztorokat vezérlek, ez mellett kihagyom az előtét ellenállást(vagy jóval kisebbet használok), akkor elvileg nagyobb lenne a fénye?
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Feb 19, 2011 /
 
Ok ezt olvastam én is, azt hiszem az adatlapban is benne van .

Nekem előjött a 4550es és a 877en a tmr2. azzal is jól megy. Illetve ugyan úgy megy, nem vettem észre különbséget.

Miért számol pontosabban. Vagyis úgy gondolom, és lehet rosszul, amilyen pontos az órajel, olyan pontosak a tmr megszakítások.

De ha van különbség, akkor az mi, vagyis miben nyilvánul meg, mi okozza. Mitől pontosabb a 16bites?

Elhiszem, hogy pontosabb, csak az ok érdekelt.
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Feb 19, 2011 /
 
Megnézem...

Közben ha hazaértem át dogozom a RPM programot is tmr2 re, javaslatodra.

Meg kipróbálom próba panelon a RB0 megszakítással való megoldást. Ha működik jól akkor gondolkozok vilmosd multiplex IC vel való megoldást, sokat segítene, mert akkor stabilabb I2C kommunikációval tudnám használni a 877es pic-et.(még nem tudom, hogyan de rájövök)

Közben módosult a projekt, és 2db lcd (egy 4x20as és egy 2x16os) lesz.

Mindenképp külön picben számolom a sebességet és a fordulatot, mert még a km-eket is kell számolni, tárolni, Azt is kijelezni, és még a sebesség is kimegy 40db ledre. De ha összejön a multiplex ic-s megoldás, akkor azt is azzal jelezném ki.
(#) kkrisz75 válasza kkrisz75 hozzászólására (») Feb 20, 2011 /
 
Próbálkoztam a RB0INT megszakítással a 877esben, de nem sok sikerrel.

A megszakítás makrójában, a változónak ad +1 et. Ezt a változót LCD frissítésekor amit a tmr megszakítás vezérel adott időnként, áthelyezem egy másik változóba amit kiíratok, illetve elküldök a kijelzőt irányító 4550nek.(ugyan úgy mint az mikor az RA4 en volt a frekvencia mérő szerint ahol jól működött)

Lányegében számol valamit csak nem tudom mit.

Alap esetben kiír 17 vagy 16-ot, váltogatva, ír ki az LCD-re, ha a bekötött lábat le testelem akkor, kinullázza. vagy lejjebb ugrik.

Úgy kötöttem be mint a többi kapcsolót. 10kohm a tápra,. és egy kapcsolóval a testre amit ha benyomok, akkor testelm vagyis ekkor kellene léptetnie.
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Feb 20, 2011 /
 
Arra rá is jöttem, és meg is találtam a leírásokban, itt a fórumon.

Ki próbáltam mind a két beállításnál de semmi különbség nem történt.

Jól van így bekötve?

És ahol ki lehet választani, hogy felfutó vagy lefutó élre reagáljon, van szürke mezőben egy 15Hz-es frekvencia. Azt viszont nem értem mit jelent.
(#) erdoszoli hozzászólása Feb 21, 2011 /
 
Sziasztok
Most ismerkedek a Flowcode programmal, viszont egy kérdésem felmerült amire nem böngésztem még ki a választ: Flowcode AVR -> ATMEGA8 ic -> de a flowcode-ban a 28lábú TDIP tokozás alapján lehetne dolgozni, nekem meg sajna TQFP-s tokozású ATMEGA8 van kéznél. Van rá mód hogy átállítsam ? Valami kiegészítő letöltés vagy hasonló okosság?
Köszi előre is!
(#) erdoszoli válasza (Felhasználó 15355) hozzászólására (») Feb 21, 2011 /
 
A TQFP pl 32lábú és nem vagyok benne biztos hogy a lábkiosztás ugyanugy fordul le. pl : ha PORTD2-re ledet rakok , az a TDIP-nél a 4es láb, a TQFPnél a 32es. Persze ha mindkettő megérteni a D2es lábat akkor nem kérdeztem semmit

Jah amugy PIC-el nagyon jól megy a program , csak feltünően nagyobb helyet igényel a szómemóriából mintha "C"-ben szenvedném össze, de ennyi kényelem ennyi fölös bájtot megér
(#) Szamy válasza (Felhasználó 15355) hozzászólására (») Feb 22, 2011 /
 
Nem boldogulok...mindegy majd beírom újból az egész progit .
Viszont ha összedobna nekem valaki egy fcf -et amiben megérteném, hogy kell byte -ból string -et csinálni , megköszönném. Konkrétan amire gondolok : feszültséget mérnék egy ellenállásosztóval . Mikor 132 Byte -ot "mér" az adc , az 13,2 V-nak felel meg . Azt szeretném megtudni, hogyan bököm bele a tizedesvesszőt ?
(#) kkrisz75 válasza Szamy hozzászólására (») Feb 22, 2011 / 1
 
Egyik megoldás:
Az adc változó típusát megadhatod lebegőpontosnak. Ilyenkor sok tizedesig jelez ki.

A bejővő adc változó értékét elosztod 10-el és eltárolod ismét.

ADC_bemenet = ADC_bemenet / 10

És ezt az ADC_bemenet változót íratod ki.

Másik megoldás:
Amúgy meg string műveleteket használsz.

szöveges változó = ToString$(szám változó)
Egyszerű a string műveletek ablakban rányomsz a kérdőjelre és kapsz magyarázatot, értelemszerűen.

Ha már át alakítottad sringnek, akkor van left illetve right művelet is.

Vagyis egy string típusú változóba be teszed a balról az első 2 karaktert és hozzá adsz ( +",") egy vesszőt, majd jobbról az első karaktert adod hozzá.
És az eredményt kiíratod.

Nem kerestem ki a pontos utasítást de nagyon értelemszerű a leírás, és vannak példa feliratok is a súgóban.
-------------
Én lebegőpontosokat alakítottam stringnek, hogy el küldjem másik pic nek és ott vissza alakítottam, és jól számol vele. Csak nagyon növeli a memória foglalást.
(#) Szamy válasza (Felhasználó 15355) hozzászólására (») Feb 23, 2011 /
 


Köszönöm!
(#) Szamy válasza kkrisz75 hozzászólására (») Feb 23, 2011 /
 
Köszönöm !
Amit írtál, az a variáció volt a Fc helpjében , de nem igazán értettem, így legalább már világos. Viszont az én helyzetemben simpi megoldása egyszerübbnek tűnik.
Kössz mégegyszer!
(#) kkrisz75 válasza Szamy hozzászólására (») Feb 23, 2011 /
 
Teljesen igazad van.

Sokkal jobb megoldás.

Sajnos az agyam nem mindig gondolkozik alapszinten, és bonyolítom.
Kimaradt , hogy az osztás esetén, a tizedesek "elvesznek".

Egyszerűbb, és memória, változó takarékosabb.
(#) kkrisz75 hozzászólása Feb 25, 2011 /
 
Olyan dologgal, foglalkozott valaki, hogy a lebegőpontos változókat helyettesíteni hogyan lehet.

Kerék kerület méterbe átszámolva is 1.83061.
Kerék és a spirál kihajtás áttétele is 1.84722.
Km/h és a m/s átváltása is 3.6.

Na ezeket hogyan tudom kiváltani valamivel?

Lebegő pontos számítás nélkül, 1500 word körüli a program a flowcode szerint. Ha bent van a 3 változó és 5-6 számolás vele, akkor 6600 word körüli.

De nekem még kellene a pic tartalmának a fele üres helynek. De a max a 877ben 8000 word.
(#) vilmosd válasza kkrisz75 hozzászólására (») Feb 25, 2011 /
 
Mondjok ha nem hasznalnal mindenutt floating valtozokat, sokat segitene a hex nagysagan. Pl 1.84722 helyett 1847, a 1.83061 helyett 1830. A float eszi a memoriat. Probald meg attenni az kalkulaciot egesz szamokra, es a hex akar a fele is lehet. Esetleg 18F4520, vagy 18F45K22. Ez meg olcsobb is.
(#) kkrisz75 válasza vilmosd hozzászólására (») Feb 26, 2011 /
 
Ezen agyaltam én is, de a bemenő jelek számát felszorzom akkor 100km/h nál már 100ezer felett lenne az érték, és nincs olyan változó ami ezt elbírja. Az INT is csak 32000.

Gondolkoztam, hogy felbontom több változóra de kiíratni akkor sem tudom. Mert nem tudom eltárolni, változóban, amit ki tudnék íratni.

Aztán kiszámoltam, hogy egy adott kerék kerületnél, minden osztás szorzást elvégezve csak 1 lebegőpontossal számolni. Pl: 1865.78mm-es kerületnél, 1.090850 el kell szorozni a bemenő jeleket. Ezt kapja meg a másik pic-től. Így abban előre le van tárolva mindegyik átmérőre a szorzó szöveges változóban.

Amint átjön és átváltom már 1500 word helyett 4000 feletti lesz a szám. És még nem is végeztem műveletet vele.

Gondolkoztam kihagyni a tizedeseket és kerekíteni, de akkor 100km/h esetén átváltva 20km/h negatív csalása lenne. Minél nagyobb a sebesség annál több a csalás. Nem mindegy, hogy 1 el vagy 1.09 el vagy 1.84 el szorzok.

És még a km számlálóról nem is szóltam. Ami a kerék kerülete alapján számol. ott még ki tudom hagyni a tizedeseket, de a próba programban azok sem nagyon csökkentették a programot.

Szóval csak a PIC csere a megoldás?
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Feb 26, 2011 /
 
10 jel / fordulat.
1865,78 mm a kerület (165/80 R13as kerék esetén)
1,84722 kerék és a kihajtás közti áttétel.
1/3-ad mp a mérési idő.

kerület: 1865,78 / 1000 = 1,86578 m

Bemenő jel szorozva:
3 / 10jel * (3600 sec / 1000 m = 3.6 m/sec átváltás km/h-ba) * 1,84722(áttétel) = 0,5846623

Sebesség = Jelek száma * kerület(1,86578) * 0,5846623
Sebesség = jelek száma * 1,090851

100 jelnél 203km/h

Na ez ok? Ez jó...

A tizedeseket szorozd fel 1000el és úgy számolj.
1865,78 * 1000 = 1865780 Na ez 32000alatt van?
Jó ne legyen ekkora és csak 100al szorzom = 186578

Ok kerekítem és csak a 1,090851 et szorzom fel, egész számnak. 10908 az eredmény kiszámoltam hogy 4 tizedesnél csal a legkevesebbet, kettőnél már van eltérés...(Feltéve ha mindet kerekítek)

Sebesség = 1865 * 10908 * jelek száma (PL 100 (ugye 10 jel /fordulat) = 2 0343420 amit vissza kell osztani 10000-el így 203 km / h.

Hogyan számoljak tizedes nélkül?
(#) vilmosd válasza kkrisz75 hozzászólására (») Feb 26, 2011 /
 
Hali
Ebben nincs 32 bites valtozo tipus? Mert a normal C-ben altalaban van, es az mar elojelesben 2.15 milliard korul van.
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Feb 26, 2011 /
 
Az is jó méret.

5 kerék méret van beírva. ki lehet választani.
Az előző a 175/65 R14-é volt.
Azon méretek, miket szoktam használni.

Ha a gyújtást ráadom, a "Set" gomb nyomva tartásával, belép egy választó menübe. Ahol ki lehet választani a kerék méretet, ami a kocsin van.

Újra set gombra kilép és ez után küldi el a sebességmérő PIC-nek, hogy mivel számolja a sebességet és a megtett Km-t, napi Km-t.

Ez után elindul a sebességmérő és a fordulatszám mérő is.

Ha ismét set gombot nyomok, akkor átvált a fordulatszám mérő pic a váltás jelző beállítására. Ahol azt lehet beállítani, és egyben kiírja a kerék méretet és a kerületet. Tároló gomb 2mp nyomva tarására letárolja eepromba váltásjelző értékét és a kerékméretet.

Induláskor ha nem nyomok set gombot akkor eepromból olvassa vissza az értékeket.(váltásjelzőnek az értéke, a kerék méretnek, pedig a választó menü száma van eltárolva és mikor le fut újra hozzá rendeli csak az értéket, így nem kellett csak egy számot 1-5 ig eltárolni)

Működik, és jó is. beírva, Tesztelve. Csak a program mérete túl nagy. ÉS még a ledek multiplex vezérlése nincs benne. csak külön programban van tesztelve. Viszont annak a mérete 3-4000word. Ekkora hely kell neki de csak 1200van.

Ha sikerül megoldani vilmosd ledvezérlését flowcode-ba átrakva, akkor annak a mérete után tudok tovább lépni, de ahogy agyaltam rajta annak is kevés lehet(nem biztos) a 1200word.
(#) Szamy hozzászólása Feb 27, 2011 /
 
Üdvözletek.

Mindjárt 2 kérdésem is lenne:

1. hogyan oldom meg, (16f877), hogy olvassa ki az eepromot(1 utasításból-ha lehet), a 20- as címig, és írja ki lcd-re azokat a címeket, amelyekben 1 van.
2. Csíkot ki lehet valahogy jeleztetni a flowcod-ban? teljesítmény-kijelzéshez kellene, pwm-hez használnám.
(#) hg6dab hozzászólása Márc 2, 2011 /
 
Sziasztok!
A mellékelt progiban hogyan kell beállítani, hogy a számláló értékét BCD kódban küldjem ki a LED-ekre?
Peremkerekes adó-vevő freki beállításához kellene.
Táblázatkezelésről, külömböző számformátumok átalakításáról, müveletekről ha lenne magyar nyelvü
okítás, szintén érdekelne.
Előre is köszi a segítséget.
HG6DAB

Dial.fcf
    
(#) kkrisz75 válasza hg6dab hozzászólására (») Márc 2, 2011 /
 
Táblázat kezelés nekem is jól jönne, arra még én sem jöttem rá, hogy kell megoldani.

De a műveletekről változók és szám formátumok átalakításáról, van a súgóban angol nyelvű, AMI nem bonyolult.
Lényegében minta sorok vannak és alatta értelemszerű leírás. Az én alapszintű angolommal megértettem akkor te is. De ott tényleg elég a mintasorra ránézni és már rájössz magadtól is.

A BCD kódra a rutinosabbak reagálnak.
Következő: »»   21 / 360
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