msp430. LED.

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

Сообщение fiatlux37 »

Спаибо за ответ. Хедер у меня точно правильный. Я ж говорю, что просто мигание работает. Буду пытаться. Всего в устройстве 60 светодиодов разных цветов, + 6 трёхцветных RGB диодов с переменными сопротивлениями на каждой ноге, + моторчик с машинки, который крутит изображения по экрану (уменьшенные фотки). Должно получиться очень зрелищно. Корпус делаю из матового оргстекла, чтоб рассеивать свет. Вё уже спаяно и работает. Только не хочет вот это плавное угасание делать... (((
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Сообщение fiatlux37 »

Самый главный вопрос:

Мне надо сделать эту прогу (плавного угасания) для порта Р3.2 !!!

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

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

если без таймера, то надо делать так называемую "программную имитацию ШИМ". Нужно поиграться с задержками между вкл/выкл светодиода.
Тот, кто красиво говорит и обладает привлекательной наружностью, редко бывает истинно человечен.
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Сообщение fiatlux37 »

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

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

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

Сообщение fiatlux37 »

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

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

Так называемую "программную имитацию ШИМ" делать на СИ, плюс если еще МК чем то занят.... Ну не знаю, по моему легче подключить светодиод на первый порт и не мучатся...
Крылья... Крылья.... Хвост! Изображение
Нестрашно не знать, страшно не стремиться знать.
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Сообщение fiatlux37 »

Left Radio, просто у меня уже всё спаяно, на этой ноге у меня сидит 24 диода, стоят два буфера (один на 100мА на выходе, другой 500 мА, который открывается первым). Вся суть сего девайса в этих 24-ёх диодах и этом эффекте. Неужели всё так сложно ???

++ Ещё такая проблема: когда пуляю код бегущего огня, он раз прошвыривается по диодам и останавливается.
Последний раз редактировалось fiatlux37 Чт мар 11, 2010 14:55:48, всего редактировалось 1 раз.
Аватара пользователя
Left Radio
Прорезались зубы
Сообщения: 235
Зарегистрирован: Пт авг 22, 2008 03:58:30
Откуда: Union Soviet Socialist Republics
Контактная информация:

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

Можете сделать без ШИМ-а, просто поставе резистор, конденсатор и транзистор. При переходе ноги Р3.2 из 0 в 1 конденсатор, через резистор, начинает заряжаться, транзистор в свою очередь, подсоединенный базой(затвором) к емкости начнет открываться и плавно зажигать светодиод, при переходе из 1 в 0 - обратный процесс. Подбором резистора и емкости получите нужное время зажигания/угасания.

fiatlux37 писал(а):Ещё такая проблема: когда пуляю код бегущего огня, он раз прошвыривается по диодам и останавливается.

Естественно :), это же для примера, чтобы не останавливался надо написать так:

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

#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

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

Сообщение fiatlux37 »

Спасибо огромное за ответы-советы. И сам думал насчёт кондёра. Мне реально проще понапаять транзюков да кондёров, чем писать программулину. ))
Аватара пользователя
RadioLab
Открыл глаза
Сообщения: 46
Зарегистрирован: Пт дек 25, 2009 12:29:51
Откуда: Н.Новгород
Контактная информация:

Сообщение RadioLab »

давай конкретный вопрос, разбираться в чужом исходнике, извини, не стану.

и вообще попробуй в протеусе помоделировать
Аватара пользователя
RadioLab
Открыл глаза
Сообщения: 46
Зарегистрирован: Пт дек 25, 2009 12:29:51
Откуда: Н.Новгород
Контактная информация:

Сообщение RadioLab »

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

Сообщение fiatlux37 »

RadioLab, в принцыпе, мне уже чертовски помогли, основные проблемы я уже решил. Сейчас не могу написать программульку, чтобы диод мигал с о скважностью не равной 2. То есть не 1,0,1,0,1,0... , а что-бы было 0,0,0,0,1,0,0,0,0...
Ну это в первом приближении. Надо чтоб диод секунду не горел, вспыхнул и повторять этот процесс (типа стробоскопа, что-ли).

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

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

