Fórum témák
» Több friss téma |
Írj egy saját késleltetést ( for ciklus ), abból tudsz break utasítással kilépni!
Steve
Ha nem olvastad Icserny forumtársunk cikkét akkor javaslom nagyon jó tananyag.
Cikk 1 Cikk 2
Még most kezdi, a megszakítás megértése gondot okozhat!
Steve
A "bazi nagy" __delay_cycles(2000000) késleltetést oszd fel kis szeletekre, így:
for(i=0;i<200;i++) { __delay_cycles(10000); } Ezen a cikluson belül csinálhatsz "kiugrási feltételt". Gondolom, erre akart rábeszélni Kissi kolléga is, csak egy kicsit konkretizáltam, a jobb érthetőség kedvéért.>
Sziasztok.
Kb. másfél éve kezdtem el egy projektet, és most a LaunchPad-nak köszönhetően 90%-osan kész. Kellett még hozzá, rengeteg tanulás, és kitartás, mivel teljesen egyedül csináltam. Van még pár kép és egy rosszul sikerült videó. Viszont egykis gondom támadt a freki beállításával. Alapban 1MHz-en megy a program, de túl lassú, és valamiért nem tudom beállítani 2Mhz-re. Tudna ebben valaki segíteni?
Az elöbb elfelejtettem csatolni a kb 2MHz beállításom.
Az adatlap szerint 3V-n 2.3MHz-nek kellene lennie, de valamiért nem megy nálam.
Sikerült
. Ismét a kapkodás volt a bűnös és ez négy napomba került. A hiba az volt, hogy csináltam egy panelt, amibe beültetem a Launchpad-ot, és ugye onnan kap tápot, tehát amikor belrakom a helyére a VCC, RST, TEST, jumpereket leveszem, ha kiveszem a LP.-t visszarakom. Ez utobbi elmaradt, vagyis csak a VCC-t nem tettem vissza amikor rádugtam a számítógépre, és nem kapott tápot. Vagyis kapott valamit mert az IAR néha felismerte.Mivel megnöveltem a frekit, így már normálisan megy a "segway". Nem döl el. (Olyan mint egy egyensúlyozó robot, csak nagyban.)
Gratulálok, ez tényleg egy bravúros elektronikus és mechanikus munka!
Remélem, rövidesen végleg elkészül, majd kérünk egy videót, ahogy ezen gurulsz.Boldog Karácsonyt és új évet kívánok minden MSP430 rajongónak!
Köszi, feldobtam a lentebb linkelt oldalra egy új videót. Már mentem vele, de a karácsonyi készülődés miatt nem sok időm van normális videót csinálni.
Véleg akkor fog elkészülni, ha sikerül két MSP430-at összekötni, valamilyen módon. Az ok, amiért össze akarom kötni őket, mert szeretném LCD-n megjeleníteni a sebességet, akkufeszt, H-híd hőmérsékletet, és ha szükséges a gyorsulásmérő középérték állítását megvalósítani. Ezek viszont nem férnek el ebben a uC-ben. Boldog Karácsonyt és kevés munkát kívánok mindenkinek!
Nagyon jó, nekem tetszik, gratulálok.
Boldog Karácsonyt kívánok mindenkinek!
Van itt még valami amit nem igazán értek! A while ciklus működése a következő: while(kifejezés) { utasítás1; utasítás2; } Viszont az én programomban ez nem így történik.
while(P1IN & BIT4) { P1OUT = 0X00; } while(P1IN & BIT3) { P1OUT = 0X01; P1OUT = 0X80; P1OUT = 0X40; } While(P1IN & BIT2) { P1OUT = 0X00; P1OUT = 0X40; } Nos mikor a BIT4 feltétel teljesül, a 0X01; 0X80; 0X40 utasítások kerülnek megvalósításra.Majd mikor a BIT3 feltétel teljesül, a 0X00; 0X40; utasítások következnek. A tanultak szerint pedig nem így kellene lennie, ha nem mikor a BIT4 teljesül, a 0X00; és a BIT3 nál a 0X01; 0X80; 0X40; Van ennek valami magyarázata, vagy ez a fordító egy fajta hibája??
Szia.
A ciklusmag (a+b), addig fut, míg x nem lesz egyenlő y-nal. Ha viszont így írod:
akkor a cilkusmag (a+b), csak akkor fut le, ha x=y. Remélem érthető, mert Én is csak kezdő vagyok a C-ben. Kérés: Használd a kód gombot, mert átláthatóbb a progi részlet.
Helyesbítek:
Csak akkor fut tovább a program, ha x=y-nal.
Nem igazán értelek. Én minden esetben határozottan elválasztottam a feltételt () ,az utasításoktól {};;.Tehát ez nem csúszhatott el.
Több hiba van a leírtakban:
1. Az egyenlőség vizsgálata "==" jellel történik. 2. "a + b" helyett pl. c = a + b;-t írj! 3. A while ciklus a leírtakhoz képest fordítva működik, tehát a ciklusmag mindaddig ciklikusan végrehajtódik, amíg a feltétel igaz.
A kapcsolást meg a Disassembly ablak tartalmát kell(ene) megnézni!
Az egyenlőséget (==) és az értékadást (=) rendszeresen összekeverem, elnézést kérek érte.
Ha jól gondolom ez valami olyasmi lehet mint a digitális áramkörökben használt tárolók, melyek két darab kapuáramkörből tevődnek össze.És elég egy pillanatra beírni a tárolóba, az meg is jegyzi annak állapotát.Jelen esetben a kaput egy while ciklus alkotja.És a két while ciklus pedig a memóriát szimbolizálja.Én ezt valahogy így tudom az ismertekkel össze egyeztetni.
Nem egészen értem. Számomra a while() egy feltételes ugróutasítás. Például:
Ez lefordítva nagyjából így néz ki:
Fúú ez az asembly nekem kínai! Mennyivel egyszerűbb, és világosabb a C, egy két apró kis furcsaságot kivéve.
Vannak esetek mikor a gyakorlat és az elmélet nem egyezik.Tudom, hogy mit csinál a gyakorlatban, és ezt belekalkulálom az elméletbe.Talán ha még sokat tanulok a témában meg fogom egyszer érteni.
Kínai? Pedig magyarul igyekeztem kommentálni...
![]() Nem olyan bonyolult: - Az i és j változóknak a fordító kinézte az R15 és R14 regisztereket és belepakolta a kezdőértékeket. - A jmp utasításról könnyű kitalálni, hogy ugrik a megadott címre. - Az inc az inkrementálást jelent (a fordító bölcsen rájött, hogy a j = j +1 helyett egyszerűbb a j++ utasítást végrehajtani). - A cmp utasítás pedig az összahasonlítás (compare), ami más mikrovezérlőhöz hasonlóan itt a j-i kivonásnak megfelelően állítja be a státuszbiteket. - A jl utasítás pedig feltételes ugróutasítás, csak akkor ugrik vissza, ha az i>j feltételeknek megfeelően állnak a státuszbitek (ennek részleteibe tényleg ne menjünk bele, főleg hogy lustaságból előjeles változótípust adtam meg, aminek jóval bonyolultabb az összehasonlítása)
Sziasztok!
Szeretnék egy pwm jelet 'visszafejteni' ezzel az egységgel. A jel egy RC-szervó vezérlőtől(távirányító), a jel kitöltése 1 és 2ms között változik, ami 20ms-onként frissül Lehetséges ez valahogy? Csak úgy lehetséges, hogy szoftveresen állandóan figyeltetném a bemenet szintjét? Vagy van erre egy elegánsabb módszer is, ami nem foglalja le a teljes cpu-t? Valaki tudna segíteni? Előre is köszönöm! Zoltán
Impulzus-szélesség mérésre a Timer_A2 Input Capture módja használható. A Timer menjen szabadonfutó (continuos) módban, s az 1. vagy 2. Capture/Compare modult be kell konfigurálni Capture módba úgy, hogy a bejövő jel felfutásakor és lefutásakor is adjon egy megszakítást és tárolja el TAR tartalmát.
Bonyodalom akkor van, ha a Timer túlcsordul, azokat is figyelembe kell venni. De ha induláskor és minden lefutás után nullázod a TAR regisztert, akkor nálad nem lesz túlcsordulás MCLK=SMCLK=1 MHz esetén.
Helló!
Újra csak a régi problémámra keresek megoldást. Próbapanelen összeraktam egy msp2211-es felprogramozott ic-t. A mikorovezérlőn egy ledvillogtató program van, ami a launchpad-ben működött is, de a próbapanelen nem. Az ic 2 db. 1,5 voltos elemről kapja az áramot, a (+) -t kötöttem a VCC-re, a (-) -t pedig GND-re. A VCC és GND közé tettem egy 100nF (0.1 uF) kondenzátort, a ledet, az ellenállással pedig a megfelelő portokra és a GND közé tettem. A probléma az, hogy a 3 ledből 2 nem csinál semmit, a harmadik pedig folyamatosan világít. Üdv: Hayes
A RESET láb fel van húzva (pl. 10 kOhm-mal) a tápfeszültségre?
47K-s ellenállást tettem a kapcsolási rajz alapján.
Hát akkor más okot nehéz kitalálni. Esetleg azzal próbálkozhatsz, hogy Debug helyett Release módú programot fordítasz. IAR EW-nél a Project menü Edit Configurations pontjában lehet kiválasztani...
Ha a Launchpad kártyán programletöltés után J3-ról a VDD kivételével az összes átkötést lehúzod és megy a program, akkor a próbapanelon is mennie kell.
Oké, próbálkozom még, hátha rájövök.
Launchpad-en működik a dolog, úgy is hogy nem usb-ről, hanem külső 5V-ról üzemeltetem és lehúzom mind az 5 J3-as jumpert. Azért köszönöm a segítséget. |
Bejelentkezés
Hirdetés |






. Ismét a kapkodás volt a bűnös és ez négy napomba került. A hiba az volt, hogy csináltam egy panelt, amibe beültetem a Launchpad-ot, és ugye onnan kap tápot, tehát amikor belrakom a helyére a VCC, RST, TEST, jumpereket leveszem, ha kiveszem a LP.-t visszarakom. Ez utobbi elmaradt, vagyis csak a VCC-t nem tettem vissza amikor rádugtam a számítógépre, és nem kapott tápot. Vagyis kapott valamit mert az IAR néha felismerte.
Remélem, rövidesen végleg elkészül, majd kérünk egy videót, ahogy ezen gurulsz.





