Перейти к содержанию
    

MSP 430 + Сегментный индикатор

Я думаю что вы заметили что в старшем разряде проскакивает единица. Пока мне непонятно почему.

Сделай точку остановки в отладчике именно в том месте, где происходит вывод 1 в старшем разряде. Или напиши такое условие. Потом крути-верти резистор. Когда будет выводиться 1 в старшем разряде, отладчик остановится. Посмотри значения переменных. Может так найдешь причину.

 

В функции show_number лучше использовать оператор switch, чем кучу if. Можно и if, но тогда все if кроме первого должны быть заменены на else if.

 

Зачем нужна "маленькая пауза"? Она у тебя не маленькая, она очееееееень маленькая.

Изменено пользователем d7d1cd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделай точку остановки в отладчике именно в том месте, где происходит вывод 1 в старшем разряде. Или напиши такое условие. Потом крути-верти резистор. Когда будет выводиться 1 в старшем разряде, отладчик остановится. Посмотри значения переменных. Может так найдешь причину.

Ошибку в коде нашел. Предыдущий пост исправил. Я там забыл скобки две поставить.

 

Зачем нужна "маленькая пауза"? Она у тебя не маленькая, она очееееееень маленькая.

Паузу уберу нафиг,она ненужна.

 

В функции show_number лучше использовать оператор switch, чем кучу if. Можно и if, но тогда все if кроме первого должны быть заменены на else if.

Спасибо.Исправлю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для конструкций вида

if (number == 0) {
        P1OUT &=~(BIT1+BIT2+BIT3+BIT5);
        P2OUT &=~(BIT0+BIT2);
    }
    if (number == 1) {
        P1OUT &=~BIT3+BIT5;
    }
    ......

лучше использовать switch(number ) case 0: case 1: ....

 

Пардон, повторился, d7d1cd уже указал.

Изменено пользователем Mihey_K

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для большого напряжения нужно с начала проверить компоненты на которых оно гасится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Случайно наткнулся на эту тему. Если еще актуально - год назад мне потребовалось сотворить пульт управления домашней печкой с двухсимвольным семисегментным индикатором. Для проотипа просто взял MSP430G2553 в корпусе DIP и воткнул его в бредборд. Сверху насадил индикатор. Так что каждая ножка индикатора идет напрямую к своей ножке MSP. Таким образом в каждую единицу времени можно зажечь один сегмент. Ярковато, даже учитывая, что каждый элемент горит только 1/16 времени. Но для макетирования сгодилось. Потом, когда паял конечное устройство - в цепи анодов добавил резисторы (две штуки - по одному на каждый анод)

 

Схему не рисовал, там и так понятно. А на код могу ссылку дать. Если интересно - пишите в личку. (я форум крайне не регулярно просматриваю, так что не увижу, если здесь кто напишет.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...