Это можно очень просто сделать с помощью собаки, вот так к примеру:

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

unsigned char cnt = 0;

int main( void )
{
  WDTCTL = WDT_MDLY_32;                     // ~32/5 ms interval
  IE1 |= WDTIE;                             // Enable WDT interrupt
  ........ 

  P1DIR |= 0xFF;                          // Set P1 to output direction
  P1OUT = 0x00;
  .......
}


// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
  if( cnt++ == 156)
  {
   P1OUT = 0x01;
    cnt = 0;
  }
  else P1OUT = 0x00; 
}

Светодиод будет вспыхивать с периодом примерно равным 1сек на время 32/5ms.
Крылья... Крылья.... Хвост! Изображение
Нестрашно не знать, страшно не стремиться знать.
Аватара пользователя
RadioLab
Открыл глаза
Сообщения: 46
Зарегистрирован: Пт дек 25, 2009 12:29:51
Откуда: Н.Новгород
Контактная информация:

Сообщение RadioLab »

В том месте где нужная ножка ставиться в 1 и в 0 ставь управляемые задержки


например

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

 
  int count_1 = 10;
  int count_0 = 2000;


ножку отпущена // светодиод не горит
   
 ..............
 while(1)
{
ножку отпустил     

 while(count_0)   //задержка (count_0) задаёт время не горения светод
  { count_0 --; }
 
 ножку поднял

   while(count_1)  //задержка (count_1)  задаёт время горения светод
  { count_1 --; }
 
 }
.......................................


  меняя count_1  и count_0 будешь менять длительность горения светодиода

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

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

Можно конечно и задержкой, но таймером эффективней :), остаются ресурсы на управление другими светодиодами, да и память немного экономится, особенно если cnt объявить локальной...
Крылья... Крылья.... Хвост! Изображение
Нестрашно не знать, страшно не стремиться знать.
Аватара пользователя
RadioLab
Открыл глаза
Сообщения: 46
Зарегистрирован: Пт дек 25, 2009 12:29:51
Откуда: Н.Новгород
Контактная информация:

Re: msp430. LED.

Сообщение RadioLab »

безусловно эффективнее. :) только так проще и понятнее начинающему программисту.
.......... хотя даже начинающие программисты бывают разные. :)
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Re: msp430. LED.

Сообщение fiatlux37 »

Ну всё. Всем спасибо. Особенно Left Radio. Только-что закончил программировать МК. Наконец-то всё заработало !!! Моей эйфории нет предела !!! Всё именно так, как я хотел !!! Сегодня забрал с работы всю плату (а я там уже всех достал ей). Теперь буду всё в корпус вставлять. Теперь впереди весёлые выходные =)))
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Re: msp430. LED.

Сообщение fiatlux37 »

1 апреля подарил сие чудо ручной работы. Вот видео. Извините за качество.Основной материал оргстекло. Всё покрыто мехом. Из капельницы сплетены сверху всякие штуки. Ну и ещё куча всего. Ны вышла идея с трёхцветными диодами. Там где воткнуты зелёные - было место под ручки для переменников, чтоб регулировать цвета. Правда, сверху посередине стоит трёхцветный - соединил ноги красного и синего цвета, получил фиолетово-бардовый. От моторчика, который крутит фотки, тоже пришлось отказаться. Ещё раз всем спасибо.

http://ifolder.ru/17107977
Аватара пользователя
fiatlux37
Встал на лапы
Сообщения: 89
Зарегистрирован: Ср янв 27, 2010 12:33:04

Re: msp430. LED.

Сообщение fiatlux37 »

http://www.youtube.com/watch?v=cJ-ZbIYlWIY

Вот, как-то так. Хоть бы отзывы услышать какие-нибудь.
Закрыто

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