реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Переход Philips->Atmel
beer_warrior
сообщение Mar 17 2007, 15:37
Сообщение #16


Профессионал
*****

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



Цитата
LPC - АЦТОЙ !!!

C LPC не работал, но у SAMa тоже тараканов хватает - из самых заметных - прибацанный I2C, глюки в ШИМе, последний (ноябрьский) финт с ватчдогом. Вобщем, оптимизм поводу тотальной АРМизации поубавился, где возможно использую Меги.

Совет мигрирующим - начинать чтение даташита с эрраты.
Избавит от излишнего оптимизма smile.gif


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 17 2007, 15:57
Сообщение #17


Гуру
******

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



Цитата(klen @ Mar 17 2007, 12:26) *
обоснуй

Давно пора уже привыкнуть, что DASM любит катать бочки во все стороны и причем, как правило, не по делу sad.gif . Не берите в голову.

Цитата(sensor_ua @ Mar 17 2007, 14:23) *
16550 UART со всеми глюками (никак не исправлены

Характерная особенность 550 UART, что в нем глюков нет smile.gif все исправлены за десятиления smile.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Mar 17 2007, 16:05
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Цитата
Характерная особенность 550 UART, что в нем глюков нет

Это точно - не баги, а фичиwink.gif
...Если долго гладить против шерсти, то шерсть уляжется, и будешь гладить по шерсти...(С)


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 17 2007, 16:32
Сообщение #19


Гуру
******

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



Цитата(sensor_ua @ Mar 17 2007, 15:05) *
Это точно - не баги, а фичиwink.gif

А почему множественное число? Если серьезно, то из наблюдаемых мной достаточно многочисленных попыток "наехать" на '550' в конце концов "проблемы" сводились к невозможности узнать количество cвободного места в TxFIFO в призвольный момент времени. Откуда это "фича" идет - прнятно - от совместимости с '50', который FIFO не имел. Обходится легко, как в Embedded железках, так и на любом PC c тем-же '550' на борту. Собствено отсутствие особой проблемы подчеркивается и тем, что продвинутых '550' выпускается достаточно много - увеличивают размеры FIFO, скорости под мегабит, аппаратный RTS/CTS, автодетект скоростей... Но остального не меняют.
Еще имеете "проблемы"?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Mar 17 2007, 16:56
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



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


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 17 2007, 17:24
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Дядьки, скажите плиз, сколько Пхилипс кушает на 50 Мгц например ? Разногласия у нас с товарищем.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 17 2007, 17:48
Сообщение #22


Гуру
******

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



Цитата(sensor_ua @ Mar 17 2007, 15:56) *
Отсутствие FIFO для LSR - нельзя доверять всему содержимому FIFO приёма при, например, FE,

На практике знание, что в пришедшем фрейме один байтик с Frame Error ни к чему другому, как к перерередаче всего фрейма привести не может sad.gif. Знание того, что ошибка конкретна была в "третьем байте с краю" вполне бесполезно.
Наличие LSR в FIFO имеет некоторый смысл при передаче одиночных (не сгрупиррованных) самодостаточных байтов.
В нормальных линиях ошибок просто НЕТ smile.gif - личный многолетний опыт с логированием ошибок. Для жутких условий - все аппаратные контроли UART вообще нафиг а сэкономленые parity bit-ы использовать для нормального CRC.
Цитата
а при чтении LSR могут сбрасываться прочитанные биты,

Ну написано так, что можно подумать, что биты то сбрасываются когда захотят, то не сбрасываются когда надо smile.gif. На самом деле сбрасываются при чтении те самые биты ошибок...
Любой вариант из двух возможных имеет свои достоинства и недостатки. Если хочется не сбрасываемых, то просто хранится копия LSR, что в большинстве случаев более разумно, чем тратить время на доступ к медленной периферии для "посмотреть" и "сбросить". Я лично предпочитаю сбрасываемые чтением флаги и при необходимости хранение их в памяти.
Цитата
т.е. в полудуплексе как-то поллить ещё можно, а в дуплексе (да и в полудуплексе для управления 485-м) конец передачи только таймером выгребать.

Конец передачи - прерывание по THRE + для тупых 485 применений последующий опрос TEMT.
Хоть в дуплексе, хоть нет.
Цитата
ну и тем самым LSR читался только в одном месте.

Макрос вместо команды прямого чтения LSR и все будет читаться и сохранять флаги "в одном месте".
Цитата
практически всех поучительно/развлекательных материалах по этому поводу такая чушь...

"поучительно/развлекательных" материалы лучше вообще читать sad.gif надо только мельком. Чушь там совершенно обычное дело вне зависимости от фирмы и авторства sad.gif. Думать, пробовать, привлекать собственный опыт и еще раз думать.

P.S.
Я отнюдь не идеализирую '550' - встречал и много-много лучше, но он вполне удачен и сбалансирован, что и обеспечило ему долгую жизнь.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 17 2007, 18:53
Сообщение #23


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(zltigo @ Mar 17 2007, 16:48) *
Я отнюдь не идеализирую '550' - встречал и много-много лучше, но он вполне удачен и сбалансирован, что и обеспечило ему долгую жизнь.
Но встраивать в новый 32-битный процессор убогий 8-битный(!) уарт разработки 30-летней давности - несколько, гм, странновато.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Mar 17 2007, 19:32
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 17 2007, 20:34
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 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 - также - твоё мнение.

А куда его битый? На хлеб намазывать или что еще sad.gif
Цитата
Так когда, через какое время опрашивать этот TEMT?

Сразу и опрашивать до получения удовлетворения.
Цитата
нахрена мне его ждать на низких соростях, например?

На низких - ждет задача под это дело заточенная smile.gif
Цитата
иначе нахрена мне для UARTа ещё и таймер заряжать? Я, по правде, обычно заряжаю, но на то есть другие причины.

Ну вот - решение - таймер, причем не только по этой причине smile.gif.
Иногда можно и банальный пустой байт посылать вместо таймера. Собственно если "проблема" решается обычно несколькими строчками кода - написал и забыл, то это не проблема smile.gif У меня обычно проблем больше, ибо контроллер со всеми его "проблемами" это самый маленький чип из используемых. В тех других проблем и необходимости их обхода на порядки больше sad.gif sad.gif sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Mar 17 2007, 21:05
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Цитата
А куда его битый?

Ещё раз - битый только последний байт. О пакете говоришь ты. Не надо путать святое с праведным. Ещё раз - мусор после пакета из линии HART ВСЕГДА!!! Что мне ВСЕ пакеты нафиг??? Тебе лишь бы отстоятьwink.gif

Цитата
Сразу и опрашивать до получения удовлетворения.

wink.gif Есть же чем заняться. Как опрашивать, когда занят другим, мне объяснять ненужно. Просто элементарная недоделка (я бы сказал ошибка) в кремнии вынуждает её окучивать - дайте прерывание по TEMT и будет мне счастье - ан нет - песню заводят - типа "всю Одессу устраивает, а тебя нет" - бери весь опыт за столько лет и вперёд...

Цитата
На низких - ждет задача

А почему это какой-то UART меня должен на ОС сподвигнуть? Я вааще нафиг не понимаю, почему переключение передачи должно выноситься из драйвера в задачу. Я это в DPC засовываю. И у меня для этого свой маленький шедулер на уровне BSP. Но я бы для суперзадачиwink.gif переключения передачи и DPC не использовал, если бы крутые перцы из филипса дали мне прерывание.

Цитата
Ну вот - решение - таймер, причем не только по этой причине .Иногда можно и банальный пустой байт посылать вместо таймера.

Вопрос же не в решении, а в том, что лишние телодвижения из-за кривости (не окончательнойsmile.gif кремния. А насчёт пустого байта - иногда пользую, но не везде, сами понимаете, это хорошо. С LPC решил с этой практикой завязать - девайсы с MODBUS RTU - оно обязываетwink.gif)

Цитата
В тех других проблем и необходимости их обхода на порядки больше

Если не секрет, какой кремний так радует?


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 17 2007, 22:31
Сообщение #27


Гуру
******

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



Цитата(sensor_ua @ Mar 17 2007, 20:05) *
Тебе лишь бы отстоятьwink.gif

Мне вообще-то все равно sad.gif.
Цитата
дайте прерывание по TEMT и будет мне счастье

Счастье никогда не бывает полным sad.gif.
Цитата
А почему это какой-то UART меня должен на ОС сподвигнуть?

ОС должна быть вне зависимости от UART и отсутствия в нем желаемых фич smile.gif smile.gif smile.gif smile.gif
Цитата
Если не секрет, какой кремний так радует?

Абсолютно любой описание которого превышает 500 страниц sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Mar 17 2007, 22:46
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Цитата
Абсолютно любой описание которого превышает 500 страниц .

Учтуwink.gif Только что посмотрел объём user Guide LPC2364/66/68/78 - 612 страницwink.gif))
Мануалы XSсale вааще смотреть не пойду! Пока пива в холодильнике только на LPC 8-D


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
serj_obninsk
сообщение Apr 10 2007, 13:55
Сообщение #29


Участник
*

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



Цитата(beer_warrior @ Mar 17 2007, 16:37) *
...из самых заметных - прибацанный I2C...


Тааак smile.gif А можно с этого момента поподробнее??? Эррату читал, вроде ничего фатального про i2c не нашёл...

Сообщение отредактировал serj_obninsk - Apr 10 2007, 13:56
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 06:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01554 секунд с 7
ELECTRONIX ©2004-2016