Страница 1 из 3

msp430. LED.

Добавлено: Ср фев 03, 2010 15:14:46
fiatlux37
Здравствуйте. Помогите пожалуйста.

Имеется МК msp430, IAR, JTAG.

Хочу собрать устройство на LEDах (аля гирлянда, чтоб проще понималось). Конкретно в МК не шарю. Знающие люди сказали, что легче собрать устройство на МК, чем на транзисторах и пр.

Киньте, пожалуйста коды таких состояний LEDов:

--> горит/не горит,
--> мигает (с определённой частотой),
--> медленно загорает и медленно гаснет.

++ если можно, то киньте коды "бегущего огонька" и пр.

Думаю, это никого особо не затруднит.

P.S. В форуме и интернете ответы искал. Конкретного не нашёл, поэтому прошу помощи. Заранее спасибо.

Добавлено: Ср фев 03, 2010 15:25:35
МитяРа
:shock: Ну нимыша себе..
А "потолще" МК для управления гирляндой не нашлось что-ли ?
Можно конечно и 4-х ядерным процом гирляндой управлять, но смысл...
:dont_know:
Проще использовать что-то попроще..
..
А про твой контроллер можешь почитать, например тут: http://msl.gaw.ru/html.cgi/txt/doc/micr ... /index.htm

Добавлено: Ср фев 03, 2010 16:14:40
fiatlux37
Да я уже пробовал читать эти книги. За несколько вечеров всё не осилить. Мне-ж только код нужно.
А причина использования простая: подрабатываю на предприятии, где создают устройства на ТиАйных МК. Там и посоветовали. Просто с кодом помогать там никто не хочет, всем некогда. Вот и прошу помощи у форумчан. Код забью, а к плате припаять, всё развести, собрать сумею.

Добавлено: Ср фев 03, 2010 16:25:14
МитяРа
Тут по 430-м, насколько помню, только Left Radio упоминал,
http://radiokot.ru/forum/profile.php?mo ... ile&u=6736
попробуй ему в личку написать, может натолкнёт на информацию..
Но по любому, программу те придётся самому писать... /мя так думаю/... :tea:

Добавлено: Ср фев 03, 2010 16:43:11
RadioLab
там нет ничего страшного.

всё точно также как и на avr, тот же самый C (если пишешь на С)

только необходимо указавать кроме направления порта (ввод-вывод) и состояния (0-1) ещё и наличае альтернативных функций.

в серии MSP430F1xxx нет встроенных резисторов подтяжки

а стоимость как в розницу, так и оптом выше чем у AVR

достоинство - потребление меньше.

Добавлено: Ср фев 03, 2010 17:26:33
fiatlux37
Да что стоимость, там этих МК навалом. Просто горсть можно взять. + мне помогут и с платой и со всем остальным. Код никто за меня не напишет, а я разве сам умею?
RadioLab, я никогда не программировал МК, но С++ знаю.

Re: msp430. LED.

Добавлено: Ср фев 03, 2010 21:17:09
Left Radio
MSP430 хорошие МК, я на них много чего делал.... И не только мало потребляющего, хотя они именно так позиционируются...
Рекомендую посмотреть примеры от производителя.
Теперь по теме, возьмем к примеру msp430f12х2 серию, Soic корпус, 28 ног. Отдадим на светодиоды порт P1, работа от внутреннего осц. по умолчанию около 800кГц.
Простой пример бегущего огонька, паузы подберете сами:

Код: Выделить всё

#include  <msp430x12x2>

unsigned int cnt = 0;
unsigned int direct = 0;

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  P1DIR |= 0xFF;                          // Set P1 to output direction

  for (cnt = 1; cnt <= 128; cnt = cnt * 2)
  {
    volatile unsigned int i;

    if(direct == 0)
    {
         P1OUT = cnt;                       

         i = 50000;                                   // Delay
         do (i--);
         while (i != 0);
    }
    else
    {       
         P1OUT = 128 - cnt;                       

         i = 50000;                                   // Delay
         do (i--);
         while (i != 0);
    }
  }
   
   direct ^= 0x01;                      // Переключение направления зажигания светодиодов используя exclusive-OR
}



Хочу заметить, что просто так подсоединять светодиоды к портам нельзя, так как у MSP430 слабые порты.

P.S. По использованию таймеров/прерываний и т. д. смотрите по сылке которую я привел, там все есть...

Добавлено: Ср фев 03, 2010 21:57:19
fiatlux37
Спасибо за ответ. Упорно читаю примеры, но особо вникнуть не могу.
Буду благодарен, если кто-нибудь кмнет код, что бы сделать медленное угасание и включение LEDа. Такого в примерах нет.

Добавлено: Ср фев 03, 2010 23:55:39
Left Radio
Буду благодарен, если кто-нибудь кмнет код, что бы сделать медленное угасание и включение LEDа. Такого в примерах нет.
Есть :), PWM называется, смотрите например в slac013g.zip файл - fet120_ta_16.c

Вот плавное угасание/зажигание реализованное с помощью PWM и практически полностью составленное из fet120_ta_16.c :

Код: Выделить всё

unsigned int i;
unsigned int cnt = 0;
unsigned int direct = 0;


