|
Прерывания UART, не работает |
|
|
|
Feb 13 2014, 18:10
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Всем категорически драсте. Пытаюсь реализовать небольшое устройство (назовём его A), которое должно управлять другим устройством (В) по интерфеёсу 485 (полудуплексный режим) с использованием протокола юарт. Система работает след. образом : с PC на устройство А отправляется пакет данных (по юарту, скорость 9600кБод/с). Устройство А принемает пакет и транзитом передаёт его на устройство Б но уже со скоростью 1Мбит/с (т.е. длительность импульса данных = 1 мкс). Далее устройство Б должно ответить (по тем же проводам). Решил не морочится, взял ниос прилепил к нему 2 UART контроллера один принемает с компа другой для работы с устройством Б. Сначало было всё нормально, с компа посылка принемалась и благополучно отправлялась с необходимой скоростью. Но вот когда устр. Б отвечает, прерывания UARTа (для 1 Мбита) говорящие о том, что очередной байт принят ведут себя каким то рандомным образом. Дело в том, что для преобразования интерфейсов используется микросхема MAX3485. Её работа такова, что ножка, с которой данные приходят уже на ПЛИС всё время, сидит в 0. Кода же устройство Б начинает передавать оно сначало поднимает линию (назовём этот момент предстартовым битом) и затем опускает (это уже стартовый бит). Этот самый предстартовый бит довольно короткий и я думал дело в этом. Но сдаётся мне дело в чём то другом. Ниос использею естественно самый простяцкий. Может кто подскажет чего. На осциллограмме жёлтым изображён ответ устройства Б, а синим моменты, в которые UART контроллер говорит, что мол байт принят, т.е. происходит прерывание.
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Feb 14 2014, 08:51
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Подтягивающие резисторы не помогают. Действительно, процесс передачи инициализирую я, и пока я передаю, линия RО (ножка микросхемы идущая к ПЛИС) задирается в 1. Когда я переключаюсь из режима передачи в режим приёма RО опускается в 0 и лежит в нём до тех пор, пока устройство В не переключится в режим передачи и его передатчик не поднимет линию. Т. о. происходит дополнительное срабатывание, но картину это всёравно не особо меняет. Это что касается резистора. Картина же без резистора представлена на осциллограммах (в самаом верху рисунка видно, что до прихода предстартового бита, линия сидит в 0, и никаких прерываний нет). P.S. Каждый кстати раз прерывания расставляются как то рандомно... Цитата проверьте как должны быть линии А и Б, и подтяните их резисторами куда надо! В том то и дело, что ароде всё правильно ссоединено. Ведь как я писал, на устройство Б приходит от пеня сигнал, который то же сначала сидит в 0. Единственное , то, что мой предстартовый бит по длительности как раз не менее стопового. Более того, я напрямую ссоединял ножки плис (в обход линии 485). В этом случае линя приёмника по умолчанию была в 1 а потом проваливалась (т.е. всё как надо) но... ниос зараза всёравно косячит с прерываниями... быть может для нормальной работы на скоростях отличных от стандартных нужно другое ядро, а не бесплатное... блин неделю уже мучаюсь...
Сообщение отредактировал Грендайзер - Feb 14 2014, 08:38
|
|
|
|
Сообщений в этой теме
Грендайзер Прерывания UART Feb 13 2014, 18:10 sazh Цитата(Грендайзер @ Feb 13 2014, 21:10) п... Feb 13 2014, 18:51 Грендайзер Дело а том, что при переключении из режима передач... Feb 14 2014, 06:44 sazh Цитата(Грендайзер @ Feb 14 2014, 09:44) Д... Feb 14 2014, 07:43 Golikov A. по спецификации UART сигнал должен быть в 1 в неак... Feb 14 2014, 07:12 Golikov A. ЕПРСТ!
Что ядра менять, если на осцилографе Н... Feb 14 2014, 08:56 Грендайзер Я ж написал, что ссоединял плисы напрямую, в обход... Feb 14 2014, 11:46 Golikov A. время написания UART модуля - 20 минут. Возьмите и... Feb 14 2014, 12:05 Грендайзер Да написать то UART дело не хитрое кодов и нете по... Feb 14 2014, 12:14 Golikov A. UART надо писать к ниосу, У всех этих процов шина ... Feb 14 2014, 13:02 Грендайзер Да я тоже подумывал сначала написать небольшой мод... Feb 14 2014, 14:38 Грендайзер Появилось времечко, и вновь взялся за разборки с н... Mar 12 2014, 08:27 alexadmin Цитата(Грендайзер @ Mar 12 2014, 12:27) Т... Mar 12 2014, 08:36 Грендайзер Ооопанькииии... А ещё можно наводящий вопросик как... Mar 12 2014, 08:42 _Anatoliy Цитата(Грендайзер @ Mar 12 2014, 10:42) О... Mar 12 2014, 08:59  alexadmin Цитата(_Anatoliy @ Mar 12 2014, 12:59) им... Mar 12 2014, 09:24   _Anatoliy Цитата(alexadmin @ Mar 12 2014, 11:24) И ... Mar 12 2014, 09:32 Грендайзер Нет, ну у Альтеры есть какая то там фифошечка, я п... Mar 12 2014, 09:41 Golikov A. берете корку уарта
и корку фифо
правильно соединя... Mar 12 2014, 14:57 vadimuzzz вообще-то у альтеры есть streaming-режим, и прерыв... Mar 12 2014, 22:27 Грендайзер Цитатавообще-то у альтеры есть streaming-режим, и ... Mar 13 2014, 02:56 vadimuzzz Цитата(Грендайзер @ Mar 13 2014, 09:56) А... Mar 13 2014, 05:20  alexadmin Цитата(vadimuzzz @ Mar 13 2014, 09:20) в ... Mar 13 2014, 05:24   vadimuzzz Цитата(alexadmin @ Mar 13 2014, 12:24) У ... Mar 14 2014, 01:45    alexadmin Цитата(vadimuzzz @ Mar 14 2014, 05:45) я ... Mar 14 2014, 03:47     vadimuzzz Цитата(alexadmin @ Mar 14 2014, 10:47) Хм... Mar 14 2014, 10:52 Грендайзер Ну проблема то в том, что количество байт в пакете... Apr 9 2014, 08:57 vadimuzzz Цитата(Грендайзер @ Apr 9 2014, 15:57) Ну... Apr 9 2014, 23:07 Грендайзер ааааа... да да да понял... Правда последним символ... Apr 11 2014, 15:15
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|