Fórum témák
» Több friss téma |
É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
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.
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.
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)
Szia!
Nem "lóg a levegőben", föl van húzva tápra Köszönöm a progit, eprészkedek vele.
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...
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.
Na most erre mit mondjak?
Köszi, már megint...
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.
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?
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.
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.
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.
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.
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!
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
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 ?
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.
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!
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.
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.
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.
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?
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?
Hali
Ebben nincs 32 bites valtozo tipus? Mert a normal C-ben altalaban van, es az mar elojelesben 2.15 milliard korul van.
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.
Ü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.
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
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. |
Bejelentkezés
Hirdetés |