Fórum témák
» Több friss téma |
én ma próbáltam pont ielőtt kérdezted nekem sem ment csak nem volt több időm vele foglalkozni én rst lábrameg test lábra tettem 5K ellent de nem ment este még próbálkozok.
Nem tudtam rájönni, hogy mi lehet a gond. A céláramkörben azért gondoltam, hogy nem kell az RST felhúzás, mert a Launchpad-on az SBWTDIO fel, az SBWTCK levan húzva 47k-val.
Próbáld meg úgy, hogy a J3 -tól viszed a Test és a Reset - lábat, nekem sem ment ha a J2-ről próbáltam leszedni a T és az R -t. Amióta így használom nincs problémám pedig a vezeték is kb 20 cm.
Úgy próbáltad már, hogy közvetlenül a FET tüskéiről viszed ki a drótokat? A Launchpad kártyán (legalábbis a régin) van egy kondenzátor is a RESET lábon, ami a vezetékek szórt kapacitásával együtt már sok lehet.
Mi lehet a különbség? Ahogy elnézem közvetlenül csatlakozik a J3 R, T,--> J2 R, T lábaihoz, kb 2cm fólián.
A céláramkörben is raktam a RESET lábra egy 100nf kondit (RST-GND). Lehet, hogy azt is ki kell vegyem, nem csak a felhúzóellenállást? Annyit viszont már nem ér a dolog, hogy ki-be rakjam az alkatrészeket.
Lehet, hogy még megpróbálom a "régi" LP-vel. Idézet: Azt sürgősen vedd ki, mert azzal ellehetetlenítetted a kommunikációt! Egy, azaz 1 nF még elmegy... A felhúzó ellenállás maradhatott volna. „A céláramkörben is raktam a RESET lábra egy 100nf kondit (RST-GND).”
Valóban. Ezt jól benéztem.
Köszi, mindjárt ki is próbálom.
Kipróbáltam. A 100nf volt a ludas, illetve Én, mert odaraktam. (de hogy, honnan szedtem, hogy rakjak oda kondit?)
Ami még jó hír (nekem), hogy miután futtattam a debuggot, minden jónak tünt. Eltünt a programból a hiba. Vagyis a program nem futott normálisan a 100nf miatt. Ami még érdekes, hogy amiket eddig csináltam MSP430G2xxx-höz nyákokat, egyikbe sem tettem RST-re kondit.
Örülök, hogy megoldódott! Kondenzátor a (régi) Launchpad kártyán is van, gondolom, onnan jöhetett az ötlet. Csak a nagyságrend nem stimmelt nálad, mert a kártyán nem 100 nF, van hanem 1 nF.
Lehet, hogy ott néztem el az értéket.
Eme "kis" hiba miatt, majdnem az egész programot átírtam. Most visszaírtam mindent az eredeti állapotba, és láss csodát, minden jó! Még a szoftveres reset is működik rendesen, az UART kommunikáció, nem bolondul meg, és indításkor nem resettel kezd a vezérlő! (mert eddig, ahogy bekapcsoltam az inicializálások alatt, leresetelte magát.) Mégegyszer köszönöm.
Miután "minden" helyreállt, még egy apró, ám de nem elhanyagolható hibát találtam, amire nem találom a választ.
Tehát röviden, és talán "értelmesen" a hibáról: Két vezérlő UART kapcsolatban. Vezérlő 1: 3,358Mhz SMCLK, és a benne futó programciklus 213Hz. Ebben a ciklusban, minden 900. lépesben elküd egy 16 bites számot, a vezérlő 2-nek. Eddig jól is megy minden. A vez. 2 fogadja, kiértékeli megjeleníti, stb... A gond a vez 2-ben van. A vezérlő 2-ben ez a rövid kis ciklus fut:
Ha teljesül az első feltétel, (gombnyomás (P2IN & fel)) elugrik egy másik menübe, (ahol nem figyeli a vez 1 által küldött infót), ott elindul egy másik ciklus, ahol ismét figyeli a gombot. Ha megnyomják, vissztér a fenti kódba,(ahol ismét figyeli az UART-on érkező adatot) de a ciklus futása teljesen lelassul, és ezt nem tudom, hogy miért? Ha pont akkor tér vissza, amikor nem érkezik adat, akkor minden jól fut.
Úgy próbáltad már, hogy nem küldeted az adatot hanem te kéred a vezrélő 2.ről? Így te szabályzod, hogy mikor kéred , és tuti nem lesz ütközés.Illetve láttam még valahol egy olyan feltételt egy példában asszem ami vizsgálja a buffer amíg az nincsen készen addig nem csinál semmit.
Lehet , hogy hülyeséget írok , de azért leírtam hátha jók az 5leteim.
Jobban megnézve az Eagle vázát valószínű azért tettél oda egx 100nf-s kondit mert a a P1.3ra van téve egy 47K és egy 100nF Kondi
Próbáltam úgy,hogy lekérem az infót, de valamiért akkor a ciklusidő össze-vissza ugrál, és a 213Hz fontos, hogy stabil legyen. Az órajelet is ezért kellett emeljem 3.3Mhz-re.
A P1.3-on azért van a kondi, hogy valamennyire prellmentesítse, de lehet, hogy ebbe a hibába futottam bele.
Hogyan tudom egy 32 bites változóból kivenni az utolsó 14 bitet? Ugyanis csak arra van szükségem.
biteltolással. azt hiszem így van: valami = (valami<<18);
update: vagyis elsőnek el kell tolni a felsőket amik nem kellenek és utánna szerintem vissza is kell huzni az eredeti ehlyére, vagy egy másik lehetőség atomi művelettel kinullázol mindent ami feljebb áll mint a 14. helyiérték.>>
halli all. valaki segitem nekem kérem szépen.
Kitettem egy 2553-t próba panelre, stab 3.3t kap stab icről, eddig elindult, most valamiért nem tudom nem nagy körülírása a problémának. Padban megy rendesen. A rst- lábra, mekkora ellenállást kell rakni? én egy 5Kt raktam be de nem húztam le földre.
Húzd fel 47k-val az RST-t. Ha lehúzod állandó resetbe lesz.
közben megoldódott , kici pici kinai vezetékből 1 nem volt rendesen a helyén.
Viszont amikor 47K-t rákötöttem a rst lábhoz meg see mozdult, 5Kval szépen megy :/
Pedig a launchpad-ben is 47k van. Én is azt tettem az áramköreimbe.
Kicsit gondolkodtam a kérdéseden (és belekeveredtem teljesen). Ha az utolsó 14 bit kell akkor csak 16-ot kell jobbra tolni, és az első két bitet törölni. Pl:
0100 0110 0100 0110 0110 1000 0001 0110 >> 16 = 0000 0000 0000 0000 0100 0110 0100 0110 -2 = 0100 0110 0100 0100 Így egy 16 bites változóban van a 32 bit, felső 14 bitje. Bár kételkedem benne, hogy jó lenne. Mindenesetre érdekes felvetés.
mivel neki az utolsó 14 kell így ha eltolja 18al balra majd vissza akkor kinulláza (elvileg ha nem avgyok teljesen böszme ), de egyszerübb neki a felső 18bitet kinulláztatni.
A = (B AND 3FFF) A = (B&3FFF) azt hiszem pl B 1001 1011 1000 1111 1100 1001 0000 1111 3FFF 0000 0000 0000 0000 0011 1111 1111 1111 ------------------------------------------------------------------- A = 0000 0000 0000 0000 0000 1001 0000 1111 Elvileg remélem jól számoltam. Bővebben: Link
Előző hozzászólásom félre sikeredett nem olvastam el eléggé az írást. nem alsó kell neki hanem a felső 14bit.
Szerintem tolja el jobbra 18al. Nemtudom hogy megy a tipus kényszerítés itt de biztos lehet belőle 16bites-t csinálni.
Hali!
Valakinek sikerült már használnia IAR alatt a printf-t? Próbálkoztam már mindennel de nem jön össze nekem :/ Próbáltam a 43oh-sat is de az mneg végképp nem megy. Akinek sikerült kérem ossza meg velem A következő alkalmazáshoz kellene nekem. uart-n akarom kinyomatni az adatot pc-re debuggolás képpen (puttyal nézném). ha UCA0TXBUF = 0x31; -> pl ez megy nem gond löki kifelé az egyeseket.
Szép Hajnalt mindenkinek.
Kedves fórumozó társak, nagy problémával nézek szembe. Sikerült beszereznem 2 db rfm12b Rfmodult, mai nap folyamán meg is néztük 2 darab piccel, sikeresen kommunikáltak egymással. Mivel a pic kódja szintén SPIre volt megírva semmi bit barmolás , így adott volt , hogy egyszerűen fog menni az implementáció, de sajnos mégsem. Csatolom a fájlokat, illetve amire én átírtam. Valaki aki jártas a Picben , nagyon megkérném , hogy amint ideje engedi lessen rá. Nem sok 5 perc alatt mind a 2t át lehet nyálazni. Itt a kód amit átszerkesztettem mspre. A hiba nem tudom hol van , de szerintem több sebből vérzik, de hiba nélkül lefordul így annyira nagy baj nem lehet. Több mint valószínű hogy az órával lesz a gond(szerintem)
Az frm.rar-ban mellékeltem a pic-s forrást hátha jól jön még valakinek + onnan megtudja nézni az eredeti müködő kódot. Köszönettel Balázs
hopp, a bámoslt kódból hiányzott a konfig rész valahogy lemaradt
Hmm mivel látom sokakon kifogott a kód így inkább erre a 2 sorra keresem a választ egy pic szakértőtől.
#use delay(clock=1000000) //gondolom a fordítónak van megadva. setup_oscillator( OSC_1MHZ ); //1mhz-es processzor sebesség. #define SPI_MODE_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H) void SPIInit() // Nah ez mi lehet 5letem van csak nemtudom , hogy jó-e { setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_16); //master mód | sejtem | ez az osztó 16-al osztja az 1mhz-t? } próbálnék egy hasonló MSP beállítást belőni de még nem sikerült.
Szerintem nézz szét Icserny fórumtársunk honlapján. Lehet, hogy több sikerrel jársz. De ez csak egy ötlet. Én is onnan szoktam puskázni, a C -vel kapcsolatban.
|
Bejelentkezés
Hirdetés |