Fórum témák
» Több friss téma |
Még ezt segíts nekem értelmezni!
Itt ir alacsony és magas kimenetet is inden tengelyhez... Mi alapján tudom eldönteni hogy az alacsony vagy a magas kimenetet kell olvassam?
Egyszerű, mind a 2 kell neked mivel a 360° nagyobb mint a 255 ezért 2 bájt kell, hogy a teljes értéket megkapd..
Pl x értéke: 59 es cím a magas nagyobb mint 255 és a 60-as cím az alacsony (tehát kevesebb mint 255) Ebből a 2 számból lesz egy 3. számod. A számítás meg ez ami összegzi őket: X = (read_xh << 8) | read_xl
Óóóó hogy én milyen sült hal vagyok! Persze 360 nagyobb mint 255!
NA kiváncsi vagyok... Akkor mindjárt összeáll egy programféle.. majd ha rá tudnál nézni...
A számításodat nem teljesen értem. Az per vagy összeadás akar lenni?
Akkor az nem működik ha csak simán összeadom a két értéket? Valami ilyesmi született nállam Te meg Bakman segítsége alapján. Még azt nem értem hogy az olvasásnál te miért ugy írtad ahogy írtad, Megszólítod írásba utána kijelölsz egy regisztert, utána újraindítod megszólítod olvasásba kijelölöd a regisztert aztán kiolvasod... ott az irás és az ujrainditásnak mi a szerepe?
Amúgy az írás makrónak és a cím érték módósításnak az ötletét lopom... Nagyon tetszik
| = "Or" azaz vagy. Tehát bármelyik értéke 1 akkor a kimenet is 1 lesz.
Azért így kell mert ahhoz hogy tudja mit akarsz tőle meg kell mondani, tehát az írás helyett legyen küldés, az olvasás helyett meg fogadás ha így érthetőbb.
Az irás olvasás, küldés fogadás konteksztusa az megvan... azt nem kavarom,
Amit nemértek az az hogy amikor olvasni akarok belőle, azaz adatot fogadni akkor ... / te ott megszolitod irás modba cimeztél egy regisztert utanna ujrainditottad / Akkor az adatfogadás azaz az olvasásnál is elöbb irásba megszolitom és kiküldöm neki annak a regiszternek a címét amit olvasni akarok, utánna ujrainditom, megszolítom olvasásba és megmondom neki melyik regisztert akarom olvasni? Vagy valami felett elsiklok
Beszélgetés indít (start), elkezdel beszélni (transmitadress), és a lényegre térsz (cím küldése), befejezed a kérdezést(restart), vársz a válaszra (transmit byte a megadott címen), válaszol (receive), elköszönés (stop)
Hát akkor lássuk hogy jol értem e..
Ha az MPU bol a 67-es regisztert ( x h) szeretném kiolvasni, akkor annak valahogy így kell kinéznie?
Amit még nem tudok hogy a Restart után amikor megszólítom olvasásba, és Fogadom az értéket akkor ott Transmit_Byte ( 67) -nek kell lennie tehát a regiszter címének Vagy egy egyesnek,mert a te példádba nem a regiszter címet irtad...
Mondjuk paraszti ész szerint a regiszter címet írnám oda hogy tudja hogy honnan fogadja.... bár tudja mert elküldtem neki elötte! A hozzászólás módosítva: Aug 25, 2017
Hazaértem, talán tudok egy kicsit aktívabban segíteni. Mellékletben egy nagyon nyers példa MPU6050 kérdezgetésére. A szenzortól kapott adatot UART-on továbbítja a program, de a lényeg kihámozható belőle. Már nincs erőm szépítgetni.
Köszönöm... amugy már egy kicsit kezdek képbe lenni de még vannak homályos foltok! naggyábol iras olvasás mechanizmusa megvan csak pl mint ahogy kérdeztem is hogy restarnál amikor fogadok akkor ugyanugy a reguszter cimét kell irni... illetve ilyen aproságok!
Délután ránézek a progira, akkor leszek gépközelbe! Addigis köszönöm
Újra itt vagyok, mert nincs szerencsém (tapasztalatom) a Flowcode-dal. Először a múltkor csatolt LED villogtató programot írtam át, hogy a megszakítás 976Hz-el menjen és visszaosztottam különböző értékekkel. Ha 976 megszakításonként kapcsoltam a LED-et ki-be, akkor semmit sem láttam. Ha 100 vagy 200 megszakításonként, akkor szépen villogott a megfelelő intervallummal.
Vagyis gyorsan tudtam villogtatni, lassan nem. Szimulációban tökéletesen működött. Tovább léptem, mert ez nem annyira fontos, bár zavart, hogy a rendszert nem tudom kézben tartani. Tovább fejlesztettem a programot, hogy 61 Hz-es megszakítás mellett, ha a gombot megnyomom (Low pin board), a LED felgyulladjon. Ekkor ért a meglepetés, hogy csak az a verzió működött, ha a gombot megnyomom, akkor kialszik a LED. Hiába fordítottam meg az elágazást, az elágazás feltételét, vagy az értékadást, a LED-et gombbal nem tudom bekapcsolni, csak kikapcsolni. Itt elakadtam. Természetesen szimulációban minden rendben ment.
Nem lehet hogy túlkombinálod ? A villogtató programot nem láttam de nem lehet hogy int-es változót használtál , az csak 255 ös értékig használható ezért hibázott a program ?
A hozzászólás módosítva: Aug 30, 2017
Tényleg int a változó. Érdekes, hogy szimulációban meg működik. Úgy érzem, a szimulációt nem fogom erőltetni.
A te megoldásodat implementáltam. Ugyanaz a jelenség áll fenn, csak kikapcsolni tudom a LED-et a gombbal.
Szia!
Na elemezzük kicsit ezt a progit.. mainban nincs semmi tehát tiszta sor nem kell vele foglalkozni. Led blink makro.. 122 Hz -es timerként működik delay állapota 3 érték lehet 0 1 2, 0 csak a delay elágazásban ahol a gomb értékétől függően a led vagy világít vagy nem, és mivel máshol nincs is a ledekkel foglalkozva így a led állapota csak és kizárólag a gomb állapotától függ. ha delay 1 akkor semmi nem változik csak egyből 2 lesz belőle ami miatt pedig egyből 0 De ha leírnád mit szeretnél egyszerűbb lenne kitalálni mi a hiba, de szerintem a delay >1 elágazás nem ágába ha kikapcsolod a ledet, akkor ha a kapcsoló be van kapcsolva, villogni fog..
Én is rájöttem, hogy ne érdemes a timer időzítésével többet szórakozni. Kiszedte az időosztást, de minden maradt ugyanaz. A kapcsolóval nem tudom a LED-et bekapcsolni, csak ki. Lehet, hogy nem Flowcode probléma?
Még mindig nem értem minek ehhez timer..Először töröl a timert, nem kell, utána ami benne van tedd át mainba és próbáld ki, ha így se jó akkor az áramköröddel van a baj.
Kiszedtem a timert. Ugyanaz. Gyári Low Pin Board-ot használok, valószínűleg az áramkörrel nincs gond. Egy gomb, meg egy LED különben sem egy komoly áramkör. Az áramkör azért is tuti, mert az egyik irányba tökéletes a feltétel végrehajtása, a másik irányba meg nem. Áramköri hiba esetén egyik irányba sem működne. Viszont elég primitívnek tűnik a hiba, hogy csak nálam jött volna elő.Vagy a Flowcode vagy a kontroller a ludas. Bár elég érdekes lenne egy ilyen jellegű kontroller hiba. Lehet, hogy megpróbálom a 6-os Flowcode-dal.
Cseréld már le az =1-et >0 ra. Nem tudom milyen boardod van, de a kapcsolót fel vagy le kell húzni egy 10k-os ellenállással ha ez nincs akkor szokott ilyeneket csinálni.
Úgy sem jó. A Low Pin Board-on 10k-val van felhúzva. DMM-el leellenőrzöm a PIC bemenetén, hogy tényleg jól kapcsol-e az a nyomógomb.
A főprogramba elég egy makróhívás (led blink) ha a bemenetek + ra vannak húzva a panelon akkor a bemenetet állítsd át negatívra (a kapcsoló tulajdonságainál)
Multiméterrel kimértem, a gomb tökéletesen működik. A kapcsoló tulajdonságainál negatívra állítást nem találtam. De ez azonos lenne a feltétel megfordításával. A folyamatábrával biztos nincs gond, mert fordítva működik a dolog, vagyis a gomb és a LED működik. Kipróbáltam a <>0-val beállítást. Kipróbáltam Flowcode 6-al. Semmi sem segített. Valami nagyon egyszerű hiba lesz, amit nem veszek észre.
Egyszerűsítettem a kódot. Ha simán beírom a kapcsoló értékét (ami negált a felhúzás miatt) a LED-be, működik. Ha negálom a kapcsoló értékét, nem működik.
A kapcsolónál belépsz a "kilépés a tulajdonságokból" opcióba majd az aktív magas opciót átállítod aktív alacsony-ra
vagy ha makrókat használsz így is jó, ez már szimulációban is jól működik az előző az a kapcsoló invertálása miatt értelemszerűen a szimulációban fordítva működik de élőben jó nak kell lennie .
A hozzászólás módosítva: Szept 1, 2017
Köszi a segítségedet. Egyik megoldásoddal sem működik.
Még egy kicsit próbálkozom, plusz megírom C-ben is. A Flowcode C kódjában érdekes dolgot találtam, de még leellenőrzöm. |
Bejelentkezés
Hirdetés |