- PLATFORM ?= exp430fr5739
- MODULES=$(MODULES_PLATFORM)
- SRC=main.c
- include $(BSP430_ROOT)/examples/Makefile.common
Fórum témák
» Több friss téma |
Szia szitko teljesen tökéletesen fogalmazta meg mit is szeretnék csinálni. A minta program csak a launchpad-en futtatot probálkozás (összeollozás"ismét köszönet icserny-nek"). De ha már itt tartunk az impulzusjelre is lehet feszültségosztot tenni?
Idézet: „Csak mint kezdö (tudom ez kutyát se érdekli)” Dehogy is nem, és nem aggódj azon, hogy kezdő vagy, én az örök kezdők táborába tartozom. Idézet: „impulzusjelre is lehet feszültségosztót tenni?” Igen. Nézz be 5 <-> 3.3V topikba.
Köszi a biztatást. Meg is van a topic és ezért is köszönet. Mostmár csak idö energia és gyakorlás az egész.
Szinkronnál órajelet is küldessz nem csak adatot.
A hozzászólás módosítva: Okt 6, 2012
Ez ok, de minek az órajelét szeretnéd átvinni?
Gondolom, nem az SPI órajelére gondolsz. Az átvitt adatot egy másik kontroller fogja feldolgozni és az kommunikál a célhardverrel. Más kérdés, mekkora késleltetés van a rádiós átvitel során és ezt mennyire szükséges kompenzálni, ill. az, hogy kapcsolgatni kell adás/vétel között vagy rögtön két modult használni hozzá. Lehet, rosszra gondolok.
Ja, én azt hittem az rf kommunikációt akarod spivel lezavarni. Valamit elnézhettem akkor tegnap.
Sziasztok
Egy szakértö rá tudna pillantani erre a progira hogy mit csináltam?
A bit3 lenne a bejövö impuls amit meg kéne mérnem. Jot csináltam?
Az igazat megvallva én nemigazán értem.
1: a program elején létrehozol egy változót (e) amibe berakod a BIT3-at, majd a TACCR1 tartalmát, ami kb. 1 lesz. Minek? 2: a "while(BIT3){" ? ebben a formában ez egy elől tesztelő ciklus, ami azt jelenti, hogy csak akkor fut le a ciklusmag, ha igaz, vagyis ha a BIT3 = 1. ezzel viszont nem számolod a bejövő impulzusokat! 3: ha véletlenül mégis lefutna a ciklus, mert ha nem fut le, akkor vége a programnak!, akkor megszorzod azt a kb 1-et 10-el, ? és a ciklus végén lenullázod. 4: ha kiszáll a ciklusból leáll a program. Nincs végtelen ciklus, vagy valami ami működében tartaná a programot. Szerintem, és ez csak egy javaslat, elsőnek csinálj egy folyamatábrát, hogy mit is akarsz csinálni, majd olvasd át még egyszer kétszer.... amit icserny fórumtársunk írt neked, helyettesítsd be a folyamatábrádba, közben nézd a FUG-ot, és utána kezd megírni a programot. Ja és ne kapkodj!
Először is jó lenne tisztázni a kapcsolást, meleértve azt is, hogy melyik mikrovezérlőről van szó. A G2553-at nézegettem, annak a P1.2 lábán lehet Input Capture-t játszani (Timer0 CCR1 "A" bemenet). A Grace ilyen beállítást rittyentett hozzá:
Ez lényegében az, amit már ajánlottam: Timer0 folyamatos módban, a CCR1 egység pedig hardveresen rögzíti az "időbélyegeket" minden fel- és lefutásnál. Írni kell hozzá eg megszakításkiszolgáló eljárást, ami kiolvassa a TACCR1 regisztert és kiszámolja az időkülönbséget, az előző élhez képest. (A cikkeimből a PWM példákat nézd meg, mert úgy emlékszem, hogy a CCR1 modul esetében törölni kell a megszakításjelzőt!). A szoftveres számlálgatást felejtsd el, mert nagyon pontatlan lesz! A hozzászólás módosítva: Okt 6, 2012
meleértve - hmmm, ez beleértve akart lenni!
Sziasztok.
Egy alapkérdés. Beállítom a portok ki/bemeneteit. Port 2 pár bitje kimenet, a maradék bemenet. Beállítom a bemenet tulajdonságait (felhúzó-ellenállás, felfutó élre legyen érzékeny, flag törlés). Ezek utána még csinálok a programban pár dolgot, melyek nem használnak megszakítást, majd engedélyezem a "P2IE |= xy, ab, cd;" megszakításokat. Erre a program egyből beugrik a megszakításba. Miért? Nem csak akkor szabadna bemennie a megszakításba, ha engedélyezem a globális megszakítást? Vagy a PxIE-vel ezt is megteszem? Akkor minek adjam ki a PxIE utána a pl. "__low_power_mode_0(); vagy _EINT();" megszakítás engedélyezést? Idézet: De igen, s alaphelyzetben GIE =0, aza tiltja az összes maszkolható megszakítást.„Nem csak akkor szabadna bemennie a megszakításba, ha engedélyezem a globális megszakítást?” Idézet: Nem.„Vagy a PxIE-vel ezt is megteszem?” Előtte nem történik valami más, ami belepiszkál az SR regiszterbe?
Ba***s!
De történik egy analóg átalakítás, de a "__low_power_mode_off_on_exit();" móddal szállok ki belőle. Ez nem állítja vissza a GIE regisztert? Idézet: Ez nem, de a programmegszakításból való visszatérés igen (RETFIE). „a "__low_power_mode_off_on_exit();" móddal szállok ki belőle. Ez nem állítja vissza a GIE regisztert?”
Csatoltam a BMP085-ös légnyomásszenzor kiolvasásához használható kódokat és az I2C függvényeimet - ahogy ígértem.
Az angol kommentek miatt elnézést kérek, nem szeretem a keveréket... Szerk.: A bmp085.c-ben hagytam egy fölösleges "bmp_085_calibrated" változót. Ez arra kellett, hogy ha a szenzor induláskor nincs rajt, akkor is első alkalommal inicializáljam. A csatolt kódokban viszont sehol sincs használva. A következőképpen kapható meg a kiolvasott eredmény:
Én több (jelenleg 8, mert azt egyszerű osztani) mérés átlagát veszem, így egész stabil. Olyan 5-7 Pa (~0.05 mBar) ingadozással kapom az eredményeket egymásutánban olvasva. Csináltam sorba rendezést is, majd négy legkisebb és legnagyobb elemet eltávolítottam, ezután ebből csináltam átlagot - ez kb. ugyanazt az eredményt hozta, így ezzel inkább nem terhelem a kontrollert. Szépen látszik egyébként, hogy jön a rossz idő - 1-2 nappal ezelőtti értékhez képest kb. 10 mBar-ral mutat most kevesebbet. Ha valakit érdekel a dolog, a szenzor Ebay-ről egész korrekt áron beszerezhető. Itthon csak nagyon drágán láttam, ill. Ebayről rendelő Vaterásokat. A hozzászólás módosítva: Okt 7, 2012
Köszönöm mindenki hozzájárulását a tanulásomhoz, remélem ennyiböl már sikerül valamit csinálni.
Szerintem valamit csináltam igy hirtelen. Ja az IC G2452-es. most azt probálgatom hogy a TACCR1 regisztert használva impulzust hozok létre a LED-ken
Köszike!
Legalább nem kell vele szenvedjek. (nekem is van itthon egy pár darab BMP085-ös)
Köszönöm.
Közben megtaláltam:
Nincs mit, használd egészséggel.
Esetleg azt megnézhetnéd, mennyi a differencia az egyes BMP085-ökből kiolvasott értékek között. Nekem csak egy van belőle - nem tudom, milyen lehet a szórás az egyes érzékelők között. Persze elvileg kalibrálták mindegyiket, de azért kíváncsi lennék az esetleges eltérésekre. Szerk.: A fentiből kimaradt az inicializálás, ezért a teljesség kedvéért leírom újra - korrektebben:
Az utolsó függvény mehet akár végtelen ciklusba a kiíratással együtt. A hozzászólás módosítva: Okt 7, 2012
Az MSP43oh.com fórumán jelent meg a hír, hogy az mspgcc csomagot karbantartó Peter [nick neve: pabigot] elkészítette a BSP430 Board Support Package for MSP430 Microcontrollers nevű (fejlesztői kártyákat támogató) programcsomagot, amely az alábbi kártyákat támogatja:
MSP-EXP430G2 (LaunchPad kártya) MSP-EXP430FR5739 (FRAM "Launchpad" kártya) MSP-EXP430F5438 MSP-EXP430F5529 (USB Experimenter’s Board) MSP-EXP430FG4618 EM430-900 PeoplePower Company SuRF Board TrxEB SmartRF Transceiver Evaluation Board EZ430-RF2500T Ennek elsődleges célja, hogy az MSPWare és a Stellarisware periféria könyvtárakhoz hasonló szintű támogatást és hardver absztrakciót nyújtson a felsorolt kártyákhoz. Az alábbi példa sorra kigyújtja a LED-eket a kártyán. Láthatóan nincs beledrótozva a kódba, hogy melyik portra vannak kötve a LED-ek, s az sem, hogy hány darab van belőlük. main.c
bsp430_config.h
Makefile
Sziasztok.
Hol tudom megnézni az IAR-ban (5.40), hogy mennyi programmemória áll még a rendelkezésemre?
A Preject/Options menüben a Linker-nél a List fülön kérhetsz memóriatérképet (map). Abból lehet ezt-azt kiolvasni.
Vagy Debug módban a memória ablakban megnézed, hogy hol kezdődik a sok FF...
Sziasztok!
Tanulságként írom le nehogy valaki elkövesse ugyanezt ezt a hibát. Szoftveres SPI kommunikációval kínlódtam, sehogy sem akart összejönni. Több mint egy fél napom ment rá, mire rájöttem, hogy mit bakiztam. Adatvonalnak BIT3-at adtam meg és úgye a régi Launchpadon a BIT3 egy ellenállással fel van húzva V+ -ra. Ez meg bezavart az istennek sem akart működni. Logikai analizátorral néztem IC-t cseréltem sehogyan sem működött. Majd most este ugrott be, hogy a BIT3 van egy ellenállás. Másik bitre raktam az adatvonalat azóta jól működik.
Köszi.
A lap alján lévő adatok utalnának a felhasznált memóriára? (még a fele sincs kész a programnak. ) A hozzászólás módosítva: Okt 8, 2012
Idézet: Úgy gondolom, igen. „A lap alján lévő adatok utalnának a felhasznált memóriára?” Idézet: Nem létezik, hogy az a 47 kOhmos felhúzás zavarjon, azt bármelyik totem-pole kimenet lehúzza, simán. Sokkal valószínűbb, hogy a nyomógombbal párhuzamosan kötött 100 nF-os kondenzátor zavart be. Ez viszont sebességfüggő, s 1 kHz-en bizonyára működött volna.„Adatvonalnak BIT3-at adtam meg és úgye a régi Launchpadon a BIT3 egy ellenállással fel van húzva V+ -ra. Ez meg bezavart...” Egyébként egy e2e.ti.com fórumtémából az is kiderült, hogy az új Launchpad kártyáról azért hagyták le a P1.3-ról a felhúzást és a kondenzátort, mert azok az energiatakarékos módnál az áramfelvétel pontos meghatározását is akadályozzák.
Sziasztok.
Szintén IAR kérdés. Idézet: „Tue Oct 09, 2012 10:05:36: The stack pointer for stack 'Stack' (currently Memory:0x3AE) is outside the stack range (Memory:0x3B0 to Memory:0x400)” Hol tudom megnézni, hogy hol a hiba? A "view->stack1-2" ablakot kinyitva, kiírt egy csomó címet, de a fent említett címek nem szerepelnek benne.
Ez veremtár túlcsordulásnak néz ki. Alapértelmezetten az IAR 80 bájtot (decimális) szán a veremtárnak, ami esetedben 0x3B0-tól 0x400-ig terjed (MSP430G2553, gondolom). A fordító kikalkulálta, hogy ennyi függvénnyel és ennyi paraméter átadásával ez a veremtár méret kicsi lesz.
A Project/Options menüben a General Options szekcióban Kattints a Stack/Heap fülre, tegyél pipát az Override defaults felirat elé, s a 80 helyett írja nagyobb számot (pl. 90, vagy 100)! Természetesen amennyivel növeled a veremtárat, annyival kevesebb hely jut a változóknak...
Köszönöm.
Menet közben rájöttem én is, de azt viszont nem tudtam, hogy lehet növelni a verem méretét. Köszönet a leírásért. Egyenlőre megpróbálom az össze-vissza ugrálásomat lecsökkenteni, mert már túlkomplikáltam egy egyszerű menürendszert, és van, hogy egy függvényből háromszor hívom meg ugyanazt a függvényt, úgy, hogy nem zárom be a következő meghívás előtt. |
Bejelentkezés
Hirdetés |