Fórum témák
» Több friss téma |
Szerezz egyet (pl.: Bővebben: Link), különben az életben nem fogsz végezni. Ezzel kitapasztalhatod gyorsan, hogyan viselkedik a modul. Ha az megy stabilan, már csak ezeket a parancsokat kell átültetned a kontrollerbe.
Egyenlőre azt se tudom , hogy kell rákötni a Picre
Sehogy. A modult USB-n a gépre dugod és egy Terminal szerű programmal használod. Ez, első lépésként a PIC-et fogja helyettesíteni. Ezen keresztül beszélgetsz az ESP modullal. Egy dologra figyelj, az USB-UART modul 5 V-os jelszinttel dolgozik a kimenetén.
Pár infó az USB-UART átalakítóhoz: Bővebben: Link. A hozzászólás módosítva: Júl 14, 2016
Ezt eddig értem , csak azt nem , minek kell ez az első lépés? Látom hogy működik a modul , szórja a wifit , tudok is hozzá csatlakozni , tápon van.
Csak rá akarom tenni a pic megfelelő lábára.
Azt írtad, nem tudod megváltoztatni az SSID-t... No mindegy. A modullal UART protokollal tudsz beszélgetni, a PIC RX és TX lábát kell használnod (HW-es UART esetén). PIC RX -> ESP TX és PIC TX -> ESP RX. C7 és C6 a kontrolleren.
Ennél is egyszerűbb bekötést szerintem képtelenség találni. A TX / RX lábak egy pic esetében is ugyan azok. A pic lábkiosztását az adatlapján találod. Be kell állítani rajta az usartot, aztán írod / olvasod. De biztos menni fog?
Akkor jól kötöttem össze. Tehát a programmal van valami , mellékeltem , rá tudna valaki nézni nekem ?
Menni fog , igen. A hozzászólás módosítva: Júl 14, 2016
Srácok, már lassan 3hete kínlódok egy MX29LV640-es NOR Flash memória kezelésével.
PIC32MX795-el próbálom éleszteni. (saját topikjában ezzel kapcsolatban fel is tettem a kérdést. Sokan nem járnak arra, de most a PIC-es részére vagyok kíváncsi) Mind kettő 3v-os, és mivel csak most kezdtem el 3v-os eszközökkel foglalkozni lehet nem veszek észre valamit ami fontos lehet. 29F800-as flash memóriát korábban már sikerrel alkalmaztam, de ügye az sima 5v-os rendszerről ment. (PIC18F442) 29F800-ra megírt és ma is jól működő rutinokat alkalmazom, kisebb módosítássokkal, hogy kompatibilisek legyen PIC32MX795-el. A memória adatlapja azt mondja, hogy ugyan úgy kell használni 29LV640-et mint 29F800-at, csak több a cím bit. Elvileg mindent jól csinálok, 3hét alatt ugyan is számtalanszor szedtem szét és vizsgáltam át a próba panelem, de hibát nem találtam. Próbáltam 29LV640 és 29W128 több különböző új darabbal, de mindegyiknél ugyan az vagy is hibás értékelhetetlen adat. Már mindent átnéztem és kiszűrtem, kivéve a PIC-et. A címzésre sajna össze vissza tudtam csak kiosztani a címbiteket, de az adatok továbbítására a teljes BPORT-ot használom, kivéve a B5-ös bit-et mert azt USB használja. Nem lehet, hogy a PIC feszültség szintje valamiért nem megfelelő a flash memóriának? Lehet nem jól érzékeli a magas és alacsony szinteket? Kell valamire figyelnem amire eddig nem figyeltem PIC32MX795 MCU-nál? Használt lábak:
Hátha valakinek eszébe jut valami, vagy észre vesz valamit ami miatt szívok. Előre is köszi.
Én csakis 3,3V-os rendszerekkel foglalkozok, és a feszültséggel még sosem volt gondom.
Ami gond lehet: Ha nagy sebességgel kommunikálsz és sok cím vagy adatbit változik egyszerre, az elő tud idézni fals jeleket bármelyik közelben haladó vezetékben (egymásra is hatással vannak). Így ilyenkor szükség lehet a hírtelen áramlökések korlátozására, ill. Slew Rate szabályozásra. Vannak mikrovezérlők, amik ezt hardveresen tudják, de használhatsz soros korlátozó ellenállásokat vagy induktív tagot is.
Próbálgattam az időzítést 100ms-ig lépésenként, de nem hozott eredményt.
Lehetséges akkor, hogy az összedugós próbapanel miatt nem működik a dolog? 6-10cm-es vezetékekkel van összedugdosva. A címbitek beállításánál is alkalmazzak késleltetést? 80MHz-en megy a PIC, de gondolom az időzítések miatt az mindegy is.
Nem tudom hogy nálad mi a probléma, de ha olyasmi, amivel én is szívtam annakidején, akkor soros ellenállásokat kell használnod a cím- és adatbuszon, ill. a vezérlőbuszon.
Mekkora ellenállásról beszélünk és miért van arra szükség?
100R-1K és az áramkorlátozás? Áramlökések ellen?
max. 200-300ohm (Nálam már 33ohm segített)
Amikor több vezetékben egyszerre indul meg nagyobb áram, a szomszédos vezetékekben feszültség indukálódik, ami akár megváltoztathatja egy pillanatra annak logikai szintjét is. Ez hibás vezérlést eredményezhet. Meg még van egyéb következmény is, de abba most nem megyek bele. A hozzászólás módosítva: Júl 14, 2016
Szerzek ellenállást és összerakom összedugós változatban, hogy tesztelni tudjam.
Jelen pillanatban 46bit-et állítok viszonylag egyszerre a memória kezeléséhez. Akkor lehet ez lesz a gond...
Az a 100msec ugye úgy van mérve, hogy az adat / cím és vezérlőjelek minden egyes elemi lépésben egyszerre csak egy valami változik, és minden alkalommal azok között van kivárva az a 100 msec? Mert ha úgy csinálod, hogy mindent egyszerre adsz ki, és utána vársz 100 msec-et, azt úgy megette a fene.
Akkora késleltetésnél egyébként nem tudnak játszani parazita tényezők. Gyakorlatilag infra hang frekin tolod. méteres drótokkal sem lehetnének gondjaid. Az mx795-nél is csak arra kell figyelni, amire mindenütt: az analóg jeleket digitbe kapcsolni, a confignál ha birizgálod a jtag, ice, wdt-t, akkor figyelj is rá, órajelet ellenőrizd is le, hogy normális-e (rakj rá egy ledet villogni, és ellenőrizd le az ütemét legalább szemre), nem kellene ott gond legyen. Az a flash cucc tsop / bga tokos. Nem lehet, hogy valahol valami fémreszelék odakerült, esetleg eltört egy forrasztás? Vagy valamelyik drót van belül elszakadva? Működik az a cucc valami más meghajtással normálisan?
Nem úgy van, hogy minden elemi lépéshez teszek 100ms késleltetést.
Az elemi lépések közé Nop() függvényt használtam, ez talán elégnek kellene lennie, de most megnézem elemenkénti 100ms-el. A foglalat és a beforrasztás is jó, ez szinte 100% biztos. És csak azért szinte, mert ügye soha semmi nem lehet egészen biztos De most együk fel azzal nincs gond. (nagyon sokszor ellenőriztem) MCU órajelét ellenőriztem, egyelőre csak szemre, illetve mp-es időközöket LED-es visszajelzéssel. Kipróbálom az elemenkénti nagyobb késleltetéssel.
Nos ott tart a dolog, hogy minden elemi lépéshez tettem késleltetést, így azt hiszem az olvasás már működik is.
Sajnos a beírás illetve a parancs szekvenciákat továbbra sem fogadja. Ezzel a résszel most vacakolok kicsit, hátha valami vezeték hiba van.. Köszi a tippet neked is és Zsora-nak is. Remélem, ha így működik akkor sorba kötött ellenállásokkal is fog működni, mert szükségem lesz a sebességre.
Ha a kiolvasás az elemenkénti késleltetéssel működik, akkor jó esélyekkel vezeték hiba nincsen (a #we vezetéked persze attól még lehet hibás), és a fő problémád a tényleges áramkör parazita jelenségeihez képest nem túl jól elhelyezett késleltetés volt.
Apropó a nop parancs nem lesz jó, a pic32-esek "lenyelik" a nop-ot, a prefetch automatán eldobja. Van delay.c pic32-höz is az sdk-ban, gondolom, a 100ms-hez is azt használtad. Vagy készíthetsz magadnak gépórát a kvarcfreki alapján, és mérheted ahhoz a főciklusban (az aszinkron, nem fogja meg a cpu-t).
Az időzítéshez ezt használom:
WE láb és az összes többi is tökéletes, ellenőriztem ismét. Nop()-okat eltávolítottam. A parancsokat még egyelőre nem nem fogadja.. FFFF-eket már rendben kiolvassa, vagy is üres a memória. Én töröltem egy másik hardverrel.
Az a readcore timer gondolom a cpu0,9-et olvassa. Van vele egy olyan bibi, hogy túl tud csordulni, és akkor kinulláz. Ha 80-on hajtod a cpu-t, a 40 milla ütemjel másodpercenként 107 másodperc után lenullázza. Az áramköröd persze nem attól nem működik.
Ha egy másik hardverrel írni is tudod a flash-t, adott pozíciókba be kellene írni 1-1 spec adatot, amiről tudod, hogy csak azon a címen van, és ellenőrizni kellene, hogy tényleg működik-e az olvasás.
Az olvasás már biztos, hogy jó, azt teszteltem.
A szekvenciákat nem fogadja valamiért, de még nem jöttem rá miért. Időzítést hiába csökkentem már, 100ms már több mint elégnek kellene lennie. Most vissza tettem 1ms-ra így is szépen olvas. Egyelőre tanácstalan vagyok. Lehet, hogy még mindig problémás a sok vezérlés? Egy egy szekvenciánál a címbitek minimum fele és az adat illetve vezérlő bitek használatban vannak: Pl: cím 0x555, adat 0x90 + vezérlő bitek. Lehet az áram felvétel lesz a gond.
Kezdők hibája.
Vettem egy ultrahangos távolságmérő modult. Gondoltam kipróbálom. Írtam hozzá egy tesztprogramot. MikroC-t használok. Sima delay függvénnyel mértem az időt, hogy biztos ne legyen gond az időzítéssel. Azzal nem is volt gond. Kiadtam egy 15uS-es trigger jelet, majd while függvénnyel vártam, hogy megjöjjön a visszhang és kezdhessem a mérést.
Gondolom aki már régóta c nyleven programoz, az tudja, hogy oda kell a kapcsos zárójel.
Ha pontosvesszőt teszel a kapcsos zárójel helyett úgy talán elegánsabb megoldás.
Delay el nem fogod pontosan mérni a távolságot. Ikább használj számlálót, valahogy így.
Bővebben: Link A hozzászólás módosítva: Júl 15, 2016
Mint írtam ez csak egy teszt volt. 16f628-at használok. CCP és RB0/INT párossal fogom mérni, de most csak tesztelni akartam a szenzort, hogy mégis hogy dolgozik.
Jaa értem. Nekem indítás után volt egy elég nagy holtidő mire inította a modul a valódi mérést. Adatlapba nincs dokumentálva. De a kódomba kommenteltem, hogy legközelebb ne érjen meglepi.
Igen, az nekem is gond volt.
Nem emlékszem olyasmire a pic32 doksikból, hogy ne változtathatnál egyszerre túl sok port bitet, de gondolom egyébként is maximum 8-asával változtatgatod őket (rossz esetben bitenként).
Lehet, hogy a parancs szerkezete lesz más annak a flash-nek, mint amit szeretnél. Nem kellene elhinni, hogy kompatibilis valami mással, explicite végig kellene kuksizni az adatlapjaikat, és kiírogatnod teszt perifériára, hogy ténylegesen milyen műveleteket hajt végre a programod - hátha csak elkallódott a vezérlés. Tűt a szénakazalban..
A B port vagyis az adat portot, vagy is 16bit-et egyszerre állítom.
A cím és vezérlő biteket egyesével, mivel nincs olyan port amin összefüggően lenne 16bit, max 8, de az meg rossz helyen és össze vissza van szervezve. A parancs szerkezete ugyan az mint amit már használtam, így azzal sem lehet gond. Időzítéseket meg mostanra elég sok variációban kipróbáltam, de a parancs szekvenciákat egyszerűen nem veszi be. Az olvasás is szerintem csak azért működik, mert automatikusan olvasó üzemmódban indul. 29F800-at tökéletesen kezelem, szerintem itt még mindig a PIC-el lehet valami gubanc amit nem tudok mi le lehet. Lehet üresen bootloader nélkül is ki kell próbáljam, mert szerintem az USB kever be neki, legalább is remélem, mert utána már nincs több ötletem. |
Bejelentkezés
Hirdetés |