msp430. LED.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

msp430. LED.

Сообщение fiatlux37 »

Здравствуйте. Помогите пожалуйста.

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

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

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

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

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

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

P.S. В форуме и интернете ответы искал. Конкретного не нашёл, поэтому прошу помощи. Заранее спасибо.
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

:shock: Ну нимыша себе..
А "потолще" МК для управления гирляндой не нашлось что-ли ?
Можно конечно и 4-х ядерным процом гирляндой управлять, но смысл...
:dont_know:
Проще использовать что-то попроще..
..
А про твой контроллер можешь почитать, например тут: http://msl.gaw.ru/html.cgi/txt/doc/micr ... /index.htm
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Сообщение fiatlux37 »

Да я уже пробовал читать эти книги. За несколько вечеров всё не осилить. Мне-ж только код нужно.
А причина использования простая: подрабатываю на предприятии, где создают устройства на ТиАйных МК. Там и посоветовали. Просто с кодом помогать там никто не хочет, всем некогда. Вот и прошу помощи у форумчан. Код забью, а к плате припаять, всё развести, собрать сумею.
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

Тут по 430-м, насколько помню, только Left Radio упоминал,
http://radiokot.ru/forum/profile.php?mo ... ile&u=6736
попробуй ему в личку написать, может натолкнёт на информацию..
Но по любому, программу те придётся самому писать... /мя так думаю/... :tea:
Аватара пользователя
RadioLab
Открыл глаза
Сообщения: 46
Зарегистрирован: Пт дек 25, 2009 12:29:51
Откуда: Н.Новгород
Контактная информация:

Сообщение RadioLab »

там нет ничего страшного.

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

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

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

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

достоинство - потребление меньше.
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Сообщение fiatlux37 »

Да что стоимость, там этих МК навалом. Просто горсть можно взять. + мне помогут и с платой и со всем остальным. Код никто за меня не напишет, а я разве сам умею?
RadioLab, я никогда не программировал МК, но С++ знаю.
Аватара пользователя
Left Radio
Прорезались зубы
Сообщения: 235
Зарегистрирован: Пт авг 22, 2008 03:58:30
Откуда: Union Soviet Socialist Republics
Контактная информация:

Re: msp430. LED.

Сообщение 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. По использованию таймеров/прерываний и т. д. смотрите по сылке которую я привел, там все есть...
Крылья... Крылья.... Хвост! Изображение
Нестрашно не знать, страшно не стремиться знать.
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Сообщение fiatlux37 »

Спасибо за ответ. Упорно читаю примеры, но особо вникнуть не могу.
Буду благодарен, если кто-нибудь кмнет код, что бы сделать медленное угасание и включение LEDа. Такого в примерах нет.
Аватара пользователя
Left Radio
Прорезались зубы
Сообщения: 235
Зарегистрирован: Пт авг 22, 2008 03:58:30
Откуда: Union Soviet Socialist Republics
Контактная информация:

Сообщение 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. Но опять таки я советовал бы поставить два транз., а уже к ним светодиоды, для того чтобы не нагружать порты МК.
Крылья... Крылья.... Хвост! Изображение
Нестрашно не знать, страшно не стремиться знать.
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Сообщение fiatlux37 »

Спасибо огромное !!! Я просто примеры смотрел, где к порту LED присоединяется. Теперь я во всеоружии. Постараюсь сделать что-нибудь в ближайшее время. Будут вопросы, напишу. В конце скину фото/видео девайса. =)
Аватара пользователя
RadioLab
Открыл глаза
Сообщения: 46
Зарегистрирован: Пт дек 25, 2009 12:29:51
Откуда: Н.Новгород
Контактная информация:

Сообщение 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);
  }
}
Аватара пользователя
Left Radio
Прорезались зубы
Сообщения: 235
Зарегистрирован: Пт авг 22, 2008 03:58:30
Откуда: Union Soviet Socialist Republics
Контактная информация:

Сообщение Left Radio »

to fiatlux37 Ну как там у Вас дела с MSP-ой? Запустили свою гирлянду?
Крылья... Крылья.... Хвост! Изображение
Нестрашно не знать, страшно не стремиться знать.
Аватара пользователя
Эмиль
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Пн дек 15, 2008 15:04:59
Контактная информация:

Сообщение Эмиль »

Автору: у меня есть хорошая PDF-ка по MSP430. Описывается все подробно, как работать с портами, таймерами, прерываниями, индикаторами, вобщем для старта это клад! НО! На английском. Если еще актуально, выложу.
Тот, кто красиво говорит и обладает привлекательной наружностью, редко бывает истинно человечен.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Эмиль писал(а):Автору: у меня есть хорошая PDF-ка по MSP430. Описывается все подробно, как работать с портами, таймерами, прерываниями, индикаторами, вобщем для старта это клад! НО! На английском. Если еще актуально, выложу.
выложите для меня, интересно почитать на досуге.спасибо.
Ставим плюсы: )
Аватара пользователя
Left Radio
Прорезались зубы
Сообщения: 235
Зарегистрирован: Пт авг 22, 2008 03:58:30
Откуда: Union Soviet Socialist Republics
Контактная информация:

Сообщение Left Radio »

Крылья... Крылья.... Хвост! Изображение
Нестрашно не знать, страшно не стремиться знать.
Аватара пользователя
Эмиль
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Пн дек 15, 2008 15:04:59
Контактная информация:

Сообщение Эмиль »

Вот, выкладываю. Пользуйтесь на здоровье.
Скачать файл
Тот, кто красиво говорит и обладает привлекательной наружностью, редко бывает истинно человечен.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

всем спасибо
Ставим плюсы: )
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Сообщение fiatlux37 »

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

Сообщение fiatlux37 »

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

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

P.S. Обычное мигание работает.
Аватара пользователя
Left Radio
Прорезались зубы
Сообщения: 235
Зарегистрирован: Пт авг 22, 2008 03:58:30
Откуда: Union Soviet Socialist Republics
Контактная информация:

Сообщение 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
Последний раз редактировалось Left Radio Ср мар 10, 2010 19:43:38, всего редактировалось 2 раза.
Крылья... Крылья.... Хвост! Изображение
Нестрашно не знать, страшно не стремиться знать.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»