реклама на сайте
подробности

 
 
> MSP 430 + Сегментный индикатор, Проблемы подключения
Niketa
сообщение Feb 4 2014, 16:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 1-02-14
Пользователь №: 80 290



Для того чтоб разобраться как правильно подключать и для того чтоб появился адекватный пример - создаю эту тему.

Собственно что имеется.

-Сегментный индикатор CA56-12SRWA с общим Анодом
-MSP430 Launchpad + MSP430G2553
-набор резисторов и тразисторов

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

Для начала посмотрим даташит к CA56-12. 4х разрядный индикатор с общим анодом.
Цитата
Схема включения. общ.анод
Максимальное прямое напряжение,В 2.5
Максимальное обратное напряжение,В 5
Максимальный прямой ток ,мА 30
Максимальный импульсный прямой ток ,мА 155


Понятно. Посмотрим на MSP430. В даташите не указано какой максимальный суммарный ток может быть на ножках - но примем его за 100mA. Vcc = 3.5 B.

Возьмем готовую схему (пример) и соберем тестовый макет. Макетки нету , так что с горем пополам все припаял аккуратно.

Вот что спаял для теста

Начнем писать КОД, но для начала представлю описание из даташита на PxOUT и PxREN

Приступим

Садим P2.1 и P2.2 на землю. Т.е. подключаем подтяги резистор и включаем чтоб выходила ножка на землю (исходя из приведенных скринов даташита)
Код
    
P2REN |= BIT1+BIT2;
P2OUT &= ~(BIT1+BIT2); // пусть всегда горят только 2 сегмента


Дальее 2.3 и 2.5 вклюаем на выход и так же подключаем подтягивающий резистор.
Код
    
P2DIR |=( BIT3+BIT5);
P2REN |= BIT3+BIT5;


Так же сделаем так чтоб P2.3 подтягивалось к общему проводу
Код
P2OUT &=~(BIT3);


Так. Теперь напишем простой кусок для того чтоб мигать то первым разряздом - то четвертым.
А именно ножки P2.3 и P2.5 поочередно подтягиваем то на землю то на питание.
Так как P2.1 и P2.2 сидят всегда на земле мы увидим мигание двух сегментов на разных разрядах.

