Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

iar msp430

fred117 18 Mar 2007 21:02 2769 17
  • #1
    fred117
    Level 21  
    Witam...
    Poszukuje znawcy programu IAR Embedded Workbench pod mikrokontrolery z serii MSP430...

    Pozdrawiam...
  • #2
    mack23
    Level 17  
    Witam!
    Znawcą może nie jestem ale kilka programów napisałem, głównie w assemblerze ale C też nie gardzę. a dokładniej o co chodzi?
    Pozdrawiam
  • #3
    Dr_DEAD
    Level 28  
    Hej. Od roku pisze w Assemblerze pod IAR'em dla MSP430. W razie czego też mogę pomóc.
  • #4
    fred117
    Level 21  
    Witam...
    Pytanie moje brzmi nastepujaco:
    Czy jest mozliwosc podania "napiecia" na wejscie przetwornika ADC12.
    Chodzi oczywiscie o symulator.
    Za wszstkie porady bede bardzo wdzieczny...

    Pozdrawiam...
  • #5
    Dr_DEAD
    Level 28  
    Symulacja peryferii procesora w IAR Embedded jest raczej uboga. Sprowadza sie do generowania przerwań określając ich interwał w cyklach zegara lub też jednokrotne wywyołanie w konkretnych wartościach PC (program counter), można też wprowadzić czynnik losowy określając prawdopodobieństwo wystąpienia przerwania.
    I ogólnie całe środowisko jest nastawione bardziej na C niż na ASM.
  • #6
    mack23
    Level 17  
    mozesz wpisać wartość do rejestru a później programowo to odczytywać, ale raczej średni sens tego rozwiązania.
    Jest jeszcze jedno rozwiązanie. Można napisać makro które samo będzie wpisywało wartość do rejestru np co pomiar inną. Nie chodzi mi o makro assemblerowe tylko o makro rozszerzające możliwości symulatora (Use macro file)
  • #7
    fred117
    Level 21  
    Witam...
    Nistety chodzi o sama obsluge przetwornika a wpisywanie wartosci do komorek pomiarowych pomija sama prace i ustawienia przetwornika. Wykladowca mi mowil ze w starszych wersjach mozna bylo podobno tworzyc plik z przebiegiem napiecia. Niestety jest to bardzo skryty czlowiek i na wiekszosc pytan odpowiada wszystko jest w help'ie.

    Pozdrawiam i czekam na dalsze podopwiedzi...
  • #8
    mack23
    Level 17  
    chyba mamy tego samego wykładowce:)
    czy chodzi o pana J z kmeif?
  • #10
    mack23
    Level 17  
    chyba nie masz innego wyjścia jak poszukać (lub skopiować z laboratorium) starszej wersji IAR.
    nie wiem czy oni cofają sie w rozwoju ale działało tam dużo więcej rzeczy niż w nowej.Każda wersja ma swojego helpa więc może tam by coś pisało na ten temat
  • #11
    Dr_DEAD
    Level 28  
    mack23 wrote:

    nie wiem czy oni cofają sie w rozwoju ale działało tam dużo więcej rzeczy niż w nowej

    No mają trochę dziwną politykę bo niekóre opcje które człowiek dobrze znał ze starych wersji pozornie nie ma w nowszych wersjach, ale tylko pozornie bo jak sie dobrze poszuka to sie wszystko znajdzie. Przenoszą poprostu funkcje i opcje w inne miejsa, grupują je inaczej, stosują inne rozwiązaia tego samego problemu. Trochę to jest uciażliwe gdy człowiek przyzwyczaił sie do starszej wersji.
    fred117 wrote:
    Witam...
    Wykladowca mi mowil ze w starszych wersjach mozna bylo podobno tworzyc plik z przebiegiem napiecia.

    Można stworzyć plik z przebiegiem napięcia a następnie wciągać go do symulatora po jednej próbce. Tak samo jak można wyrzucać podczas symulacji pewne dane do pliku (logować wartości jakiejś zmiennej).
    Dopisane:
    Robi sie to za pomocą "Terminal I/O"
  • #12
    fred117
    Level 21  
    Witam...
    W jaki sposb zapisac w owym pliku wartosci napiec czas i nr wejscia (Ax) przetwornika ???

    Pozdrawiam...
  • #13
    Dr_DEAD
    Level 28  
    Pobrać z Terminala I/O i zapisać do niego możesz za pomocą funkcji: scanf i printf. Ale żeby to zadziałało to musisz zaznaczyć opcję: "With I/O emulation modules" w opcjach Linkera w Projekcie. w Termianlu I/O możesz wprowadzać dane na bierząco z klawiatury lub też podpiąć plik.
  • #14
    daniofb
    Level 1  
    witam ja mam pytanie czy istnieje możliwość zasymulowania przycisków pod symulatorem . np zeby wprowadzać cyfry
  • #15
    arturt134
    Level 27  
    Do procesorów MSP430 można kupić za 99$ (przynajmniej kiedyś tyle kosztował, dawno już nic nie robiłem na MSP, więc mogło coś się zmienić) FET, czyli Flash Emulation Tool. Na jaką cholerę symulować działanie przetwornika, jak można podpiąć się z emulatorem i odczytać rzeczywiste wartości?

    Poza tym sprawa druga. Co da podawanie w symulatorze napięcia wejściowego? Przecież przeliczenie na kod binarny i tak nastąpi według teorii, więc równie dobrze można byłoby podawać od razu wartości binarne, które powstaną po przetworzeniu sygnału analogowego przez ADC. Resztę programu można zasymulować wywołując przerwanie od przetwornika.
    Coś mi się wydaje że ten wasz wykładowca jest bardziej teoretykiem niż praktykiem....
  • #16
    Dr_DEAD
    Level 28  
    Uproszczonego FET'a można kupić w kicie za 20zł.
    Symulować można wszystko wpisując wartości bezpośrednio do rejestrów procesora.
  • #17
    Clubber
    Level 15  
    Witam
    Czy można napisać program na msp który będzie komunikował się z PC. Chodzi mianowicie żeby wykorzystać USART pracującego w trybie UART. Możliwe jest wykorzystanie Hyper Terminal z Windows XP.
    Ktoś ma jakieś pomysły ????
  • #18
    Clubber
    Level 15  
    #include<msp430x14x.h>
    #include "uart.h"
    #include "lcd.h"
    #include "portyUart.h" 
    #include "portyLcd.h" 
    
    int sprawdz_klawisz(int klawisz) {
        int wartosc;
        P4DIR &=0x20;
        P4DIR &=0x10;
        //if(P4DIR &=0x20;) wartosc = 0x20;
        //else if(klawisz == 2) wartosc = 0x20;
    //    else if(klawisz == 3) wartosc = 0x40;
    //    else if(klawisz == 4) wartosc = 0x80; 
        P4DIR &= ~wartosc; 
        
        if((P4IN & wartosc) != 0) return 0;
        else return 1;
    }
    
    char Bufor[30];                         // bufor odczytywanych danych
    int low=0;                              // znacznik począteku danych w buforze  
    int high=0;                           // zmacznik końca danych w buforze
    char litera;
     int s=1;
    void main(void)
    {
     WDTCTL=WDTPW + WDTHOLD;                // wyłączenie WDT
      
     InitPortsLcd();                        // inicjalizacja portów LCD
     InitLCD();                             // inicjalizacja LCD
     clearDisplay();                        // czyszczenie wyświetlacza
     initPortyUart();                       // inicjalizacja portow UART  
     initUart(115200);                        // inicjalizacja UARTa prędkość transmisji 2400 Budoów  
    
     _EINT();  // włączenie przerwań 
     
    // char* litera;
     
    while(1)                                // nieskończona pętla
     {
      if (P4IN&0x10)
    // s=1;
    // if (s==1)
     //{ UartStringTransmit("ALA ");
     //s=0;} 
      //   else if (P4IN&0x20) { litera='B';} 
         //    else if (sprawdz_klawisz(3)) { litera='C';} 
             //     else if (sprawdz_klawisz(4)) { litera='D';}
               //       else continue;
       
            // wysłanie napisu Tekst do ternimala 
    
       while(high != low)                  // gdy odebrano dane 
        {
         putc(Bufor[low]);                 // wypisanie danych na wyświetlaczu    
         low= (++low)%30;                  // inkrementowanie znaczika początka danych      
        }
    
     }
      
    }
    
    #pragma vector=UART0RX_VECTOR           // procedura obsługi przerwania UART
    __interrupt void usart0_rx (void)
    { 
    Bufor[high]=RXBUF0;                     // wpisanie odebranych danych do bufora
    high=(++high)%30;                       // inkrementowanie znacznika końca danych
    }

    Na razie prace skończyłem na czymś takim... mps wyświetla znaki na wyświetlaczu, ale nie wiem jak zadeklarować przyciski żeby wyświetlały w terminalu, jakieś podpowiedzi ??
    Dalej trzeba to poprawić...