Работа с тремя сдвиговыми регистрами

Тема в разделе "Микроконтроллеры AVR", создана пользователем Funny59, 29 дек 2018.

  1. Funny59

    Funny59 Нерд

    Стоят 3 сдвиговых регистра, подключил как тут. Работают только 2 из 3, третий как-то странно себя ведет
    Вот код управления ими:
    Код (C++):
    void write(uint32_t data)
    {
        for(uint32_t i = 0; i < 24; i++)
        {
            if((data >> i)%2) SetBit(DATA_PORT, DATA_BIT); else ClearBit(DATA_PORT, DATA_BIT);
            _delay_ms(1);
            SetBit(SHCP_PORT, SHCP_BIT);
            _delay_ms(1);
            ClearBit(SHCP_PORT, SHCP_BIT);
        }
        _delay_ms(1);
        SetBit(STCP_PORT, STCP_BIT);
        _delay_ms(1);
        ClearBit(STCP_PORT, STCP_BIT);
    }
     
  2. Развязки по питанию нет
     
  3. Сигнальная линия нагружена зачем-то микрофарадом - спалит пин со временем.
    Не читайте статьи на торгашеских сайтиках. В 99% случаев они переписаны с другого сайта каким-нибудь найденным в интернете ничего в этом не понимающим человеком. Это делается для поисковой оптимизации, а не для вашего образования.
     
    parovoZZ нравится это.
  4. Funny59

    Funny59 Нерд

    Развязка есть, конденсаторы ставил сам
     
  5. То есть вы делали не по статье, а по-своему, и мы все должны догадываться, что вы там сделали.
     
  6. parovoZZ

    parovoZZ Гуру

    конденсатор не является развязкой.
     
  7. Funny59

    Funny59 Нерд

    Я написал что подключил, а не сделал всё так же
     
  8. Funny59

    Funny59 Нерд

    Блокировочный конденсатор
     
  9. parovoZZ

    parovoZZ Гуру

    Тормозни скорость выполнения кода да посмотри или ЛА, или тестером.
     
  10. Vovka

    Vovka Гик

    Инициализация порта какая?
     
  11. mcureenab

    mcureenab Гуру

    Проверить соединения.
    Поменять местами странный регистр с хорошим.
     
  12. Funny59

    Funny59 Нерд

    Код (C++):

    #define  DATA_PORT PORTC
    #define  DATA_BIT 3
    #define  SHCP_PORT PORTC
    #define  SHCP_BIT 1
    #define  STCP_PORT PORTC
    #define  STCP_BIT 2

    DDRC = (1<<1)|(1<<2)|(1<<3);
     
  13. Vovka

    Vovka Гик

    И по какому перепаду сигнала "срабатывает" регистр?
     
  14. Funny59

    Funny59 Нерд

    Что?
     
  15. Vovka

    Vovka Гик

    Открываем даташит на регистр и смотрим, по какому перепаду сигнала происходит загрузка данных, сдвиг и т.д... Потом смотрим на инициализацию порта С.
     
  16. Funny59

    Funny59 Нерд

    Ничего не изменилось
     
  17. Funny59

    Funny59 Нерд

    Впаял новый, ничего не поменялось
     
  18. Vovka

    Vovka Гик

    Смысл помогать человеку, который игнорирует советы?
    Ухожу с темы...
     
  19. Funny59

    Funny59 Нерд

    Уже разобрался в чем проблема
     
  20. Funny59

    Funny59 Нерд

    Проблема была в битовых сдвигах