Страница 1 из 1

tiny26 и семисегментник

Добавлено: Вт авг 23, 2011 10:08:50
слушатель
Здравсвуйте дорогие форумяане!
Сразу к делу. Имеется код, точнее его кусок написаный для теста дисплея:

#define g 64
#define f 2
#define e 8
#define d 16
#define c 128
#define b 1
#define a 4

#define data_port PORTA
#define led_port PORTB
#define NUM_OF_DIG 3 //разрядность дисплея

void test(void){
led_port&=0b11111011;

data_port=0x00;
data_port= a ;
delay_ms(600);

data_port=0x00;
data_port= b ;
delay_ms(600);

data_port=0x00;
data_port= c ;
delay_ms(600);

data_port=0x00;
data_port= d ;
delay_ms(600);

data_port=0x00;
data_port= e ;
delay_ms(600);

data_port=0x00;
data_port= f ;
delay_ms(600);

data_port=0x00;
data_port= g ;
delay_ms(600);

data_port=0x00;
data_port= 0xFF ;
delay_ms(600);

data_port=0x00;
}

void main(void){
init ();
LoadTestData();


while (1){
//Display(uadc_c);
//Display(846);

test();



};
}


короче прога ходит по сегментам как положено, но как только data_port= 0xFF не горит сегмент "е". То же самое происходит при индикации любых чисел (вместо 846 показывает 945).
Не говорит ли это о глючности контроллера ? другого контроллера под рукой не имею.
Компилировал CVAVR 1.25.9

Посоветуйте кто что думает.
Заранее благодарен!

Re: tiny26 и семисегментник

Добавлено: Вт авг 23, 2011 11:46:13
md5sum
слушатель писал(а): Сразу к делу. И
Не говорит ли это о глючности контроллера ?
Не говорит...
Схему подключения индикатора в студию...

Re: tiny26 и семисегментник

Добавлено: Вт авг 23, 2011 12:48:48
слушатель
Марка индикатора неизвесная - 3-х разрядный семисегментный, точка отсутствует. Опытным путем было установлено: индикатор с общим катодом, даные приходят с прта А соответственно макросу, адрес - РВ0, РВ1, РВ2.
Устройство подвально-промышленное, просто сгорела тинька.
Вот немогу понять, как здесь схема включения может помочь. Я не первый раз восстанавливаю подобные устройства. пайка впорядке, кз и обрывов нет в том числе и в самом индикаторе.
Может ли компилятор такие бяки выдавать? Пробывал отключать оптимизацию - проблема не решилась.

Re: tiny26 и семисегментник

Добавлено: Вт авг 23, 2011 13:10:14
md5sum
слушатель писал(а):Марка индикатора неизвесная - 3-х разрядный семисегментный, точка отсутствует. Опытным путем было установлено: индикатор с общим катодом, даные приходят с прта А, адрес - РВ0, РВ1, РВ2.
Устройство подвально-промышленное, просто сгорела тинька.
Вот немогу понять, как здесь схема включения может помочь. Я не первый раз восстанавливаю подобные устройства. пайка впорядке, кз и обрывов нет в том числе и в самом индикаторе.
Может ли компилятор такие бяки выдавать? Пробывал отключать оптимизацию - проблема не решилась.
Понятно... схема совершенно секретная....
Где инициализация DDRA и DDRB, к каким ногам сегменты подключены?
Если тинька живая (порт не сгорел), то все должно работать...

Re: tiny26 и семисегментник

Добавлено: Вт авг 23, 2011 14:13:37
слушатель
Да нет там ничего секретного! Простой ограничитель сетевого напряжения типа "Баръер". Схему не срисовывал - нечего там срисовывать. Лежу сейчас в больнице с ноутом, вот и от нечего делать решил победить этого зверя. Есть несколько десятков сломаных. Под рукой тестер и програматор.
На сегодня продолжать не буду - удаляюсь на процедуры.
Говнокод прилагаю.

Re: tiny26 и семисегментник

Добавлено: Вт авг 23, 2011 21:18:22
md5sum
Выздоравливай :beer:
Кажется нашел -

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

#define ADC_VREF_TYPE 0xC0
ADMUX=ADC_VREF_TYPE & 0xff;
Как сказано в великом ДШ:
Internal Voltage Reference (2.56 V) with external capacitor at AREF pin (PA3).
Это скорее всего и есть ошибка. Замени на #define ADC_VREF_TYPE 0x80
- "Internal Voltage Reference (2.56 V), AREF pin (PA3) not connected."

Re: tiny26 и семисегментник

Добавлено: Ср авг 24, 2011 10:37:10
слушатель
Действительно! Икак можно было такую глупость не увидеть...
Большое спасибо!