void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
 
  P1DIR |= 0x0C;                            // P1.2 and P1.3 output
  P1SEL |= 0x0C;                            // P1.2 and P1.3 TA1/2 otions
  CCR0 = 512-1;                             // PWM Period
  CCTL1 = OUTMOD_7;                          // CCR1 reset/set
  CCR1 = 0;                               // CCR1 PWM duty cycle
  CCTL2 = OUTMOD_7;                         // CCR2 reset/set
  CCR2 = 511;                               // CCR2 PWM duty cycle
  TACTL = TASSEL_2 + MC_1;                 // SMCLK, up mode

  while(1)
 {
   for (cnt = 0; cnt < 512; cnt++)
  {
    if(direct == 0)
    {
         CCR1 = cnt;                       
         CCR2 = 512 - cnt;
         
         i = 500;                                   // Delay
         do (i--);
         while (i != 0);
    }
    else
    {       
         CCR1 = 512 - cnt;                       
         CCR2 = cnt;

         i = 500;                                   // Delay
         do (i--);
         while (i != 0);
    }
  }
   
   direct ^= 0x01;                      // Переключение угасание/зажигание светодиодов используя exclusive-OR

 }

}


Один светодиод подкл. к P1.2, другой - P1.3. Но опять таки я советовал бы поставить два транз., а уже к ним светодиоды, для того чтобы не нагружать порты МК.

Добавлено: Чт фев 04, 2010 07:09:24
fiatlux37
Спасибо огромное !!! Я просто примеры смотрел, где к порту LED присоединяется. Теперь я во всеоружии. Постараюсь сделать что-нибудь в ближайшее время. Будут вопросы, напишу. В конце скину фото/видео девайса. =)

Добавлено: Чт фев 04, 2010 09:57:56
RadioLab
да, меня опередили :)

правильно, в сети примеров много

вот что ты просил

Код: Выделить всё


#include  <msp430x11x1>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
  P1DIR |= 0x01;                        // Set P1.0 to output direction

  for (;;)
  {
    volatile unsigned int i;

    P1OUT ^= 0x01;                      // Toggle P1.0 using exclusive-OR

    i = 50000;                          // Delay
    do (i--);
    while (i != 0);
  }
}

Добавлено: Сб фев 06, 2010 19:36:52
Left Radio
to fiatlux37 Ну как там у Вас дела с MSP-ой? Запустили свою гирлянду?

Добавлено: Вт фев 09, 2010 08:06:17
Эмиль
Автору: у меня есть хорошая PDF-ка по MSP430. Описывается все подробно, как работать с портами, таймерами, прерываниями, индикаторами, вобщем для старта это клад! НО! На английском. Если еще актуально, выложу.

Добавлено: Вт фев 09, 2010 09:57:12
ibiza11
Эмиль писал(а):Автору: у меня есть хорошая PDF-ка по MSP430. Описывается все подробно, как работать с портами, таймерами, прерываниями, индикаторами, вобщем для старта это клад! НО! На английском. Если еще актуально, выложу.
выложите для меня, интересно почитать на досуге.спасибо.

Добавлено: Вт фев 09, 2010 11:36:29
Left Radio

Добавлено: Вт фев 09, 2010 11:55:51
Эмиль
Вот, выкладываю. Пользуйтесь на здоровье.
Скачать файл

Добавлено: Вт фев 09, 2010 13:51:17
ibiza11
всем спасибо

Добавлено: Ср фев 10, 2010 15:56:01
fiatlux37
Ещё немного осталось. Сейчас проектирую корпус девайса, а самое главное - плату. Закупаются светодиоды, резисторы, стабилизатор, ИП, буфер. С работы люди мне объяснили что да как (и правда, у портов ток 1-2 мА). Весь девайс не только на LEDах. Есть "моторчик", подвижные части. Рассчитываю куда и сколько подавать ток. + некоторые диоды у меня постоянно должны гореть, их через МК пускать не буду. Числу к 20 постараюсь доделать.

Добавлено: Ср мар 10, 2010 08:34:17
fiatlux37
Не подскажете в таком вопросе: УСТРОЙСТВО СОБРАЛ, СПАЯЛ, ВСЁ РАБОТАЕТ. сЕЙЧАС ДЕЛАЮ КОРПУС.
Но: для 169-ого программулька плавного угасания работала. Для msp1232 она уже не хочет работать. А на плате у меня именно 1232. Сказали, что пролема в таймере, но я не особо понимаю что надо поменять. Заранее спасибо.

++ насчёт бегущего огня: он "бегает" по всему первому порту просто ???

P.S. Обычное мигание работает.

Добавлено: Ср мар 10, 2010 19:33:53
Left Radio
fiatlux37 писал(а):для 169-ого программулька плавного угасания работала. Для msp1232 она уже не хочет работать.

Возможно Вы просто забыли поменять хеадер для MSP430F1232?
У меня на этом МК ШИМ прекрасно работал и работает, вот из рабочего устройства пример инициализации:

Код: Выделить всё

#include  <msp430x12x2>
.....
..... 
P1DIR |= 0x0C;                            // P1.2 and P1.3 output
P1SEL |= 0x0C;                            // P1.2 and P1.3 TA1/2 otions
..... 
.....
CCR0 = 1024-1;                            // PWM Period
CCTL1 = OUTMOD_7;                         // CCR1 reset/set
CCR1 = 500;                               // CCR1 PWM duty cycle
CCTL2 = OUTMOD_7;                         // CCR2 reset/set
CCR2 = 1;                                 // CCR2 PWM duty cycle
TACTL = TASSEL_2 + MC_1 + ID_3;


++ насчёт бегущего огня: он "бегает" по всему первому порту просто ???

Да.


P.S. Почемуто убирает точку и расширение, хеадер должен быть - msp430x12x2.h