Проблема с динамической индикацией

Вопросы не попавшие в другие категории.

Проблема с динамической индикацией

Сообщение loid » 16 фев 2009, 13:20

Суть проблемы вы можите посмотреть в прикрепленном файле. Комутацию индикитора производил как обычно, на порт D посадил через резисторы 100 Ом семь сегментов индикатора, переключение индикаторов произвожу с порта B через транзистор (переключаю "минус"). Выводиться то они выводятся, но друг другу мешают, как бы немного засвечивают. Пробывал менять честоту, думал возможно она как то влияет - нет не помогло. Может я что то упустил из виду. Ткните носом, где не прав.
Вложения
MOV00458.rar
(284.82 КиБ) Скачиваний: 17
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Проблема с динамической индикацией

Сообщение =DeaD= » 16 фев 2009, 13:28

А при отключенном индикаторе (транзистор закрыт) - оно подтянуто к питанию? Схемку бы выложить вообще.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Проблема с динамической индикацией

Сообщение RoboTok » 16 фев 2009, 13:31

Или ток проходит слишком большой и из-за больше мощности идёт засветка...

У меня на плате драйвера один светодиод горит при лог. 0 на выходе МК :ROFL:
(светодиод подключён на землю)
Аватара пользователя
RoboTok
 
Сообщения: 1060
Зарегистрирован: 04 фев 2008, 13:18
Откуда: Москва
прог. языки: PHP

Re: Проблема с динамической индикацией

Сообщение $ilent » 16 фев 2009, 13:42

Выходной порт в Z-состоянии.
$ilent
 

Re: Проблема с динамической индикацией

Сообщение loid » 16 фев 2009, 13:53

вот схема
Вложения
nm.JPG
nm.JPG (15.85 КиБ) Просмотров: 1853
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Проблема с динамической индикацией

Сообщение Duhas » 16 фев 2009, 14:04

вопщем задержки ковырять нада, имхо...
длительность работы индикатора + задержка перед включением нового...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Проблема с динамической индикацией

Сообщение [MC] » 16 фев 2009, 14:30

А осцилом не судьба посмотреть что там на транзисторах?
Ну или код покажи.
[MC]
 
Сообщения: 4
Зарегистрирован: 14 фев 2009, 01:11
Откуда: Казань

Re: Проблема с динамической индикацией

Сообщение =DeaD= » 16 фев 2009, 14:37

loid писал(а):вот схема

А что нельзя попробовать подтяжки поставить к питанию выше транзисторов, чтобы когда цифра отключена - у неё хвост в воздухе не болтался?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Проблема с динамической индикацией

Сообщение loid » 16 фев 2009, 14:42

С временем индикации уже химичел - ни к чему не приводит. Уже транзисторы убрал, думал они межленно затухают. Результата нет.
Кто то же делал на форуме часы, как индикацию сочинял?

Добавлено спустя 4 минуты 29 секунд:
вот код:
Код: Выделить всё
#include <mega8.h>
#include <delay.h>
int n;
int nm1;
int nm; //числовое значение для вывода на дисплей
int number[]={0b01101111,0b00001100,0b00111011,0b00111101,0b01011100,0b01110101,0b01010111,0b00101100,0b01111111,0b01111100};
//int step;

void printnm()  //вывод числового значения на дисплей
             {
             for (n=0; n<4; n++){
             PORTB.0=0;
             PORTB.1=1;
             PORTD =number[nm%100/10];
             PORTB.0=1;
             PORTB.1=0;
             PORTD =number[nm%10];
                                 }
             }     
             

void main(void)
{
PORTB=0xFF;
DDRB=0xFF;

PORTC=0x7F;
DDRC=0x7F;

PORTD=0x00;
DDRD=0xFF;

TCCR0=0b00000101;
TCNT0=0x00;

while (1)
      {
      //nm=TCNT0;
      //ta++;
      //if(ta>1000){ta=0; printnm();}
      if(TCNT0>10){printnm(); nm1++; TCNT0=0;}
      PORTD=0x00;
      if(nm1>50){nm1=0; nm++;}
      if(nm>99){nm=0;}
      };
}


Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Проблема с динамической индикацией

Сообщение =DeaD= » 16 фев 2009, 14:44

loid писал(а):Кто то же делал на форуме часы, как индикацию сочинял?

http://www.gaw.ru/html.cgi/txt/app/micr ... AVR242.htm - читали?

А вообще подтяжку таки пробовали сделать? :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Проблема с динамической индикацией

Сообщение yak-40 » 16 фев 2009, 14:50

В базы транзисторов ОБЯЗАТЕЛЬНО надо ставить ограничительные резисторы 500ом - 1ком.
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Проблема с динамической индикацией

Сообщение =DeaD= » 16 фев 2009, 14:53

yak-40 писал(а):В базы транзисторов ОБЯЗАТЕЛЬНО надо ставить ограничительные резисторы 500ом - 1ком.

Кстати, да, что опять же указано в приведённой выше статье.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Проблема с динамической индикацией

Сообщение blindman » 16 фев 2009, 14:59

1. Сначала выключай все разряды, затем выставляй нужные сегменты, и только потом включай нужный разряд.
2. Сильно не пытался в твоем коде разбираться, но сдается мне что он совсем не рабочий. Не вижу кода, который циклически меняет текущий отображаемый разряд.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Проблема с динамической индикацией

Сообщение loid » 16 фев 2009, 16:18

blindman, спасибо, ошибку ты мне показал. Всё заработало. :Yahoo!:
Ошибка была в следующем:
- включаю нужный разряд
- зажигаю нужные сегменты (не гашу их)
- переключаю разряд
- зажигаю нужные сегменты (другие)

как должно быть:
- включил разряд
- зажег нужные сегменты
- гашу сегменты
- включаю другой разряд
- зажигаю нужные сегменты (другие)
- нашу сегменты
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: Проблема с динамической индикацией

Сообщение [MC] » 16 фев 2009, 16:49

дык очевидно все

PORTB.0=0;
PORTB.1=1;
тут сделай паузу
PORTB.1=0;
PORTD =number[nm%100/10];
PORTB.0=1;
...

ты сам засвечиваешь разряды.
и про резюки в базах не забудь
[MC]
 
Сообщения: 4
Зарегистрирован: 14 фев 2009, 01:11
Откуда: Казань


Вернуться в Обо всём

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9