2015-07-30 2 views
0

Код предназначен для мини-платы AVM atamega168x с микроконтроллером ATmega168pb. Сменный регистр, который я использую, - это Texas Instruments TPIC6C595 У меня есть выходы слива сдвигового регистра, подключенного к анодам из 8 светодиодов. Штырь OE (G) сдвигового регистра привязан к GND, а CLR привязан к 5V. Существует 100nF керамический конденсатор между сдвиговым регистром VCC и GND. SER OUT остается не связанным ни с чем, так как я пытаюсь бить только этот, прежде чем переходить к цепочке сдвиговых регистров.Пытающий бит-бит TPIC6C595 сдвиговый регистр, но без вывода

Что происходит, так это то, что я не получаю выход из регистра сдвига, все выходы разряда низки (проверены с помощью мультиметра). Когда я отключу SER IN, SRCK и RCK от микроконтроллера, я немного мерцаю только на одном из светодиодов, который, как я думаю, является результатом того, что эти штыри плавают и находятся в неопределенном состоянии. Я ожидал бы, по крайней мере, получить какой-то вывод мусора, даже если код был неправильным, но я получаю больше вывода с полностью отключенным микроконтроллером. Я знаю, что он выводит сигнал, потому что я могу подключить его к светодиодам без регистра сдвига и видеть, что они подсвечиваются на разных уровнях интенсивности, но не имеют осциллографа, чтобы иметь возможность реально смотреть на сигналы.

Это код, с определёнными для выходного порта в верхней части файла, включенного так ясно, что делается:

#define DDR_SREG DDRD 
#define PORT_SREG PORTD 
#define SRCK  _BV(PORTD0) 
#define RCK   _BV(PORTD1) 
#define SER   _BV(PORTD2) 

void display_write(uint8_t data) 
{ 
    char i; 

    PORT_SREG &= ~RCK;   // latch low 

    for (i = 0; i < 8; ++i) { 
     PORT_SREG &= ~SRCK;  // clock low 
     if (data & 1)   // serial out 
      PORT_SREG |= SER; 
     else 
      PORT_SREG &= ~SER; 
     PORT_SREG |= SRCK;  // clock high 
     data >>= 1;    // shift data 
    } 

    PORT_SREG |= RCK;   // latch high 
} 
+0

Если они низкие, они фактически включены. Но если вы примените четкость к выходному регистру, ваше должно быть на самом деле. Однако как вы измерили? Знаете ли вы, что вам нужен резистор подтягивания или источник тока на выходах, чтобы увидеть напряжение? Если нет, вы должны больше узнать об электронике - ключевое слово «открытый дренаж» или «открытый коллектор» – Olaf

+0

Просто прочитайте: «аноды?» Вы имеете в виду катоды, не так ли? Аноды, которые должны быть подключены к Vcc (и, конечно же, должен быть последовательный резистор). – Olaf

+0

Светодиоды соединены общим катодом, с катодами, подключенными к земле, резистором 330 Ом на каждом светодиодном аноде, является ли это проблемой, что сдвиг регистр не может на самом деле источник тока? Извините, ребята, если это действительно основной, я сделал немного электроники, но я пытаюсь заняться некоторыми более продвинутыми вещами ... Я также смущен относительно того, что должно быть сделанный с помощью CLR, должен ли он удерживаться на высоком или низком уровне, указывает, что входной регистр очищается, когда он удерживается на низком уровне, и передает данные в выходной буфер, когда он высок. Итак, что не так, связав его с 5v? –

ответ

0

решаемые его. Проведя еще несколько исследований, было очевидно, что этот сдвиговый регистр имеет открытые дренажные выходы и не может быть источником тока (они могут поглощать ток). Поэтому, отрегулировав проводку, я смогла получить сменную регистрацию, чтобы удовлетворить мое удовлетворение.

Смежные вопросы