кусок мигания
Код
for(;;) {
    
P2OUT ^= BIT5;
P2OUT ^= BIT3;

i = 50000;                    
do i--;
while(i != 0);


Итог после того как прошил контроллер.
Все мигает. НО ОЧЕНЬ ТУСКЛО!

Все ли я сделал правильно ?
Надо ли для увеличения яркости заново рассчитать номиналы резисторов ?

Маленькое видео для демонстрации как мигает и какая яркость
При свете лампы даже и не видно.

Сообщение отредактировал Niketa - Feb 4 2014, 16:38
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Niketa
сообщение Feb 4 2014, 23:03
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 1-02-14
Пользователь №: 80 290



//////////////////////
Еще один косяк. Со всем остальным вроде разобрался.
Либо у меня где то пробой или же я не пойму в чем косяк...Номиналы наверно другие надо.


Весь КОД МИГАНИЯ
Код
#include <msp430.h>

int main(void) {
    WDTCTL = WDTPW | WDTHOLD;        // Stop watchdog timer


///////////НАСТРОЙКА ВСЕХ ДИОДОВ НА "НЕ ГОРИТ"//////
    //Пины управления сегментов ставим на вход
    P2DIR &=~(BIT0+BIT1+BIT2);
    P1DIR &=~(BIT1+BIT2+BIT3+BIT4+BIT5);
    //0 на пины управления сегментов
    P2OUT &=~(BIT0+BIT1+BIT2);
    P1OUT &=~(BIT1+BIT2+BIT3+BIT4+BIT5);

    //Пины выбора разряда на выход
    P2DIR |=(BIT3+BIT4+BIT5);
    P1DIR |=BIT6;
    //Подтягивающ резистор включаем
    P2REN |=(BIT3+BIT4+BIT5);
    P1REN |= BIT6;
    //Подтягиваем Vcc к пинам
    P2OUT |=(BIT3+BIT4+BIT5);
    P1OUT |=BIT6;
//////////////////////////////////////////////////////


    

////ОЧЕНЬ ПРОСТОЙ ЦИКЛ МИГАНИЯ////////////////////////
    for(;;) {
        volatile unsigned int i;    // volatile to prevent optimization
////////////////////////////////////////
        //Обнуляем все в "НЕ ГОРИТ"
        P2DIR &=~(BIT0+BIT1+BIT2);
        P1DIR &=~(BIT1+BIT2+BIT3+BIT4+BIT5);
        P2OUT |=(BIT3+BIT4+BIT5);
        P1OUT |=BIT6;

        //ВКЛ
        P2DIR |=BIT2;
        P2DIR |=BIT1;
        //Первый регистр
        P2OUT &=~BIT3;


        i = 100000;
        do i--;
        while(i != 0);
//////////////////////////////////////////
        //Обнуляем все в "НЕ ГОРИТ"
        P2DIR &=~(BIT0+BIT1+BIT2);
        P1DIR &=~(BIT1+BIT2+BIT3+BIT4+BIT5);
        P2OUT |=(BIT3+BIT4+BIT5);
        P1OUT |=BIT6;


        P2DIR |=BIT2;
        P2DIR |=BIT1;
        //Второй регистр
        P2OUT &=~BIT4;


        i = 100000;
        do i--;
        while(i != 0);
//////////////////////////////////////////
        //Обнуляем все в "НЕ ГОРИТ"
        P2DIR &=~(BIT0+BIT1+BIT2);
        P1DIR &=~(BIT1+BIT2+BIT3+BIT4+BIT5);
        P2OUT |=(BIT3+BIT4+BIT5);
        P1OUT |=BIT6;


        P2DIR |=BIT2;
        P2DIR |=BIT1;
        //Третий регистр
        P2OUT &=~BIT5;


        i = 100000;
        do i--;
        while(i != 0);
//////////////////////////////////////////
        //Обнуляем все в "НЕ ГОРИТ"
        P2DIR &=~(BIT0+BIT1+BIT2);
        P1DIR &=~(BIT1+BIT2+BIT3+BIT4+BIT5);
        P2OUT |=(BIT3+BIT4+BIT5);
        P1OUT |=BIT6;


        P2DIR |=BIT2;
        P2DIR |=BIT1;
        //Четвертый регистр
        P1OUT &=~BIT6;


        i = 100000;
        do i--;
        while(i != 0);
//////////////////////////////////////////

    }

    return 0;
}



ВИДЕО - Демонстрация проблемы ПЕрвое видео Второе видео

Почему не гаснут разряды ?

Сообщение отредактировал Niketa - Feb 4 2014, 23:38
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Niketa   MSP 430 + Сегментный индикатор   Feb 4 2014, 16:31
- - d7d1cd   А может тускло от того, что напряжение слишком мал...   Feb 4 2014, 17:25
|- - Niketa   Цитата(d7d1cd @ Feb 4 2014, 21:25) А може...   Feb 4 2014, 17:39
- - Niketa   ///// Хотя вот переписал цикл так чтоб на одном ре...   Feb 4 2014, 20:19
- - Mihey_K   ЦитатаНепонятно КодP2DIR |=BIT1; - Ножка выбора се...   Feb 5 2014, 02:19
|- - Niketa   Цитата(Mihey_K @ Feb 5 2014, 06:19) Ток т...   Feb 5 2014, 13:03
- - Mihey_K   Пожалуйста. А ведь еще в прошлой теме про АЦП в по...   Feb 5 2014, 15:15
- - Niketa   //////////////////////////////////////////////////...   Feb 5 2014, 15:17
- - Mihey_K   Чистая математикаКод uint32_t adc_result; uint16_...   Feb 5 2014, 15:51
- - Niketa   Вопрос 1. Кодuint32_t -что это ? uint16_t -что это...   Feb 5 2014, 16:38
- - Mihey_K   Ответ 1 unsigned long - 4 байта unsigned int для M...   Feb 5 2014, 17:41
- - Niketa   Спасибо. Все просто оказалось. В случае проблем п...   Feb 5 2014, 19:40
- - Mihey_K   Бросьте ссылку на видео, хоть посмотреть результат...   Feb 6 2014, 03:58
- - Niketa   Полный код программы на вывод числа. Код#include ...   Feb 6 2014, 09:30
|- - d7d1cd   Цитата(Niketa @ Feb 6 2014, 13:30) Я дума...   Feb 6 2014, 10:38
|- - Niketa   Цитата(d7d1cd @ Feb 6 2014, 14:38) Сделай...   Feb 6 2014, 10:53
- - Mihey_K   Для конструкций вида Кодif (number == 0) {...   Feb 6 2014, 15:40
- - piterqq   Для большого напряжения нужно с начала проверить к...   Feb 20 2014, 19:46
- - igorle   Случайно наткнулся на эту тему. Если еще актуально...   Jul 7 2014, 18:37


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 14:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.114 секунд с 7
ELECTRONIX ©2004-2016