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

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

Добавлено: Чт мар 11, 2010 07:15:15
fiatlux37
Самый главный вопрос:

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

Т.к. это не первый порт, там надо что-то сделать по другому, как мне объяснили. Работать не через таймер, а через порты. Как-то так. Подскажите как, пожалуйста.

Добавлено: Чт мар 11, 2010 08:03:29
Эмиль
если без таймера, то надо делать так называемую "программную имитацию ШИМ". Нужно поиграться с задержками между вкл/выкл светодиода.

Добавлено: Чт мар 11, 2010 08:16:16
fiatlux37
Я пытаюсь это сделать, но кроме мигания ничего не получается... (((

Добавлено: Чт мар 11, 2010 08:40:31
Эмиль
К сожалению без исходника, ничего конкретного подсказать не могу.

Добавлено: Чт мар 11, 2010 09:57:13
fiatlux37
Да просто нужно, чтобы на ноге у MSP1232 под номером Р3.2 стоял диод и он постепенно загорался/гаснул.

Добавлено: Чт мар 11, 2010 10:03:00
Left Radio
Так называемую "программную имитацию ШИМ" делать на СИ, плюс если еще МК чем то занят.... Ну не знаю, по моему легче подключить светодиод на первый порт и не мучатся...

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

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

Добавлено: Чт мар 11, 2010 12:03:44
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
  }
} 

Добавлено: Чт мар 11, 2010 13:03:29
fiatlux37
Спасибо огромное за ответы-советы. И сам думал насчёт кондёра. Мне реально проще понапаять транзюков да кондёров, чем писать программулину. ))

Добавлено: Чт мар 11, 2010 15:52:28
RadioLab
давай конкретный вопрос, разбираться в чужом исходнике, извини, не стану.

и вообще попробуй в протеусе помоделировать

Добавлено: Чт мар 11, 2010 16:02:35
RadioLab
............ и ещё если проект написан для MSP430F1xxx, а шьёшь в MSP2xxx работать не будет. надо смотреть исходники.

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

++ шью msp430f1232

Добавлено: Чт мар 11, 2010 16:54:53
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.

Добавлено: Пт мар 12, 2010 08:20:25
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 будешь менять длительность горения светодиода

 

Добавлено: Пт мар 12, 2010 09:56:15
Left Radio
Можно конечно и задержкой, но таймером эффективней :), остаются ресурсы на управление другими светодиодами, да и память немного экономится, особенно если cnt объявить локальной...

Re: msp430. LED.

Добавлено: Пн мар 15, 2010 09:45:03
RadioLab
безусловно эффективнее. :) только так проще и понятнее начинающему программисту.
.......... хотя даже начинающие программисты бывают разные. :)

Re: msp430. LED.

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

Re: msp430. LED.

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

http://ifolder.ru/17107977

Re: msp430. LED.

Добавлено: Сб май 29, 2010 19:08:49
fiatlux37
http://www.youtube.com/watch?v=cJ-ZbIYlWIY

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