Fórum témák
» Több friss téma |
Hú... ez engem is érdekelne, remélem sikerrel jársz.
Sziasztok.
Egy kis segítséget kérnék a megszakításokkal (energiatakarékos móddal) kapcsolatban. Tehát, három (négy) modul megszakítását használom. ADC, PORT2, USCIAB0TX, USCIAB0RX. Elsőnek az ADC -nél indítom el a LPM0 módot, "__low_power_mode_0();" és ebből értelemszerűen a "__low_power_mode_off_on_exit();" paranccsal szállok ki. A kérdésem, hogy a többi modulnál is ki kell adni az LPM0 parancsot, és az LPM0 exit-tel kell befejezni a megszakítást? Mert ha így teszek, akkor az USCIAB0TX megszakítás hívásánál leáll a programom, de ha csak simán "_EINT();" parancsot adok ki, akkor nem.
Ha a főprogram alvásba tette magát, akkor onnan csak az "__low_power_mode_off_on_exit();" tudja felébreszteni.
Mert mi is történik? A főprogram beállítja az SR regiszterben az "energiatakarékos" biteket. Amikor egy megszakítás beüt, akkor a PC és az SR regiszterek automatikusan elmentésre kerülnek a veremtár tetején, s törlődnek az "energiatakarékos" bitek (talán egy kivételével), feléled a CPU. Amikor azonban vége a megszakításnak, automatikusan visszaállításra kerül SR és PC eredeti tartalma, tehát a CPU visszaalszik. Hogy lehet ebből kikeveredni? Csak úgy, hogy a megszakítás végén, visszatérés előtt megmachináljuk (praktikusan töröljük) a veremtár tetején eltárolt SR "energiatakarékos" bitjeit, hogy a visszaállítás után ne vigye alvásba a CPU-t. Ezzel "felébresztjük a főprogramot. Na, pont ez a machinálást csinálja a "__low_power_mode_off_on_exit();" függvényhívás! Használni mindazon megszakításokban kell, amelyeknek feladata a főprogram felélesztés. Az, hogy egy megszakításnak feladata-e a főprogram felébresztése, az az adott alkalmazás megszervezésétől függ.
Köszi szépen.
Menet közben megtaláltam a hibát. Alvó állapotból akartam alvó állapotba küldeni.
Sziasztok, kicsit off, de gondoltam itt par ember ismeri a Launchpad demo kartyakat, hatha ezt a valtozatot is megrendelte valaki...
A kerdesem csupan annyi lenne, hogy rendelt valaki anno az ARM-es Launchpad demo kartyabol (LM4F120), mikor meg $5-ert lehetett elorendelni? Nekem meg mindig nem jott meg, pedig az volt mar vagy 2 honapja (raadasul USA-ban vagyok, tehat meg csak az sem lehet, hogy akad a szallitas Mo-ra)
Ha ott rendelted meg, akkor estore.ti.com-on meg lehet nézni, hogy mikor adják postára. Az előrendeléseket szeptember 25-én kezdték kiszállítani, de van, akinek novemberre ütemezték a kiszállítást. Én még az előrendelés megnyitása előtt regisztráltam magamat, így szept. 25 után pár nappal meg is kaptam.
Csak előrendelted vagy ki is fizetted már? Én 2 hete rendeltem meg, Dec 27.-re írták a becsült időt mire ideér. Gondolom ebből sem tudnak annyit gyártani, mint amennyit megvennénk.
Én szeptember 27-én rendeltem és Mikulásra ígérik.
Nézd meg a visszaigazoló e-mailt vagy az estore oldalon a rendelés pillanatnyi állapotát.
Sziasztok.
Lenne pár kérdésem, de nem mind kizárólag MSP-vel kapcsolatos, ezért előre is elnézést kérek! 1: Miután megoldódott minden problémám az rs5c372a RTC-vel kapcsolatban, akadt egy kis gondom a kiíratással. Az időt 1 másodpercenként íratom ki az LCD-re, rögtön a Port megszakításban, amit az RTC generál. A dátumot és a napot csak egyszer az induláskor. A kérdés az lenne, hogy hogyan mondjam meg a vezérlőnek, hogy ha elmúlt éjfél, frissítse a dátumot. Csináltam egy sima feltételt, amivel az órát figyelem "if(hour == 0)", de akkor amíg 0 óra van, másodpercenként a dátumot is frissíti fölöslegesen. 2: Ez nem igazán MSP hanem Processing. A mikroverzérlő (g2553) elment egy csomó adatot, egy EEPROM-ba (24lc512). Ezeket az adatokat "valamikor, ha el van indítva a program..." bluetooth-on keresztül elküldi a számítógépnek, ahol egy koordináta rendszerben megjelenik, majd az adatokat elmenti egy fájlba. A problémám ez utóbbi pontnál van. Tehát: Egy sima TXT fájlba mentem el a mikrovezérlőből érkező adatokat. Ha a programot elindítom ebből a fájlból behívja az adatokat és megjeleníti a koordináta rendszerbe, de ha lekérem és menteni szeretném a friss adatokat, akkor a régieket felülírja. Ezt hogy lehetne elkerülni?
1: Írd be a feltételbe a percet és a másodpercet is így: if ((hour==0) && (min==0) && (sec==0))
2: A pc oldali programot te írtad? Idézet: „if ((hour==0) && (min==0) && (sec==0))” Itt nem úgy van, hogy az első igaznál, teljesül a feltétel? Vagy keverem valamivel? Idézet: „A pc oldali programot te írtad?” Igen, Processingben, de még csak részletekben van kész. A fájlkezelést ezen mintaprogram alapján írtam.
Szia!
ÉS-nél az első nullánál hamis ! Steve
Igen a vagy-al kevered itt csak akkor igaz ha mindegyik feltétel igaz. Ha csak a (h==0) használod akkor egy teljes órán át igaz.
A Processing-el még nem volt dolgom, de gondolom itt is valahogyan a fájl végére kéne pozicionálni és onnan elkezdeni írni be az új adatokat. Ezek szerint mindig újra létrehozod a fájlt és utána írod be az adatokat és ezért írja mindig felül. 1. A meglévő fájlt megnyitod olvasásra (Open) majd lezárod 2. Majd a filet megnyitod szerkesztésre (Append) ekkor automatán a fájl végére kéne mutasson a mutató és ha beírsz valamit akkor a végére kéne írjon text fájl esetén, ha végeztél akkor itt is lezárod a fájlt. A hozzászólás módosítva: Okt 25, 2012
Idézet: Ezen a fórumon mutatnak egy megoldást. Ha jól értem az ott leírtakat, akkor a Processing nyelvi eszközeivel nincs rá lehetőség, ezért a Java szintjére kell "lesüllyedni". (Hasonlóan ahhoz, mint amikor a C programot assembly betéttel kell megfejelni...)„ha lekérem és menteni szeretném a friss adatokat, akkor a régieket felülírja. Ezt hogy lehetne elkerülni?” Megjegyzés: a másik lehetőség, hogy beolvasás után előbb visszaírod a beolvasott adataidat, utána hozzáírsz. Ez nem túl hatékony módszer, de ha nincs túl sok adatod, akkor ez is járható út... A hozzászólás módosítva: Okt 26, 2012
Köszönöm a linket! Átnézem, hátha sikerül összehozni.
DecebaL. Valóban a "vagy"-al kevertem össze, köszönöm. Idézet: „Ezek szerint mindig újra létrehozod a fájlt” Nem, nem hozom létre mindig a filet. Azt a részt kiszedtem a példaprogramból. Lehet, hogy egy "jobb" fordító programot kellene keressek a Processing helyett? kissi: Köszi! Más: Ma, kb. két hónap elteltével megkaptam a Mouser-től a "Fram MCUs ....." könyvet. Szerintem riksával jött Magyarországig.
Itt található egy leírás arról, hogy hogyan lehet a CCS v5 alá terminál ablak bővítményt installálni.
Ha jól rémlik valaki itt adott egy linket még régebben, ahol az FRAM-os TI vezérlőkről lehetett könyvet rendelni. Jelentem a könyv megérkezett, köszönöm a lehetőséget.
Sziasztok!
Olvasgattam a launchpad user's guide-ját és találtam benne egy olyan részt, hogy a launchpaddal programozható több F szériás típus, mint például a 2274-es RF modulos target board, illetve vannak egyéb target boardjai is a ti-nek elviselhető áron (10$). A problémám csak annyi, hogy a launchpadon J4-hez nem igen találok csatlakozót/tüskesort, ahol meg találok ott olyan árban van, hogy kijön belőle még egy startkit. Nem tudjátok hol tudnék ilyet beszerezni? User's guide ennyit ír: "connector J4 must be populated with a 0.050-in (1.27-mm) pitch male header"
Ez inkább a Vásárlás, hol kapható? c. topikba való. A kulcsszavak: Tördelhető tüskesor, 1,27mm-es, 90°-os (ha hajlított kell...)
Sikerült megoldanom a Processingben, a file újraírási problémámat. De......Adódott egy kisebb problémám, amire nem találom a választ.
Az file újraíráshoz most ezt használom:
Viszont a file elérési útját "("data.txt", true)" itt pontosan meg kell adjam, különben nem találja a file-t. Tehát pl. ilyen formában: "c:/Users/Gabcsi/Documents/Processing/file_io/data/data.txt". A problémám és a kérdésem csak az, hogy ha lefordítom véglegesen a programot, vagyis .exe állományt csinálok belőle, akkor másik számítógépen nem fogom tudni futtatni a programot a file elérési útja miatt? Vagy, hogy adjam meg a file elérési útját, hogy mindig ott keresse ahol a program van?
Sziasztok! Újra elővettem a launchpadot, mert van egy kis időm. Icserny cikkeit tanulmányozom újra, viszont most elakadtam.
A program az interruptos cikk alapján:
A probléma: A gomb lenomására nem fut le az interrupt. A gomb működik Viszont ha A P1.3-at tápfeszre húzom, minden működik, ki tudom választani, hogy fel, vagy lefutó élre működjön. Olyan, mintha a belső ellenállással lenne gond. G2452-t használok. Mi a megoldás? Köszi!
Erre egy Java programozó tudna választ adni. Vagy a Processing forráskódját kellene tanulmányozni, megnézve, hogy abban hogyan oldják meg.
Furcsa, mert a dokumentációból kiindulva, ha nem létezik a fájl, akkor megpróbálja létrehozni. Valami tehát megakadályozza ebben.
Ehhez egyrészt jó lenne tudni, milyen kivételt dob, amit megtehetsz pl. a catch ág módosításával:
Illetve megpróbálkozhatsz ezzel, hátha az explicit utasítás csodát tesz:
A hozzászólás módosítva: Okt 28, 2012
Köszi mindkettőtöknek.
A dokumentációt olvastam, és nem a file létrehozásával van a gondom, illetve azzal is. A pontos probléma: Csináltam egy üres file-t (Notepad, data.txt), oda, ahol a programom forráskódja van, illetve abba a könyvtárba amit a processing készít a file-nak (betűkészlet, stb.), jelen esetben: "c:\Users\Gabcsi\Documents\Processing\file_io\data\". Ha "manuálisan" beírok pár adatot a file-ba, akkor ezt szépen ki is írja nekem a programom, tehát megtalálja a file-t. Behívás:
Ha viszont írni szeretnék ebbe a file-ba, az csak úgy tehetem meg, ha a teljes elérési utat megadom, tehát: "filewrite = new FileWriter("c:/Users/Gabcsi/Documents/Processing/file_io/data/data.txt", true);" mert ha nem akkor létrehoz egy "data.txt" file-t abba a könyvtárba, ahol a fordító program (Processing) található, jelen esetben: "d:\Msp430_and_all_Msp\processing-1.5.1\", és abba írja a mikrovezélőtől érkező adatokat. Tehát az írás/olvasás jól működik, csak ha nem adok meg elérési utat, akkor csak az adott számítógépen tudom használni a programot. Remélem így érthetőbb a problémám.
Köszönöm szépen!
Menet közben sikerült "megoldanom" a problémát. Ha, hogy téged idézzelek, a "Java szintjén" olvasom be a file-t (FileReader), akkor mindkét műveletet (írás/olvasás) ugyanabban a könyvtárban végzi el. Összeraktam egy egyszerű programot, ami csak egy "Helló"-t ír be az egér gombnyomására, egy fileba, futtatható állomány készítettem belőle, bemásoltam a "helyére", és szépen működik. Megtalálja a filet írásnál olvasásnál, és ha kitörlöm, újat készít a megadott helyre. Ja és a lényeg, hogy nem írja felül a már meglévő adatokat, és ez volt a kezdeti hiba. "Sajnos", hogy minden jól működjön, és meg is értsem, sokkal mélyebbre kell majd ássak a Processing/Java lelkivilágába. Nagyon köszönöm a segítségeteket, és elnézést az off-ért, de pár hasonló kérdésért úgy gondolom kár létrehozni egy külön topikot, meg a Processing, inkább programozás mint elektronika, bár jelen esetben az MSP-hez kapcsolódik.
Vagy úgy! Ez a viselkedés a legtöbb nyelven "alapértelmezett". Azaz ha nem abszolút elérési utat adsz meg, akkor a futtatott binárishoz képest relatívan helyezi el a fájlt. Vagyis ha csak a nevét írod le, akkor közvetlenül a .exe, vagy .jar , stb mellé.
A programozás ezen formájával még csak "most" ismerkedem, ezért igazából semmit nem tudok ezekről a dolgokról. Jelen projektemben is csak azért kell, mert egy csomó adatot szeretnék tárolni, ami a mikrovezérlőben, vagy EEPROM/ok-ban már nem férne el, és ha már a számítógépen tárolom, akkor meg is jeleníthetem azokat.
A Processinget azért választottam, mert viszonylag egyszerűbbnek tünt mint pl. a Code Blocks, vagy a Visual Studio, amiket talán még elindítani sem tudnék, nemhogy programot fejleszteni velük. Bár ennek is megvannak a hátrányai. (nem is kevés) |
Bejelentkezés
Hirdetés |