Fórum témák
» Több friss téma |
Egy újabb kérdés.
Két kontroller közötti kommunikáció UART-on. Az egyik vezérlő (legyen 1-es) 130Hz-ként küldi az infót a másiknak (legyen 2-es), ami fogadja, feldolgozza, stb... Raktam a 2-es prociba, egy olyan funkciót, hogy ha megnyomok egy gombot (amit megszakításban kezelek), akkor reseteli magát a proci. A probléma itt kezdődik. Amikor újraindul a proci (2-es), resetelné az 1-es procit, de az még mindíg küldi az infót, és van úgy, hogy pont akkor küld, amikor fogadnia kellene. Ezért leáll a 2-es proci. Szóval a lényeg, azt kéne megoldanom, hogy a 2-es addíg küldje a reset infót, amíg az 1-es végre nem hajtja. Ha nem érthető, megpróbálom máshogy leírni. Icserny: Köszönöm, megtaláltam, sikeresen megoldottam.
Szerintem érthető.... azzal lehetne próbálkozni, hogy mielőtt a 2-est reseteled, küldesz vele az egyesnek egy parancsot, ami az (vagyis az 1est) várakoztatja kicsit, amíg a 2es reset-el...
Az az út sajnos nem járható, mert a Port megszakításból nem akar átmenni az UART megszakításba. (próbáltam) Mind két vezérlőnek újra kell indulnia, úgy hogy először a 2-es, majd miután elindult, kiadja a reset parancsot az 1-nek. Az UART küldést úgy állítottam be, hogy miután kiküldi az adatot, kapjon visszajelzést a fogadásról, és itt áll meg a 2-es vezérlő, mert az 1-es rossz visszajelzést küld, azaz nem a visszajelzést küldi, hanem az infót, de csak akkor, ha a 2-es pont akkor küld amikor az 1-es is. Kb. 10-ből 2-szer.
Nem volna egyszerűbb a nyomógombot direktben rákötni mindkét mikrovezérlő RESET bemenetére?
De, talán az lenne, bár elég "távol" vannak egymástól. A másik probléma az, hogy ha össze vannak kötve a vezérlők (RX, TX), akkor hiába nyomkodom a reset gombot nem történik semmi. Sőt tovább megyek. Ha a számítógépre csatlakoztatok két LP.-ot, és összekötöm őket UART-on, (RX, TX, GND) és kihúzom az egyik usb kábelt, az UART-on keresztül működik a mikrovezérlő. Ugyan ez a helyzet az i2c vonalon. Természetesen az RX TX jamperek nincsenek fenn. Arra viszont még nem sikerült rájönnöm, hogy hogy tud működni a vezérlő úgy, hogy csak az RX TX GND, vagy a P1.6-7 GND lábak vannak bekötve, és, hogy miért nem lehet resetelni.
Ui. Azt még hozzátenném, hogy a reset időbeli eltolásának is van szerepe. Ha más nincs, lesz egy plusz gomb.
Nekem ugyen az a helyzet csak SPI vonalon elég 1 usb és megy a másik is tiszta "vicc"
Nem ez a vicc, hanem az, hogy úgy is próbáltam, hogy pl. az egyik vezérlőn P1.0 kimenet a másikon meg bemenet, és úgyis megy mindkét vezérlő,úgy hogy csak az egyik tápot. Viszont amikor véletlenül rátettem az ampermérőt a P1.4-es lábra, úgy hogy a multi egyik vége a GND a máski pedig a P1.4, rögtön elszált a láb, de csak az az egy. Na ez a vicc.
Minden I/O kivezetésen van egy védődióda, ami kinyit, ha a láb magasabbra kerül, mint a VDD. Amikor kinyit a dióda, a VDD megkapja a bejövő feszültséget, s akkor természetesen működni kezd a mikrovezérlő.
Valami hasonlót olvastam,csak nem értettem. Tehát ha jól értem, VDD = 0V, P1.x = 3,3V akkor nyit a védődiódadióda, és elindul a vezérlő. Érdekes. Már csak azért is mert az adatvonalakon négyszögjelet kap. Akkor már csak azt nem értem, hogy miért nem megy a reset gomb, ha össze van kötve a két LP. Bár ott lehet, hogy Én szúrok el valamit.
IAR használók segítségét szeretném kérni.
Írtam egy programot, és ha debugban lépésenként szeretném futtatni, akkor egy pár lépéset megcsinál, és se-szó se-beszéd, bezárja magát az egész IAR. Mitől lehet ez? Op. Win 7 x64 IAR 5.40.3 30 napos. U.i Csak annál az egy programnál csinálja. A többi programot normálisan tudom debug-olni.
Jön a Torkosborz!
A Texas Instruments MSP430 mikrovezérlőinek legújabb, jelenleg még fejlesztés alatt álló generációja a Torkosborz (Wolverine) néven fut. Egyelőre még csak egy brosúra tölthető le a www.ti.com/wolverine címről, s néhány kósza hír kering a világhálón (ezek szerint június körül lehet majd hozzájutni az első mintákhoz). Az új generáció elsősorban a kis energiafogyasztást tűzte ki célul, amit az új, ultra alacsony szivárgású IC technológia tett lehetővé, de a kis fogyasztás érdekében a perifériakészletet is áttervezték. A főbb jellemzők: - 100 uA/MHz aktív áramfelvétel (az MSP430G2231-nél ez 220 uA/MHz 2,2 V-on) - 75 uA miközben a 12 bites ADC másodpercenként 200 000 mintát vesz - 0,36 uA standby mód, működő RTC (real time clock) mellett - 50 nA "adatmegőrző" alvás módban (LPM4) - FRAM memória, ami gyorsabb és 250x kisebb fogyasztású, mint a Flash memória, s nem mellékesen 100 trilliószor újraírható... Nürbergben, az "Embedded World ? 2012" kiállítás és konferencia keretében már bemutattak egy Launchpadhoz hasonló demókártyát, ami kapacitív érzékelőkket és e-ink kijelzőt tartalmazó "booster pack"-kal is ki volt egészítve. (A www.43oh.com portál közzé is tette a képet).
Ez nem semmi fejlődés......Szörnyű, hogy ezek az oroszok mit ki nem találnak.
Mivel nem jöttem rá, hogy mi a baja az IAR-nak, átraktam a programot a CCS4-be, ahol tudom használni a "Setp Into" funkciót, és nem áll le a program. -Érdekes.
Viszont nem találom a LaunchPad configot. Pontosabban azt a részt, ahol kiválasztom a LP com portját.
Használt már valaki rfm12b rf modult LP--al?
Ha igen megoszthatná velem tapasztalatát. Én most kaptam 2t megpróbálkozok vele , hogy a 2t kommunikációra bírjam
update: ha van valaki aki megtudná mondani hogy az spi-t miképpen kell beállítani rajta vagy pedig valami hasznos magyar nyelvű(lehet angol is de inkább magyar) leirást tudna adni SPiből megköszönném.
Sziasztok,
icserny cikke alapján összeraktam az LCD vezérlést, de elakadtam. Nem szöveget, hanem egy int típusú változót szeretnék kiíratni, de sehogy nem sikerül.
Már többször felmerült ez a kérdés, itt nézz körül!
Sziasztok!
Csak most ismerkedem a témával és a következő kérdésem lenne: Port1 és port2 esetében is csak egy-egy programmegszakítást írhatok függetlenül attól, hogy melyik I/O kezdeményezi a megszakítást, vagy porton belül minden I/O-hoz írható külön-külön megszakítás? Köszönöm!
Egy-egy megszakítási vektor tartozik a portokhoz, de a megszakítást kiszolgáló eljárásban vizsgálható, hogy a P1IFG (vagy P2IFG) melyik bitje okozta a megszakítást.
Köszönöm!
Ha nem gond esetleg meg tudnád mutatni, hogy hogyan néz ki ez a programban? Előre is köszönöm!
Az UART-on érkező adatot, hogyan tudnám megkülönböztetni, hogy 1 ill. 2 bájtos-e?
Ha 2 bájtos adatot fogadok, akkor ezt használom,
megszakításban, de ha csak 1 bájtos adat jön, akkor leáll a program, hisz várja a másodikat.
Ha 2 byte-os jön, akkor adott idő múlva ott kell lennie a másodiknak, ezt figyelve el tudod különíteni az 1 v. 2 byte-os adatot ( ha nincs egyéb jelölési mód! ). --> tehát kiolvasod és ha x időn belül nem jött második, akkor 1 byte-os az adat!
Steve
Erre gondoltam Én is, de már látom, hogy összetettebb a problémám. Menet közben kiderítettem, hogy a legnagyobb probléma (téged idézve) a "jelölési módal" van.
Azért köszi. Idézet: Nem csináltam még ilyet, de ilyesmivel próbálkoznék:„hogyan néz ki ez a programban?”
Érdekesség.
Nem hagyott nyugodni az IAR hibája, (amit pár hsz-el ezelött írtam) hogy debug közben leáll. Ma egy kicsit forglalkoztam vele, és sikerült megoldanom a problémát. Kb. öt újratelepítés után, (minden verziót kipróbáltam) ugyan azt csinálta. (ha debuggolni akartam azt az egy progit, leállt, hibaüzi nélkül) A megoldást az jelentette, hogy nyitottam egy új projektet, bemásoltam az új projektbe a forráskódot, és láss csodát, minden megy mint a karikacsapás. U.i Mindenesetre a régi projektet megőriztem, hátha egyszer lesz kedvem, megkeresni benne a hibát. Még annyit hozzáraknék, hogy feltettem egy másik gépre az IAR-t, és a rossz projektet, és ott is ugyanazt csinálta. De, hogy mitől, vagy miért?
Kollégám szerint: " Ezen már csak a szentelt víz segít !" Steve
Hát igen. Már majdnem ott tartottam, hogy leöntöm egy vödör "szentelt" vízzel.
Így , hogy már látom, hogy mit csináltam, és normálissa működik minden, még az UART kommunikációs problémák is megoldódtak.
Köszönöm, pont erre volt szükségem. Már működik is
UART kérdésem lenne...
2400 baud 8E1 irást és olvasást szeretnék csinálni. A kommunikáció megy 2400 8N1-gyel (2553 és HyperTerminál között). De amikor beállitom a paritást: UCA0CTL0 = UCPEN+UCPAR; akkor is csak 8N1-et látok a Hyperterminál alján (Auto Detect), akár hogy állitom a HyperTerminált mindig 8N1-et mutat. Amikor 8O1-re állitom a 2553-mast, akkor eggyáltalán nem tudok a HyperTerminállal kommunikálni (UCA0CTL0 = UCPEN. Probáltam az adat bitet 7-re, a Stop bitet 2-re állitani, csak a Stop bit allitás sikerült. A program 8E1 beállitással csatolva (8N1-et mutat a HyperTerminál...) Mit csinálok rosszul? |
Bejelentkezés
Hirdetés |