|
Переход Philips->Atmel |
|
|
|
Mar 16 2007, 14:14
|
Участник

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

|
Здравствуйте, господа. Изложу вкратце суть проблемы. Программил я потихоньку на МК LPC210x, и теперь волею судьбы (а точнее, нынешнего работодателя  ), перехожу на Atmel AT91SAM7S. Первое впечатление - куда я попал?!!! Вроде опыт работы с процом ARM-архитектуры имеется, а всё равно с ходу ничего не понятно. Такими же остались только команды и архитектура регистров общего назначения. Ну да с этим понятно, это и есть архитектура. Теперь о грустном. ВСЯ периферия другая Мой вопрос: подскажите, с чего начать осваивать атмелы, где взять примеры кода, есть ли книжка наподобие "Микроконтроллеры LPC2000" Тревора Мартина.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 28)
|
Mar 16 2007, 15:30
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 3-11-06
Из: Kiev
Пользователь №: 21 933

|
Я бы начал с чтения errata, очень полезный документ! Внимательно про всю используемую периферию, а про PLL в первую очередь. А так.. ничего страшного.
|
|
|
|
|
Mar 16 2007, 15:33
|
Участник

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

|
Цитата(SpiritDance @ Mar 16 2007, 15:01)  Поздравляю. В свое время тоже попал в такую сетуевину, слегка охренел. Тем более что начинать приходилось с поддержки достаточно сложного проекта а не спримеров. Жесть. Осваивал постольку поскольку, постепенно, через сношения с переферией кристалл, иногда в неприглядных позах.  ) Ясненько  Веселуха намечается! Цитата(SpiritDance @ Mar 16 2007, 15:01)  С этим камнем посоветую начинать прямо с исходников, заглядывая в даташит, а не наоборот. Обрадую - книжки нет!! Дык а где взять исходники посложнее мигания светодиодами? С LPC2000 я в своё время быстро разобрался, начав с книжки, а затем читая даташит и исходники. Здесь первый этап отсутствует как класс
|
|
|
|
|
Mar 16 2007, 16:16
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288

|
На сайте атмел например http://atmel.com/dyn/products/tools.asp?family_id=605можно также на at91.com полазать. По этому форуму посмотрите, здесь тоже много всякого по этим армам. Где-то здесь была ссылка на русскоязычную инфу по этим камням. Там кое что есть. Могу и я конечно скинуть исходники, но боюсь они станут для Вас кошмаром. Кстати светодиодом моргнуть на этом кристалле уже достаточная проблема для новичка.  ))
--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
|
|
|
|
|
Mar 16 2007, 18:30
|
Участник

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

|
Цитата Не понимаю нафиг тебе переходить. Я вот обратно с SAM7 перехожу на LPC Более современные модели лишены LPC многих своих недостатков и на данный момент эта ветьвь гораздо привлекательнее. Я ж говорю - не по своей воле. Заказчик хочет так  Цитата На gaw.ru есть руское описание переферии сам7. А вот за это СПАСИБО!!! Отличное описание, на мой первый взгляд. Цитата Могу и я конечно скинуть исходники, но боюсь они станут для Вас кошмаром. Кстати светодиодом моргнуть на этом кристалле уже достаточная проблема для новичка.  )) Да вроде ничего проблемного в примерах (от IAR) я не вижу. А надо бы срочно перейти от примеров к аналого-цифровому преобразованию, I2C, SPI, CAN, да чтобы всё это добро от прерываний крутилось, не занимая ценного процессорного времени
|
|
|
|
|
Mar 16 2007, 23:57
|

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

|
Цитата(serj_obninsk @ Mar 16 2007, 13:14)  Мой вопрос: подскажите, с чего начать осваивать атмелы, Берем файл описания регистров из компилятора, тупо копируем в исходник, удаляем все кроме имен регистров, далее берем первый регистр, читаем его описание в даташите, думаем чем его надо проинициализировать в нашей конструкции. И так со всеми регистрами. Когда список закончится - имеем целостное представление о всей периферии. Осваивал так LPC, потом SAM7, потом ADuC. Весь процесс занимает день-два. Цитата(serj_obninsk @ Mar 16 2007, 13:14)  где взять примеры кода, Создать самому на основании чтения даташита. На начальном этапе гораздо эффективнее чем копаться в чужом коде. Во всяком случае для меня.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 17 2007, 13:49
|
Гуру
     
Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493

|
чего обосновывать ? DMA на перефирию нету, тока жрет немерянно, половина ног блин - не дай бог куда-нить не туда подтянешь - будет либо крутиться в буте, либо JTAG отрубится либо еще чего, USB движок вообще пьяные индийцы писали, пулл-апов встроенных отключаемых нет, шины I2C open drain only (атмелю никто не помешал верхние транзисторы оставить), ОЗУ мало, возможности зашить чип через USB - нет, защита от копирования слаба настолько, что даже говорить неохота, документация отвратная... короче МУРА Из преимуществ - только MAM - и тот только немного позволяет компенсировать тормознутость перефирии а усе PS возражать мне не надо - нравится с ним трахаться - трахайтесь. Мне тоже приходится.
|
|
|
|
|
Mar 17 2007, 15:23
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Внятно о минусах - только плохая (вроде уже у "новых" поправили) защита, отсутствие встроенных подтяжек у 21-й серии и отсутствие загрузки кода (первый раз) по USB. Я бы добавил 16550 UART со всеми глюками (никак не исправлены и, похоже, это принципиально;( ). Остальное, ИМХО, от предвзятости и "неумения их готовить". Ещё ты забыл пару плюсов LPC - 32-бит таймеры с внятными приспособами, FastIO (DMA - нафиг). Загрузчик через USB от yuri_t есть http://www.tnkernel.com/usb_fw_upgrader.html (интересно, почему Юрий Тёмкин решил поддержать не Атмел? - уже здесь обсуждалось). Альтернативы 23-й серии по факту у Atmel вааще нет (с подтяжками/растяжками и с опендрейн ногами филипs решил "пойти навстречу пожеланиям трудящихся", проложил приятные 2K NVRAM). У меня на одном таймере LPC2138, запущенном с тиком 100 нс и никогда не выключающемся, реализованы системный таймер, интервальный таймер и DPC (deferred procedure calls). При этом пока не нашёл, нафига мне второй  , а в 2378-м их вааще аж 4... SPI + 2 SSP..., ещё не пробовал встроенный контроллер SD/MMC... Конечно, есть моменты, где свои преимущества у Atmel, но рьяно хаить LPC не стОит.
--------------------
aka Vit
|
|
|
|
|
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
|
|
|