|
Переход Philips->Atmel |
|
|
|
Mar 17 2007, 15:37
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Цитата LPC - АЦТОЙ !!! C LPC не работал, но у SAMa тоже тараканов хватает - из самых заметных - прибацанный I2C, глюки в ШИМе, последний (ноябрьский) финт с ватчдогом. Вобщем, оптимизм поводу тотальной АРМизации поубавился, где возможно использую Меги. Совет мигрирующим - начинать чтение даташита с эрраты.Избавит от излишнего оптимизма
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Mar 17 2007, 15:57
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(klen @ Mar 17 2007, 12:26)  обоснуй Давно пора уже привыкнуть, что DASM любит катать бочки во все стороны и причем, как правило, не по делу  . Не берите в голову. Цитата(sensor_ua @ Mar 17 2007, 14:23)  16550 UART со всеми глюками (никак не исправлены Характерная особенность 550 UART, что в нем глюков нет  все исправлены за десятиления
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 17 2007, 16:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата Характерная особенность 550 UART, что в нем глюков нет Это точно - не баги, а фичи ...Если долго гладить против шерсти, то шерсть уляжется, и будешь гладить по шерсти...(С)
--------------------
aka Vit
|
|
|
|
|
Mar 17 2007, 16:32
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(sensor_ua @ Mar 17 2007, 15:05)  Это точно - не баги, а фичи  А почему множественное число? Если серьезно, то из наблюдаемых мной достаточно многочисленных попыток "наехать" на '550' в конце концов "проблемы" сводились к невозможности узнать количество cвободного места в TxFIFO в призвольный момент времени. Откуда это "фича" идет - прнятно - от совместимости с '50', который FIFO не имел. Обходится легко, как в Embedded железках, так и на любом PC c тем-же '550' на борту. Собствено отсутствие особой проблемы подчеркивается и тем, что продвинутых '550' выпускается достаточно много - увеличивают размеры FIFO, скорости под мегабит, аппаратный RTS/CTS, автодетект скоростей... Но остального не меняют. Еще имеете "проблемы"?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 17 2007, 16:56
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Отсутствие FIFO для LSR - нельзя доверять всему содержимому FIFO приёма при, например, FE, т.е. нужно обходить ситуации, когда под конец длинного пакета в линии уже может появиться мусор - самый простой способ, ИМХО, - вырубать это FIFO. Также маразм с TEMT - бит есть, но прерывания не вызывает, а при чтении LSR могут сбрасываться прочитанные биты, т.е. в полудуплексе как-то поллить ещё можно, а в дуплексе (да и в полудуплексе для управления 485-м) конец передачи только таймером выгребать. Я, правда, делал ещё вариант с извратом - там где захотелось проверить флаг, взводил программно запрос прерывания (пришлось на всякий случай для блокированного доступа к VIC в User Mode описывать эту процедурку через SWI-функцию) - ну и тем самым LSR читался только в одном месте. Ну и сам прикол с Interrupt Pending принёс достаточно сексу при отладке полного дуплекса, а в примерах и практически всех поучительно/развлекательных материалах по этому поводу такая чушь...
--------------------
aka Vit
|
|
|
|
|
Mar 17 2007, 17:48
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(sensor_ua @ Mar 17 2007, 15:56)  Отсутствие FIFO для LSR - нельзя доверять всему содержимому FIFO приёма при, например, FE, На практике знание, что в пришедшем фрейме один байтик с Frame Error ни к чему другому, как к перерередаче всего фрейма привести не может  . Знание того, что ошибка конкретна была в "третьем байте с краю" вполне бесполезно. Наличие LSR в FIFO имеет некоторый смысл при передаче одиночных (не сгрупиррованных) самодостаточных байтов. В нормальных линиях ошибок просто НЕТ  - личный многолетний опыт с логированием ошибок. Для жутких условий - все аппаратные контроли UART вообще нафиг а сэкономленые parity bit-ы использовать для нормального CRC. Цитата а при чтении LSR могут сбрасываться прочитанные биты, Ну написано так, что можно подумать, что биты то сбрасываются когда захотят, то не сбрасываются когда надо  . На самом деле сбрасываются при чтении те самые биты ошибок... Любой вариант из двух возможных имеет свои достоинства и недостатки. Если хочется не сбрасываемых, то просто хранится копия LSR, что в большинстве случаев более разумно, чем тратить время на доступ к медленной периферии для "посмотреть" и "сбросить". Я лично предпочитаю сбрасываемые чтением флаги и при необходимости хранение их в памяти. Цитата т.е. в полудуплексе как-то поллить ещё можно, а в дуплексе (да и в полудуплексе для управления 485-м) конец передачи только таймером выгребать. Конец передачи - прерывание по THRE + для тупых 485 применений последующий опрос TEMT. Хоть в дуплексе, хоть нет. Цитата ну и тем самым LSR читался только в одном месте. Макрос вместо команды прямого чтения LSR и все будет читаться и сохранять флаги "в одном месте". Цитата практически всех поучительно/развлекательных материалах по этому поводу такая чушь... "поучительно/развлекательных" материалы лучше вообще читать  надо только мельком. Чушь там совершенно обычное дело вне зависимости от фирмы и авторства  . Думать, пробовать, привлекать собственный опыт и еще раз думать. P.S. Я отнюдь не идеализирую '550' - встречал и много-много лучше, но он вполне удачен и сбалансирован, что и обеспечило ему долгую жизнь.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 17 2007, 19:32
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата В нормальных линиях ошибок просто НЕТ - личный многолетний опыт с логированием ошибок. Только не надо пиписками мериться. Хоть раз сигнал после HART-модема видел? Это не MODBUS RTU. Там как раз мусор в конце пакета ВСЕГДА, а скорость по линии аж 1200 бод - перезапрос это по минимуму 400 мс. Как-то из-за корявого кремния терять неохота. Предыдущее замечание о крутой ненужности пакета, если FE - также - твоё мнение. Цитата Конец передачи - прерывание по THRE + для тупых 485 применений последующий опрос TEMT.Хоть в дуплексе, хоть нет. Так когда, через какое время опрашивать этот TEMT? нахрена мне его ждать на низких соростях, например? иначе нахрена мне для UARTа ещё и таймер заряжать? Я, по правде, обычно заряжаю, но на то есть другие причины. Думаю, что это можно было бы выправить в кремни или на худой конец ввести бит - совместимо/несовсем совместимо с 550 и сделать по человечески. Почему-то у Атмеля есть в AVR, AT91, у TI в MSP430, а эти ради крутосовместимости сделали 2 шага назад Цитата Макрос вместо команды прямого чтения LSR и все будет читаться и сохранять флаги "в одном месте". Согласен, должно помочь во многих случаях. Просмотрю, может криворукость какая, а то такой вариант поначалу обсасывал, но почему-то отказался от него.
--------------------
aka Vit
|
|
|
|
|
Mar 17 2007, 20:34
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Сергей Борщ @ Mar 17 2007, 17:53)  Но встраивать в новый 32-битный процессор убогий 8-битный(!) уарт разработки 30-летней давности - несколько, гм, странновато. Ну насчет 30 лет - '550' максимум 20. Запихнули - и работает. I2C тоже такой-те 1:1 c времен 51. Собственно вполне сбалансированное решение - старинному интерфейсу - классическое решение, ну а силы на CAN-USB-MAC-SPI.... Для отладочной консоли он более чем пригоден. Цитата(sensor_ua @ Mar 17 2007, 18:32)  Предыдущее замечание о крутой ненужности пакета, если FE - также - твоё мнение. А куда его битый? На хлеб намазывать или что еще  Цитата Так когда, через какое время опрашивать этот TEMT? Сразу и опрашивать до получения удовлетворения. Цитата нахрена мне его ждать на низких соростях, например? На низких - ждет задача под это дело заточенная  Цитата иначе нахрена мне для UARTа ещё и таймер заряжать? Я, по правде, обычно заряжаю, но на то есть другие причины. Ну вот - решение - таймер, причем не только по этой причине  . Иногда можно и банальный пустой байт посылать вместо таймера. Собственно если "проблема" решается обычно несколькими строчками кода - написал и забыл, то это не проблема  У меня обычно проблем больше, ибо контроллер со всеми его "проблемами" это самый маленький чип из используемых. В тех других проблем и необходимости их обхода на порядки больше
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 17 2007, 21:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата А куда его битый? Ещё раз - битый только последний байт. О пакете говоришь ты. Не надо путать святое с праведным. Ещё раз - мусор после пакета из линии HART ВСЕГДА!!! Что мне ВСЕ пакеты нафиг??? Тебе лишь бы отстоять  Цитата Сразу и опрашивать до получения удовлетворения.  Есть же чем заняться. Как опрашивать, когда занят другим, мне объяснять ненужно. Просто элементарная недоделка (я бы сказал ошибка) в кремнии вынуждает её окучивать - дайте прерывание по TEMT и будет мне счастье - ан нет - песню заводят - типа "всю Одессу устраивает, а тебя нет" - бери весь опыт за столько лет и вперёд... Цитата На низких - ждет задача А почему это какой-то UART меня должен на ОС сподвигнуть? Я вааще нафиг не понимаю, почему переключение передачи должно выноситься из драйвера в задачу. Я это в DPC засовываю. И у меня для этого свой маленький шедулер на уровне BSP. Но я бы для суперзадачи  переключения передачи и DPC не использовал, если бы крутые перцы из филипса дали мне прерывание. Цитата Ну вот - решение - таймер, причем не только по этой причине .Иногда можно и банальный пустой байт посылать вместо таймера. Вопрос же не в решении, а в том, что лишние телодвижения из-за кривости (не окончательной  кремния. А насчёт пустого байта - иногда пользую, но не везде, сами понимаете, это хорошо. С LPC решил с этой практикой завязать - девайсы с MODBUS RTU - оно обязывает  ) Цитата В тех других проблем и необходимости их обхода на порядки больше Если не секрет, какой кремний так радует?
--------------------
aka Vit
|
|
|
|
|
Mar 17 2007, 22:31
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(sensor_ua @ Mar 17 2007, 20:05)  Тебе лишь бы отстоять  Мне вообще-то все равно  . Цитата дайте прерывание по TEMT и будет мне счастье Счастье никогда не бывает полным  . Цитата А почему это какой-то UART меня должен на ОС сподвигнуть? ОС должна быть вне зависимости от UART и отсутствия в нем желаемых фич  Цитата Если не секрет, какой кремний так радует? Абсолютно любой описание которого превышает 500 страниц  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 17 2007, 22:46
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата Абсолютно любой описание которого превышает 500 страниц . Учту  Только что посмотрел объём user Guide LPC2364/66/68/78 - 612 страниц  )) Мануалы XSсale вааще смотреть не пойду! Пока пива в холодильнике только на LPC 8-D
--------------------
aka Vit
|
|
|
|
|
Apr 10 2007, 13:55
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 15-05-06
Пользователь №: 17 104

|
Цитата(beer_warrior @ Mar 17 2007, 16:37)  ...из самых заметных - прибацанный I2C... Тааак  А можно с этого момента поподробнее??? Эррату читал, вроде ничего фатального про i2c не нашёл...
Сообщение отредактировал serj_obninsk - Apr 10 2007, 13:56
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|