Fórum témák
» Több friss téma |
Köszi, ezt nem tudtam és így amit írtam nem használható, de szerencsére kiigazítottad!
Használható csak keresgélni kell. De viszont amit nem iratam hogy ha 4-es verzió akkor a PIC beállitás nem müködik teljesen. Értem ezt ugy hogy a projekt opcioban ki tudod választani a neked megfelelő PIC-et de a chip konfigurációnál már nem minden IC-t tudsz beállitani. Ezért tértem át én is az 5-ös verzióra.
A tanitvány is tud a tanárnak újjat mondani.
A Flowcode nekem is új. Nincs abban semmi szégyen, ha valaki nem tud valamit, abban viszont van, ha nem is akarja megtanulni!
Még 14 órán át akciós. 500Ft-ot szerintem megér. Ingyenes szállítás. LCD
A hozzászólás módosítva: Nov 28, 2012
Vagy kapcsolatot jelenti C-ben és ezek szerint itt is (Alt Gr+W). Nekem nem tűnt fel, hogy nem ezt szoktátok használni. Akkor gondolom az OR-t használod helyette? Az & helyett meg az AND-et? Kicsivel, naggyal kell írni?
Az & és az && nem ugyanaz C-ben. Az && egyezik meg a logikai vizsgálat and-el, az & pedig két érték közötti bitenkénti logikai művelet hajt végre. Ha 1 bitet vizsgálsz feltételes elágazásban, akkor mindegy melyiket használod, de két bájt közötti műveletben az & kell, mint pl a maszkolás egy port kimenetére.
Egy újjabb kérdés merült fel: az LCD kijelzöm (2x16) müködés közben fentröl lefelé nézve a sorokat halványodik illetve az also pixelsorok már villognak is. Mi ennek az oka? A másik kérdés a DS18B20 és a DS1821 között mi a különbség? Ok hogy nézzem meg az adatlapját de angol nyelv hiányában szenvedek illetve lehet hogy valakinek van tapasztalata is. Még egy dolog söt kettö, ha timer makrot futtatok akkor az a programlefutásába beleszámit, illetve pl. 16F690-ben belsö oscillátoral hogy a fenében kell beállitani hogy a delay 1s valoban annyi legyen? Tudom hogy már ezerszer leirtátok de nem értem, esetleg valaki tudna küldeni egy ilyen alapot?
Üdv Kovács G
Az LCD valószínűleg azért villog, mert folyamatosan írod egy ciklusban nagy sebességgel. Az LCD-re nincs értelme 3-5Hz-nél gyorsabban írni. Ezt ütemezéssel lehet, amit általában Timer megszakításban számlálóval és egy jelzővel szoktunk megoldani, amit a fő ciklusban figyelünk és csak akkor jelzünk ki, ha a jelző beállt.
A két hőmérő között nincs kommunikációs különbség, csak a mérési paraméterei térnek el. Késleltetés makrót(nem Timer, azaz időzítés) csak indokolt esetben szabad használni, mint pl. bekapcsolás utáni időhúzás, míg az LCD magához tér stb. Máshol nem ajánlatos használni! Helyette időzíteni érdemes, amit hasonlóan kell megoldani, mint amit az LCD kijelzésénél írtam. Egy Timer megszakításban nagyon sok időzítés kezelhető párhuzamposan, több számláló és jelző segítségével. A project beállításoknál be kell állítani az órajelet, amit használunk. De erről már sokat írtam, hogy miért, biztosan olvastad. A hozzászólás módosítva: Nov 28, 2012
Ok az orajelet beállitom de akkor kell egy számlálomakrot csinálnom ami folyamatosan pereg és akkor az adja meg a pl 1s megközelitö pontoságát? Mer most olyat csinál hogy ha adok pl 100ms-ot akkor az kb 1ms de ha 1s-ot adok az sacc 10s szoval teljesen más a megadott érték mint ami a valos.
A 0x valami cim? és akkr ezekután a nulla bittel kezdem? Pl igy :10101100? Belsö osc., 4MHz, azt nem tudom mi de szerintem ez kell . Jól gondolom? Ha ezt az elején beirom C-be akkor jok lesznem az idö moduljaim?
Ha beállítod a projected órajelét, akkor elvileg a várakozások pontosan számolódnak ki, de ehhez a PIC-et is úgy kell beállítanod, hogy megegyezzen a projectben beállítottal. Mi nem tudhatjuk, hogy milyen frekit szeretnél, csak te tudhatod, hogy mire van szükséged a tervedhez. Javaslom a PIC adatlapját elővenni és megérteni a működését. Nélküle nem nagyon lehet áramkört és hozzá a programot fejleszteni. A flowcode nem mentesít a PIC ismeretétől...
Hát igen sajna tudáshiányban szenvedek de ezt potlom a részleges kitartásommal. Nem tudom de szerintem nekem nem fontos a freki mert a kapcsolásom csak az idöt kiván, nagyvonalakban kontakt bemenetel, feszmérö bemenet, relékimenet, LCD, I2c komunikáció, talán 1 vezetékes komunikáció illetve rs485 de ez még a jövö zenéje. Szerintem itt max az LCD használ frekit de azt is megoldja a flowcode. Nem lustaság de alapvetö hiányosságaim vannak és folyamatosan tanulok illetve sokat tapasztalok ami a legjobb tanár. Persze ezt nem lehet felhasználni mindenhol de sokat jelent ahoz hogy megértsem miért is rohangál az a q...va sok elektron össze vissza, ez már off gyanus ugyhogy befejezem inkább értelmezem a programot és ha egyszer elkészülök akkor felteszem, mert ti csináljátok én csak ollozok de idáig sikerrel.
Üdv mindenkinek Kovács G
Tényleg nem fontos a freki, tulajdonképpen attól függ minden, amit felsoroltál!
Akkor nem értem mert jó idáig csak kontaktust csináltam de a fesz mérés is müködik és az LCD is igaz azzal a kis problémával de megy. Ha osccon-al belövök egy alapot akkor az már elé nem a többit már megoldja a flow. Lustaságnak látszik és részben igaz de ugy látom idáig (leszámitva a komunikáciot) de valoban müködik minden akkor mit javit vagy ront a freki?
Ha kvarcot használok az se ront vagy javit a helyzeten ugye?
Kicsit fárasztó, hogy tök jól meg tudod magyarázni a semmit. A PIC órajelfrekvenciája(freki) határozza meg az összes eredő időt, amit a flow kiszámol, ha beírod neki hogy mennyi az annyi. Ha nem jót írsz be, vagy ehhez képest nem jól állítod be a PIC oszcillátorát(konfiguráció, egyéb oszcilátorhoz tartozó beállítások), akkor rossz időket fog kiszámolni, nem fog helyes időzítéseket beállítani az LCD-nek, a kommunikációnak, had ne soroljam, mi mindennek, tehát nem lesz 1sec, az 1 sec és bizonyos esetekben ha még működik is valami, érdekes dolgokat tapasztalhatsz a stabil működés helyett. A kis probléma nem létezik a PIC szótárában, mert ez egy ipari eszköz, ez jól működik, ha megfelelően használod.
Tehát találd ki milyen frekin akarsz menni, külső, vagy belső oszcival, és állítsd be az említett helyeken, utána jónak kell lennie az 1sec-ednek és minden másnak, feltéve, ha minden mást is jól csinálsz... Te is érzed, hogy ezt nem lehet ilyen szűk csatornán elmagyarázni és nem is feltétlenül Flow kérdéskör, még ha ebben is kell beállítani, a mögötte rejlő tudást nem itt kell beszerezni, hanem pl. a PIC kezdők topicban...
Mi ez a .fcm kiterjesztés? FlowCode macro (modul)? Hogyan kell használni?
Ha nem atom óra pontosságot kell produkálni akkor, általános iskola 1 olsztályos matek kell hozzá.
TMR0 makró. Benne egy számláló amiben Timer = Timer + 1 Alatta feltételes elágazás amiben Ha TIMER = xxx akkor ha igen LCDfrissít = 1 ha nem akkor semmit nem csinál. Fő programban ahova akarod beteszel egy feltételes elágazást, amiben ha LCDfrissít = 1 akkor ha igen írja ki (valamit), vagyis kiíró makrókat ide teszed. ÉS a kiíró makrók alá LCDfrissít=0 (hogy legközelebb ismét majd legyen 1, vagyis a timer számláló induljon újra. Az xxx pedig (nem sex) hanem a beállított órajel és osztás része. vagyis ha 20Mhz az órajeled és a TMR0 makró beállításában az osztást 1220ra állírtod akkor ha az xxx = 122 vel, akkor 100ms onként frissít... ha 1220 akkor 1s, ha 12 vel akkor 10ms Ha használod a fejed, ebben a makróban jó pár időalapot össze tudsz hozni. Nem halál pontos, de kijelzésre tökéletes. (mellesleg nekem a kocsiban az óracsoportban ez az időalap és a fordulatszámot is ebből méri. A normál kalibrált fordulatszám mérőhöz képest nem csal. Ugyanakkor közben mindent meg is csinál az óra. 2db adc bemenetek kiértékelés, kijelzés LCD-n, ledek vezérlése 100ms-onként, ja és sebesség, fordulat mérés RB portokon. nem kevés lebegőpontos változóval.) Szóval nem olyan rossz így sem használni. Igaz nem atom óra pontosságú.
Teszem azt egy 16F628A IC-m van. A Flowban a project opcióknál beállítom a kvarc frekvenciát. 20MHz-es kristályom van. Ebből hogyan csinálok 100 Hz-et? (10ms)
Pontosat sehogy. Viszont van lehetőség beállítani 19660800Hz-et. Na ezt hogyan is?
Szia!
Én is csak most ismerkedek a megszakítással de nem kéne a timert is nullázni?
Igen, de mi van, ha elkonfigurálja a PIC-et és nem azon a frekin megy, mint a projectben beállított. Sokkal mélyebbről kell indulnia a tanulással, mint ahonnan szeretne...
Beállítani egy mozdulat, de honnan szerzel ilyen kristályt?
A másik, hogy van lehetőség akár órajelenként eltolni a megszakításban a Timer megszakítás idejét. Problémát okoz, hogy a szimulátor nem képes megmutatni egy programrészben eltöltött időt, így elég nehéz külső eszköz nélkül beállítani a pontos időzítést. A másik kérdés a "pontosan". Miután a normál kvarcok 20..50ppm-et csalnak, így ezen belül eleve nem lehet pontos. De a pontosság nem abszolut, hanem relativ. A célnak megelelő pontosságot el lehet érni. Nagyon kevés alkalmazás van, ahol ennél nagyobb pontosság kell. Lehet kapni ettől pontosabb kristályokat is, nemrég linkeltem egy 10MHz-est, az 45ezer Ft de 0,2ppm a toleranciája. Erre egy komoly műszer esetében lehet szükség, normál esetben még törekedni is értelmetlen rá. 100Hz-t úgy lehet előállítani 20MHz kristályból, hogy a Timer2-t használod, beállítod az előosztót 4-re, A PR2-őt 249-re, így kapsz 5000Hz megszakítást, itt pedig egy számlálóval minden 50-nél beállítasz egy jelzőt, amikor is lekezeled a 100Hz-es megszakításhoz tartozó eseményeket. Ha PWM-et is akarsz használni(az is a Timer2-t használja), akkor lehet olyan kompromisszumot találni, ami mindkettőnek megfelelő. Más Timerekkel is meg lehet ezt oldani, de ott egy kezdő értéket kell betölteni a megszakítás lekezelésekor, ami sok esetben nem jól működik, lásd az erratákat! Talán a timer0-al lehet ilyet biztonságosan csinálni. Azzal a következő képpen: Az OPTION reg-ben a PSA bittel a Timer0-hoz rendeled az előosztót és beállítod 1:8-ra, A timer0 megszakításakor a timer0-hoz hozzáadsz(!) 6-ot, így 250 lesz az osztás, ami 2500Hz megszakítást okoz, amit hasonlóan az előzőhöz egy segéd számlálóval 25-önként kezelsz le. A Timer0-al az a baj, hogy miközben feltöltjük a számlálót, az tovább számol és nem lehet megállítani, ezért olyan csúszások keletkeznek, amit csak bonyolultabban lehet kiküszöbölni. Ezt C-ben könnyebb, itt nem is tudom hogyan lehetne... Javasoltabb a Timer2 hardveres comparátorának használata, azzal nem lesz gond.
A lényege pont az, hogy nem a timert nullázod. hanem a változót. A timer számol folyamatosan.
Vagyis mikor elküldöd végrehajtani a feladatát, mikor eléri a neked megfelelő időt, pl 10ms vagy 100ms a végén a változót kinullázod. Így onnantol számol újra. vagyis a mért időd relatív pontos marad. Mindig ugyan addig számol és az után hajt végre egy feladatot. Ezt a módszert sok helyen tudod alkalmazni, nem tökéletes, de nem mindig kell halál pontos időmérés. Területtől függ. Nem mindig kell túlbonyolítani egy feladatot. |
Bejelentkezés
Hirdetés |