viknik8 » 16 июл 2016, 10:39
Прошу помощи! Откомпилировал проект для индикатора с ОК и ОА Под разводку индикатора ;
***********************************************************
; * Автомат защиты от перепадов напряжения (с резисторами) *
; ***********************************************************
; * Среда разработки: AVR Studio v.4.13 *
; * Процессор: ATmega8(V) *
; * Схема подключения: *
; * PC0,PC2,PD4,PD7,PD6,PC1,PC3,PD5 - *
; * выводы A,B,C,D,E,F,G,H индикатора *
; * PB3,PB4,PB5 - общие аноды/катоды X0,X1,X2 индикатора *
; * ADC4 - вход измерения напряжения *
; * PD0,PD1,PD2 - входы подключения кнопок SB1,SB2,SB3 *
; * PB1 - вывод управления реле *
; * Тактовая частота: 4 МГц (внешний кварц) *
; * Fuse-биты: *
; * CKSEL = 0001 BODEN = 0 CKOPT = 0 *
; * SUT = 10 EESAVE = 0 RSTDISBL = 1 *
; * BODLEVEL = 0 WDTON = 1 *
; * CKOUT = 1 SPIEN = 0 *
; * kotov_ig@mail.ru *
; ***********************************************************
К работе с общим катодом нареканий нет. С ОА при подачи напряжения должна мигать точка в младшем разряде как и с индикатором с ОК, а мигают произвольные сегменты младшего разряда в зависимости от выставленного времени включения. Например, если выставляю время включения 1 мин., то вместо точки мигает сегмент "d" и "e" младшего разряда. При компиляции с ОК и ОА менял только первую строчку
/*#define __COMMON_CATHODE__*/
#ifdef __COMMON_CATHODE__
#define SEG_A 1<<0;0
#define SEG_B 1<<2;2
#define SEG_C 1<<4;4
#define SEG_D 1<<7;7
#define SEG_E 1<<6;6
#define SEG_F 1<<1;1
#define SEG_G 1<<3;3
#define SEG_H 1<<5;5
#else
#define SEG_A ~(1<<0)
#define SEG_B ~(1<<2)
#define SEG_C ~(1<<4)
#define SEG_D ~(1<<7)
#define SEG_E ~(1<<6)
#define SEG_F ~(1<<1)
#define SEG_G ~(1<<3)
#define SEG_H ~(1<<5)
#endif
Есть еще небольшая неприятность. Скачут два младших разряда. Может у кого есть решение?