Fórum témák

» Több friss téma
Fórum » MSP430 mikrovezérlők
 
Témaindító: gomzito, idő: Ápr 21, 2006
Témakörök:
Lapozás: OK   100 / 139
(#) kisedison válasza szitko hozzászólására (») Márc 23, 2013 /
 
Köszönöm. Az a gond hogy nekem ez még így magas sajnos... Mintát tudnál mellékelni? Nagyon megköszönném.
(#) szitko válasza kisedison hozzászólására (») Márc 23, 2013 /
 
Egy példa van Icserny cikkében, ahol a Timer túlcsordulással villogtatja a ledeket. Ezt egy kicsit átdolgozva megoldható a dolog. Bár egy kicsit elszámoltam magam, mert 1 másodpercre nem tudod beállítani a Timert, 1MHz esetén.
  1. char count_05s=0;
  2. unsigned int count_1s=0;
  3. void main (void) {
  4.   WDTCTL = WDTPW|WDTHOLD;           // Letiltjuk a watchdog időzítőt
  5.   DCOCTL = CALDCO_1MHZ;             // DCO beállítása a gyárilag kalibrált
  6.   BCSCTL1 = CALBC1_1MHZ;            // 1 MHz-es frekvenciára  
  7. //  P1OUT = BIT0;                     // Alaphelyzet: LED1 be , LED2 ki
  8. //  P1DIR = BIT0|BIT6;                // P1.0 (LED1) és P1.6 (LED2) kimenet
  9.   TACCR0 = 62499;                   // periódus = 62500 ciklus  
  10.   TACTL = MC_1|ID_3|TASSEL_2|TACLR|TAIE; // Beállítjuk és elindíjuk Timer_A-t
  11. // számlálás adott értékig, 8-cal osztás, SMCLK a forrás, TAR törlés + int
  12.   while(1) {
  13.           if(count_1s>=60){
  14.                 // Akkor jön ide, ha eltelt egy perc
  15.           }
  16.     .... stb.
  17.   }
  18. }
  19. #pragma vector=TIMERA0_VECTOR
  20. __interrupt void Timer_A(void) {
  21.          count_05s++;
  22.          if(count_05s==2){
  23.              count_1s++;
  24.              count_05s=0;
  25.           }
  26. }

Persze van más megoldás is, de ez tűnt hirtelen a legegyszerűbbnek. Megcsinálhatod azt is, hogy a count_1s-t beállítod 20 percre, és onnan számoltatod visszafele. Ekkor a megszakításba "count_1s--;" kerül.
(#) kisedison válasza szitko hozzászólására (») Márc 23, 2013 /
 
Köszönöm szépen. Megpróbálok alkotni valamit, aztán írok hogy mire jutottam.
(#) mykymokus hozzászólása Márc 26, 2013 /
 
Sziasztok azzal a kéréssel fordulok hozzátok mert elakadtam pár dologban a propeller led átalakítás készítésénél.5X7-es mátrixot építettem s a propeller kódot akartam átalakítani de elakadtam több dologban.
  1. #include "io430.h"
  2. #include "intrinsics.h"
  3.  
  4.  
  5. #define FONTWIDTH 5             // Number of bytes wide // Karakter szélesség
  6. #define FONTOFFSET 32           // Offset of font array to ascii //A betűtípussor eltolása Ascii
  7. #define SCANDELAY 100           // Scan speed, smaller is faster //Letapogatássebesség, kisebb gyorsabb
  8.  
  9. // ***********************
  10. // *  Message to display *
  11. // ***********************  
  12.  
  13. const unsigned char message[] = {" L "};    //elöjeletlen karakter message értéke " L "  kiirt üzenet
  14.  
  15. const unsigned char System5x7[] = {                 // The font
  16.         0x00, 0x00, 0x00, 0x00, 0x00,// (space)
  17.         0x00, 0x00, 0x5F, 0x00, 0x00,// !
  18.         0x00, 0x07, 0x00, 0x07, 0x00,// "
  19.         0x14, 0x7F, 0x14, 0x7F, 0x14,// #
  20.         0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
  21.         0x23, 0x13, 0x08, 0x64, 0x62,// %
  22.         0x36, 0x49, 0x55, 0x22, 0x50,// &
  23.         0x00, 0x05, 0x03, 0x00, 0x00,// '
  24.         0x00, 0x1C, 0x22, 0x41, 0x00,// (
  25.         0x00, 0x41, 0x22, 0x1C, 0x00,// )
  26.         0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
  27.         0x08, 0x08, 0x3E, 0x08, 0x08,// +
  28.         0x00, 0x50, 0x30, 0x00, 0x00,// ,
  29.         0x08, 0x08, 0x08, 0x08, 0x08,// -
  30.         0x00, 0x60, 0x60, 0x00, 0x00,// .
  31.         0x20, 0x10, 0x08, 0x04, 0x02,// /
  32.         0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
  33.         0x00, 0x42, 0x7F, 0x40, 0x00,// 1
  34.         0x42, 0x61, 0x51, 0x49, 0x46,// 2
  35.         0x21, 0x41, 0x45, 0x4B, 0x31,// 3
  36.         0x18, 0x14, 0x12, 0x7F, 0x10,// 4
  37.         0x27, 0x45, 0x45, 0x45, 0x39,// 5
  38.         0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
  39.         0x01, 0x71, 0x09, 0x05, 0x03,// 7
  40.         0x36, 0x49, 0x49, 0x49, 0x36,// 8
  41.         0x06, 0x49, 0x49, 0x29, 0x1E,// 9
  42.         0x00, 0x36, 0x36, 0x00, 0x00,// :
  43.         0x00, 0x56, 0x36, 0x00, 0x00,// ;
  44.         0x00, 0x08, 0x14, 0x22, 0x41,// <
  45.         0x14, 0x14, 0x14, 0x14, 0x14,// =
  46.         0x41, 0x22, 0x14, 0x08, 0x00,// >
  47.         0x02, 0x01, 0x51, 0x09, 0x06,// ?
  48.         0x32, 0x49, 0x79, 0x41, 0x3E,// @
  49.         0x7E, 0x11, 0x11, 0x11, 0x7E,// A
  50.         0x7F, 0x49, 0x49, 0x49, 0x36,// B
  51.         0x3E, 0x41, 0x41, 0x41, 0x22,// C
  52.         0x7F, 0x41, 0x41, 0x22, 0x1C,// D
  53.         0x7F, 0x49, 0x49, 0x49, 0x41,// E
  54.         0x7F, 0x09, 0x09, 0x01, 0x01,// F
  55.         0x3E, 0x41, 0x41, 0x51, 0x32,// G
  56.         0x7F, 0x08, 0x08, 0x08, 0x7F,// H
  57.         0x00, 0x41, 0x7F, 0x41, 0x00,// I
  58.         0x20, 0x40, 0x41, 0x3F, 0x01,// J
  59.         0x7F, 0x08, 0x14, 0x22, 0x41,// K
  60.         0x7F, 0x40, 0x40, 0x40, 0x40,// L
  61.         0x7F, 0x02, 0x04, 0x02, 0x7F,// M
  62.         0x7F, 0x04, 0x08, 0x10, 0x7F,// N
  63.         0x3E, 0x41, 0x41, 0x41, 0x3E,// O
  64.         0x7F, 0x09, 0x09, 0x09, 0x06,// P
  65.         0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
  66.         0x7F, 0x09, 0x19, 0x29, 0x46,// R
  67.         0x46, 0x49, 0x49, 0x49, 0x31,// S
  68.         0x01, 0x01, 0x7F, 0x01, 0x01,// T
  69.         0x3F, 0x40, 0x40, 0x40, 0x3F,// U
  70.         0x1F, 0x20, 0x40, 0x20, 0x1F,// V
  71.         0x7F, 0x20, 0x18, 0x20, 0x7F,// W
  72.         0x63, 0x14, 0x08, 0x14, 0x63,// X
  73.         0x03, 0x04, 0x78, 0x04, 0x03,// Y
  74.         0x61, 0x51, 0x49, 0x45, 0x43,// Z
  75.         0x00, 0x00, 0x7F, 0x41, 0x41,// [
  76.         0x02, 0x04, 0x08, 0x10, 0x20,// "\"
  77.         0x41, 0x41, 0x7F, 0x00, 0x00,// ]
  78.         0x04, 0x02, 0x01, 0x02, 0x04,// ^
  79.         0x40, 0x40, 0x40, 0x40, 0x40,// _
  80.         0x00, 0x01, 0x02, 0x04, 0x00,// `
  81.         0x20, 0x54, 0x54, 0x54, 0x78,// a
  82.         0x7F, 0x48, 0x44, 0x44, 0x38,// b
  83.         0x38, 0x44, 0x44, 0x44, 0x20,// c
  84.         0x38, 0x44, 0x44, 0x48, 0x7F,// d
  85.         0x38, 0x54, 0x54, 0x54, 0x18,// e
  86.         0x08, 0x7E, 0x09, 0x01, 0x02,// f
  87.         0x08, 0x14, 0x54, 0x54, 0x3C,// g
  88.         0x7F, 0x08, 0x04, 0x04, 0x78,// h
  89.         0x00, 0x44, 0x7D, 0x40, 0x00,// i
  90.         0x20, 0x40, 0x44, 0x3D, 0x00,// j
  91.         0x00, 0x7F, 0x10, 0x28, 0x44,// k
  92.         0x00, 0x41, 0x7F, 0x40, 0x00,// l
  93.         0x7C, 0x04, 0x18, 0x04, 0x78,// m
  94.         0x7C, 0x08, 0x04, 0x04, 0x78,// n
  95.         0x38, 0x44, 0x44, 0x44, 0x38,// o
  96.         0x7C, 0x14, 0x14, 0x14, 0x08,// p
  97.         0x08, 0x14, 0x14, 0x18, 0x7C,// q
  98.         0x7C, 0x08, 0x04, 0x04, 0x08,// r
  99.         0x48, 0x54, 0x54, 0x54, 0x20,// s
  100.         0x04, 0x3F, 0x44, 0x40, 0x20,// t
  101.         0x3C, 0x40, 0x40, 0x20, 0x7C,// u
  102.         0x1C, 0x20, 0x40, 0x20, 0x1C,// v
  103.         0x3C, 0x40, 0x30, 0x40, 0x3C,// w
  104.         0x44, 0x28, 0x10, 0x28, 0x44,// x
  105.         0x0C, 0x50, 0x50, 0x50, 0x3C,// y
  106.         0x44, 0x64, 0x54, 0x4C, 0x44,// z
  107.         0x00, 0x08, 0x36, 0x41, 0x00,// {
  108.         0x00, 0x00, 0x7F, 0x00, 0x00,// |
  109.         0x00, 0x41, 0x36, 0x08, 0x00,// }
  110.         0x10, 0x22, 0x28, 0x22, 0x10, //
  111. };
  112.  
  113. void delayMS(unsigned int ms )          // ezt miért kell így írni miért nem lehet csak
  114. {                                       //__delay_cycles(300000) esetleg arra gondolok hogy itt van 1szer
  115.         //elmentve a memoriában s csak hivatkozunk rá nem foglal mindig a memoriábol amikor kell használni
  116.     unsigned int i;                     //unsigned int i értéke 0..65535 lehet
  117.     for (i=0; i<=ms; i++)                // ms értéke mennyi lesz honnan veszi?
  118.        __delay_cycles(5);
  119. }
  120.  
  121. void displayChar(unsigned char InChar){ // Function to display a character //karaktert mutatás
  122.         int i;
  123.         for(i=0; i<FONTWIDTH; i++){    //ismétli következő {} közöttit 5ször karakterszélesség
  124.                 P1OUT = System5x7[(InChar-FONTOFFSET)*5+i]; // Set the LEDs to the character part //Beállította a LED-eket a karakterrészre
  125.                                //system5x7 [(tömbből InChar-32)*5+1] elemet veszi
  126.                 delayMS(SCANDELAY*300); // Megjelenítési idő
  127.                 P1OUT = 0x00;           // Turn off the LEDs //Led kikapcsolás P1OUT kikapcsolása
  128.                 delayMS(SCANDELAY*300); // Delay so you can see the character //Késs, úgyhogy tudod látni, hogy a karakter elválik
  129.         }                              
  130. }
  131.  
  132. //*******************
  133. //*  main function  *
  134. //*******************
  135.  
  136. void main (void){
  137.         WDTCTL = WDTPW + WDTHOLD;       // Stop watchdog
  138.         P1DIR |= 0xff;                  //  P1 port kimenet
  139.         P1OUT  = 0x00;                  //  P1 port alacsony
  140.         P2DIR |= 0xff;          // ezt már én írtam hogy lássam a lépéseket
  141.         P2OUT  = 0x01;          //P2.0.1.2.3.4 az oszlopok kimenete csak elsőt bekapcsolom lássam a lépéseket
  142.  
  143.         while(1){          
  144.        
  145.         int arraySize = sizeof(message);        // Get the message length //üzenethossz arraysize=message karakterszámával
  146.                                                 // jelen esetben 3  " L " szóköz L szóköz
  147.         int i;
  148.         for(i=0;i<arraySize;i++){               // 3szor ismétli következő sort arraysize értéke álltal
  149.                 displayChar(message[i]);        // ezt nem értem meghívja a DisplayChar-t message tömböl i-edik elemet veszi ?
  150.      }
  151.    }
  152.   }


Ma másik próbálkozásommal odáig eljutottam hogy 1Karaktert megtudok jeleníteni 5x7 mátrixon (P1OUT sor P2OUT oszlop) P2.0...4-ig való léptetéssel de ha több karaktert írok akkor off. Szeretném megérteni a működését ezért kiegészítésként írtam megjegyzéseket.
Nincs több ötletem lehet csak valamit félreértek
Várom válaszaitok magyarázataitok esetleg valami1szerű mintaprogramot Linket amivel megérteném a megjelenítést szövegfuttatást. Köszönöm

main.c
    
(#) icserny válasza mykymokus hozzászólására (») Márc 26, 2013 / 1
 
A becsatolt program szerintem arra való, hogy egy mozgatott/forgatott LED sor segítségével kirajzolja a pontsorokat, s a képet a hozzá képest tehetetlen szemed és agyad rakja össze. Ha nem egy LED sorod, hanem egy LED mátrixod van, akkor ez a megközelítés nem használható.
(#) Mybuster válasza icserny hozzászólására (») Márc 26, 2013 / 1
 
Üdv. Icserny igazából mi ezt mykymokus-al találtuk ki úgymond hogy át lehet-e írni egy mátrix progivá. Én ezt a progit meg is csináltam anno propeller-es kijelzőhöz tőlem származik a kód én kerestem anno még a neten ,de akkor úgy látom nem igazán lehet ezt átírni.

Üdv. Mybuster
(#) icserny válasza Mybuster hozzászólására (») Márc 26, 2013 / 1
 
Az átírásnak nincs akadálya, csak még nem értem pontosan, hogy mit akartok csinálni. Mi történjen az első karakter kirajzolása után? S milyen időzítéssel?

A dolgot bonyolítja, ha a multiplexelt kijelzés miatt állandóan frissíteni kell a képet. Én úgy csinálnám, hogy bevezetnék egy 8 bájtos tömböt a pillanatnyi kép tárolására, s ezt bájtonként gyorsan egymás után kinyomnám a LED megfelelő oszlopaiba (for ciklus, 1-től 8-ig, vagy "informatikusabban" 0-tól 7-ig). Egy külső ciklusban ezt megismételném valahányszor (100-szor?). Ezt a kettős ciklust tenném a mostani késleltetések helyére.

A karakter kiírásnál pedig nem a portra kell kitenni a karaktert, hanem a fent említett 8 bájtos tömböt kellene eggyel balra pakolni. és az utolsó helyre a karakter táblából kiolvasott bájtot bepakolni. Utána megint késleltetés... akarom mondani kijelzés, és így tovább.

Az átírás kulcsa tehát az, hogy a mostani késleltetés helyére ciklikus kijelzés adott számszor ismételve, a portra történő mostani kiírás helyett pedig balra léptetés és egy új pontoszlop beírása kell.

A "balra léptetés":
  1. for(i=0; i<7; i++) buf[i] = buf[i+1];

Ahol buf az a 8 bájtos tömb, amiből a kép kijelezhető. A fenti léptetés után buf[7]-be kell írni az új pontoszlopot.
A hozzászólás módosítva: Márc 26, 2013
(#) mykymokus válasza icserny hozzászólására (») Márc 26, 2013 /
 
Köszi holnap megpróbálom szia jó éjt
(#) Mybuster válasza icserny hozzászólására (») Márc 27, 2013 /
 
Köszönjük!
(#) ALI hozzászólása Márc 28, 2013 /
 
Üdv mindenkinek

Kezdő vagyok ebben a témában segítséget szeretnék kérni.
Van egy ilyenem http://uk.mouser.com/new/texasinstruments/ti-ek-lm4f120xl/
szeretném megtanulni programozni de nem találok semmilyen rendes le írást.
Illetve milyen program kell hozzá hogy tudjam programozni Win7-ről?
Előre is köszönöm a segítséget.
(#) szitko válasza ALI hozzászólására (») Márc 28, 2013 /
 
(#) ALI válasza szitko hozzászólására (») Márc 28, 2013 /
 
Köszönöm
(#) szitko hozzászólása Márc 29, 2013 /
 
Kirakta a TI az új MSP430g2744,-g2755,-g2855,-g2955 adatlapját. Lehetőség van mintarendelésre, de előtte érdemes belenézni az Errata-ba. Ezenkívül érdemes a "régi g2xxx" adatlapokat is újból letölteni, mert azokat is frissítették, és egy csomó hibát javítottak benne.
Pl. g2x52 2011 augusztusi adatlap= 44.oldal P1.7 = SDI-SPI mode, SDA-SPI mode.
a javított adatlapban (2013 feb.), ez már jól szerepel: P1.7 = SDI-SPI mode, SDA-I2C mode.
(#) icserny válasza szitko hozzászólására (») Márc 29, 2013 /
 
Idézet:
„de előtte érdemes belenézni az Errata-ba.”
Érdemes azt is végiggondolni, hogy a 16 kbájtnál nagyobb memóriát ingyen csak az mspgcc-vel lehet kihasználni!
(#) szitko válasza icserny hozzászólására (») Márc 29, 2013 /
 
Nekem, egyedül csak a max. 16MHz nem tetszik. Igazán emelhettek volna rajta egy kicsit, mondjuk 40-ig.
(#) putr4 válasza szitko hozzászólására (») Márc 29, 2013 /
 
"Crystal Oscillator LFXT1, High-Frequency Mode
LFXT1 oscillator crystal frequency, fLFXT1,HF0 XTS = 1, LFXT1Sx = 0 1.8 V to 3.6 V 0.4 1 MHz HF mode 0
LFXT1 oscillator crystal frequency, fLFXT1,HF1 XTS = 1, LFXT1Sx = 1 1.8 V to 3.6 V 1 4 MHz"
(#) icserny válasza szitko hozzászólására (») Márc 29, 2013 /
 
40 MHz-ig aligha, mert az MSP430 termékcsaládban 25 MHz a plafon. S már ott is megugrik a fogyasztás...
(#) szitko válasza icserny hozzászólására (») Márc 29, 2013 /
 
Tudom. Épp most "játszok" egy MSP430f5524-el, amivel az agyhullámokat (EEG) küldöm USB-n a PC-nek, de a méréseknél, számolásoknál kevésnek bizonyul a 25MHz, a fogyasztás meg az "egekbe" szökött. De valamit valamiért. Igaz a projekt még nagyon kezdeti stádiumban van, mert az USB nem akar "normálisan" menni, de az USB-vel is csak most ismerkedem.
(#) hotau hozzászólása Ápr 2, 2013 /
 
Szép napot!
Lenne egy olyan kérdésem, hogy megirtam a programot az MSP430G2
LaunchPad Development meg a mikro vezérlőt csatlakoztattam a géphez és ezt írta ki:
Fatal Error[LMS001]: No license found. Use the IAR License Manager to resolve the problem.[LicenseCheck:2.12.4.471,
RMS:8.5.0.0021, Feature:430.EW.COMPILER, Version:1.00]

Error while running C/C++ Compiler

Total number of errors: 1
Total number of warnings: 0

Ez mit jelenthet?
A segítséget előre is köszönöm.
(#) icserny válasza hotau hozzászólására (») Ápr 2, 2013 /
 
A IAR EW fejlesztői környezet ingyenes változatát is regisztrálni kell a gyártó honlapján.
(#) hotau válasza icserny hozzászólására (») Ápr 3, 2013 /
 
Szép napot!
Valaki tud segíteni, hogy hogy kell ezt a programot regrisztrálni mert 3 szor telepítettem föl és mind a 3 szor ugyan azt az errort írta ki.

ezeket a verzíókat telepítettem föl :
http://processors.wiki.ti.com/index.php/IAR_Embedded_Workbench_for_...MSP430
slac050 (.zip)
innen meg a 30 naposat tettem föl: http://www.iar.com/Service-Center/Downloads/

A segítséget előre is köszönöm.
(#) mykymokus válasza hotau hozzászólására (») Ápr 3, 2013 /
 
Nem a telepítéssel van a gond. Amikor elindítod beugrik majd 1 kis ablak ha jól emlékszem ott rákattintasz majd felugrik a böngésződ s ott kell regizned Név-email-ienek.
aztán érkezik 1 kód az e-mailod-ra rákatolsz s kész is. Vagy valami hasonló.
(#) icserny válasza hotau hozzászólására (») Ápr 3, 2013 / 1
 
IAR EW elindítása után válaszd ki a Help/License Manager menüpontot (feljön a License Manager ablak, s ez lehet, hogy sokáig spekulál majd).

License Managerben válaszd a License/Get evaluation license menüpontot, s a felbukkanó ablakban kattints a Register gombra. Ekkor feljön a böngészőben a regisztrációs ablak.
(#) hotau hozzászólása Ápr 4, 2013 /
 
Szép estét mindekinek!
Köszönöm az eddigi segítségeket a program frankón működik, de most az égetésnél léptek fől problémák beleégetem a megírt programomat az ic be és azt irja a leírás, hogy a piros lednek kell villogni, de nekem, van a piros ledem mellette egy zöld led és mind 2 fonyamatosan világít. A beállításokat lelellenőriztem minden jó.
Mi lehet a baj?
A válaszokat előre is köszönöm.
(#) szitko válasza hotau hozzászólására (») Ápr 4, 2013 /
 
Mielőtt "beégetted" a programot, mit csináltak a ledek?
IAR-ban jól van kiválasztva a MCU?
A Debugger-ban, a FET Debugger van beállítva?
Jól vannak beállítva a portok a szoftverben?
...
Ha csatolnád a kódot, könnyebb lenne a hibakeresés, mert így csak a sötétben lehet tapogatózni.
(#) hotau hozzászólása Ápr 5, 2013 /
 
Szép napot!
"Mielőtt "beégetted" a programot, mit csináltak a ledek?" nem világít eggyik se
"A Debugger-ban, a FET Debugger van beállítva?" igen az van beálítva.
Miután megcsinálom az égetést mind kettő led világít, és ezt írja ki Messages-be : Configuration is up-to-date.

kód:


#include "io430.h"
void delay(unsigned int delayTime);
void main(void) {
WDTCTL = WDTPW + WDTHOLD; //Hold the WDT (WatchDog Timer)
P1DIR = 0xff; //Set Port 1 (P1) to output.
unsigned int i=250; //This is the delay value between each column (found by trial and error)
while(1){
P1OUT = 0x00;
delay(i);
P1OUT = 0xff; // 1. oszlop
delay(i); // A késés
P1OUT = 0x81; // 2. oszlop
delay(i);
P1OUT = 0x81; // 3. oszlop
delay(i);
P1OUT = 0x81; // 4. oszlop
delay(i);
P1OUT = 0x81; // 5. oszlop
delay(i);
P1OUT = 0xff; // 6. oszlop
delay(i);
P1OUT = 0x00; // 7.oszlop
delay(i);
P1OUT = 0x00; // 8.oszlop
delay(i);
P1OUT = 0xff; // 9.oszlop
delay(i);
P1OUT = 0x80; // 10.oszlop
delay(i);
P1OUT = 0x80; // 11.oszlop
delay(i);
P1OUT = 0x80; // 12.oszlop
delay(i);
P1OUT = 0x00; // 13.oszlop
delay(i);
P1OUT = 0x00; // 12.oszlop
delay(i);
P1OUT = 0xff; // 12.oszlop
delay(i);
P1OUT = 0x00; // 12.oszlop
delay(i);
}
}
void delay(unsigned int delayTime){
int x;
for (x=0;x<delayTime;x++){
x=x*1;
}
}
(#) szitko válasza hotau hozzászólására (») Ápr 5, 2013 /
 
Ezzel a programmal, kb. folyamatosan világítanak a ledek.
A "while" ciklust, valahogy így képzeld el:
1: "P1OUT = 0x00;" = minden kimenet alacsony, tehát egyik led sem világít
2: "delay(i);" = várunk 250 uS azaz mikrosecundumot!
3: "P1OUT = 0xff;" = minden kimenet magas, tehát mind a két led világít! Az egyik led a P1.0, a másik a P1.6 kimeneten van.
A többi P1OUT = 0x81...+...stb csak felesleges plusz a programban!
Az első probléma, a késleltetésben van!
  1. void delay(unsigned int delayTime){
  2. int x;
  3. for (x=0;x<delayTime;x++){ // Elszámol 250-ig, és vége a for ciklusnak
  4. x=x*1;
  5. }

Az "x=x*1;"-nek nem látom értelmét, mert a for ciklus lefutását maximum a szorzás művelet elvégzése késlelteti, de az sem sokkal. Ha tényleg késleltetést szeretnél csinálni, vagy egy Timer-t kellene elindítani, vagy valahogy így kéne megcsinálni a késleltetés függvényt:
  1. void delay(unsigned int delayTime){
  2. int x;
  3. for (x=0;x<delayTime;x++){ // Elszámol 250-ig, és vége a for ciklusnak
  4. __delay_cycles(1000);          // így ~250mS-os lesz a késleltetés
  5. }

Tehát, ha csak az egyik ledet akarod villogtatni, akkor valahogy így kéne kinézzen a programod "while" ciklus része:
  1. while(1){
  2. P1OUT = 0x00; // össz kimenet alacsony
  3. delay(i);   // késleltetés
  4. P1OUT = 0x01; // LP piros led
  5. delay(i); // késleltetés
  6. } // while

Természetesen itt már a fentebb írt kéleltetés függvényt kellene alkalmazni, és így a led ~250 milliSecundum-ig világít.
De szerintem nézz bele Icserny fórumtársunk cikkeibe!
(#) hotau hozzászólása Ápr 5, 2013 /
 
Az ajánlott cikket már elolvastam és nem villogtatni szertném a ledet hanem ezt szeretném megcsinálni OLI felirattal.
(#) szitko válasza hotau hozzászólására (») Ápr 5, 2013 /
 
Most, hogy kiderült miről is van szó, a kód amit csatoltál, szerintem jó. Bár azt még mindig nem értem, hogy milyen piros lednek kell villogni?
Ha nem látsz semmit amikor mozgatod a kütyüt, akkor állíts az időzítésen, vagy mozgasd gyorsabban, vagy lassabban.
(#) szitko hozzászólása Ápr 5, 2013 /
 
Rendeltem pár alkatrészt a TI-tő, és gondoltam kipróbálom a G2955-öst, ezért abból is kértem kettőt.
Érdekel az "UART mode with automatic baud rate detection" üzemmód, ezért összeállítottam egy kis programot, hogy kipróbáljam, de támadt egy "kis" problémám.
Se az IAR se a CCS nem támogatja "még" ezt a típust.
Mivel tudnám felprogramozni?
Következő: »»   100 / 139
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem