Перейти к содержанию

DimonRX

Members
  • Постов

    19
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Москва

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    Микроконтроллеры

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения DimonRX

Новичок

Новичок (1/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. @snn_krs , спасибо, кто бы мог подумать! Да, правильно говорят: "Век живи-век учись, а все равно дураком помрёшь." Вставил задержки по 1 мс и все стало читаться! А я месяц голову ломал, почему не работает? Вроде все просто и логично, а не работало. Теперь надо на железе попробовать, будет читаться или нет.
  2. Задержки я могу вставить, а как быть с промышленным решением? У меня же только модель для отладки, к реальной программе, которая делает то же самое, у меня доступа нет. А это зачем? Я же данные с другой стороны читаю. Ну приходит на первый разряд код 140, я знаю, что это буква "Р" и просто игнорирую эти байты. Меня больше интересуют сегменты, а именно коды 254, 253, 251, 247, 239, 223. А их прочитать не получается. А вот логический анализатор их читает: Time [s] Analyzer Name Decoded Protocol Result 0.000000000000000 SPI MISO: 140 0.010413000000000 SPI MISO: 247 0.020802000000000 SPI MISO: 140 0.031215000000000 SPI MISO: 247 0.041603000000000 SPI MISO: 140 0.052017000000000 SPI MISO: 247 0.062408000000000 SPI MISO: 140 0.072822000000000 SPI MISO: 247 0.083219000000000 SPI MISO: 140 0.093631000000000 SPI MISO: 251 0.104020000000000 SPI MISO: 140 0.114433000000000 SPI MISO: 251 0.124824000000000 SPI MISO: 140 0.135237000000000 SPI MISO: 251 0.145626000000000 SPI MISO: 140 0.156039000000000 SPI MISO: 251 0.166429000000000 SPI MISO: 140 0.176842000000000 SPI MISO: 251 0.187232000000000 SPI MISO: 140 0.197644000000000 SPI MISO: 251 0.208034000000000 SPI MISO: 140 0.218446000000000 SPI MISO: 251 0.228835000000000 SPI MISO: 140 0.239248000000000 SPI MISO: 251 0.249638000000000 SPI MISO: 140 0.260051000000000 SPI MISO: 251 0.270439000000000 SPI MISO: 140 0.280852000000000 SPI MISO: 251 0.291241000000000 SPI MISO: 140
  3. Так у меня ничего и не получилось. Купил логический анализатор. Подключил. Он все читает как надо. Что передаю, то и читает. А вот у меня не получается читать. Опишу свои действия, может кто-то подскажет, где я делаю не так. Значит для тестов собрал модель и написал программку, эмулирующую анимацию. В сдвиговый регистр данные передаю следующим образом: 1) Поднимаем и держим RESET в 1 2) Выдаем первый (старший) бит на Data. 3) Опускаем в 0 и поднимаем в 1 тактовый выход. На восходящем фронте происходит занос в регистр и сдвиг всей цепочки на один шаг. Код, который это делает: procedure HC164_write(Out_data : byte); var i, Dat : byte; begin for i := 0 to 7 do begin Dat := (Out_data shl i) and %10000000; PORTC0_bit := Dat.B7; PORTC1_bit := 0; PORTC1_bit := 1; end; end; В основной программе разрешил прерывание int1 по изменению уровня GICR := %11000000; MCUCR := %00000100; SREG_I_bit := 1; И пробую читать данные со сдвигового регистра (нога PD3 подключена к CLK, PD1 подключена к линии данных) в массив из 127 элементов для дальнейшего анализа. procedure ReadData(); iv IVT_ADDR_INT1; ics ICS_AUTO; var rd_bit, rd_data : byte; Data_SPI_buf : array[127] of byte; volatile; begin if (PIND3_bit = 1) and (yy <= 127) then begin rd_data := rd_data shl 1; if (PIND1_bit = 1) then rd_data := rd_data or 0x01 else rd_data := rd_data or 0x00; inc(rd_bit); if (rd_bit > 7) then begin rd_bit := 0; Data_SPI_buf[yy] := rd_data; inc(yy); rd_data := 0; end; end; end; И ничего не читается из того, что передаю. Может подскажете, что я делаю не так? Если это поможет, то могу выложить те данные, что читает логический анализатор.
  4. @artos5, а можно несколько вопросов по коду? Просто я пишу не на С, а на Pascal-e, и от конструкций С у меня мозг взрывается . flg_spi - это переменная? Почему она нигде не используется? Те же вопросы в отношении mask и timer? Что такое SCK_S и MOSI_S? y - это индекс элемента массива данных? Т.е. в примере читается максимум 32 байта? Извиняюсь за дурацкие вопросы, но язык С у меня с детства не пошел.
  5. Это один из первых вариантов. Этот косяк давно устранен.
  6. U1-это контроллер моей схемы, где я пытаюсь управлять вращением серводвигателя. U3-контроллер исходной схемы (очень сильно упрощенной). С его помощью смоделирована индикация исходной схемы. Сигнал я хочу получить с U4, связей нет потому, что пока я думаю, куда на U1 завести входы U4.
  7. Вот именно так. Могу схему в протеусе выложить, но только вечером.
  8. Мне их нужно читать, а тактового импульса нет.
  9. А тут вообще 2 ножки получается. Мозг закипает.
  10. По SPI у меня подключен цифровой потенциометр MCP41010. И SPI у меня инициализирован как master. Мысли были попробовать по SPI прочитать, но не могу врубиться, как?
  11. Снова попробую обратиться за помощью. Читать данные с индикатора не получилось. Хочу попробовать читать данные со входа сдвигового регистра. Запись туда происходит по следующему алгоритму: 1. выдаём первый старший бит из пачки на линию DATA 2. опускаем в лог. 0 линию CLC 3. поднимаем в лог.1 линию CLC 4. повторяем все пункты с 1, пока не выдадим все биты. Мысли такие. Повесить линию CLC на прерывание, например на INT1 со срабатыванием по спаду уровня. При срабатывании прерывания считывать бит данных. И так, пока не прочитаю байт. Вроде логично (на мой дилетантский взгляд), но есть проблема. Как мне синхронизироваться с передачей? Я же могу начать читать не обязательно сначала, а с любого места? И тогда будет считана неверная информация. Как мне узнать, что в данный момент начата передача нового байта?
  12. BARS_, вот за совет по делу спасибо! Снял видео, как работает индикация. Скорее всего буду брать 6 разрядов с индикатора и по ним определять направление вращения. Жалко, конечно, 6 ног под это тратить, но на большее я пока не способен. Сделаю так, а в дальнейшем, если поумнею, то переделаю. IMG_2581.TRIM.MOV
  13. Вот ради этого ответа я и задал вопрос. А Вы уже родились с абсолютными знаниями о МК? И пока не достигли просветления не задавали вопросов вообще? Тогда зачем нужен форум? Для общения гуру между собой?
  14. А можно ссылку? Или хотя бы название, как он у китайцев называется. Поймите правильно, для меня это все новое, я AVR-ками меньше месяца занимаюсь. Для меня это темный лес. Пытаюсь разобраться по мере сил и возможностей. Индикация динамическая. Смысл подключения к индикации в том, что когда мотор остановлен, на индикации показано направление, в какую сторону он будет вращаться при включении. А когда мотор вращается, на индикацию выводятся обороты. Моя же задача узнать, в какую сторону он будет вращаться. А как это сделать? Может пример есть какой. Моих знаний для этого не достаточно.
×
×
  • Создать...