|
книги по ARM7, AT91SAM7S |
|
|
|
Jan 28 2008, 14:40
|
Участник

Группа: Свой
Сообщений: 39
Регистрация: 1-02-07
Пользователь №: 24 952

|
Добрый день Всем.
Только только начал изучение микроконтроллеров ARM7(AT91SAM7S) от Atmel. И хотелось бы узнать, существуют ли книги по этим микроконтроллерам и, если есть, то где их можно приобрести.
P.S. Не предлагать документацию на английском и ссылки на описание данного device-а, т.к. хотелось бы найти именно книгу.
Заранее спасибо.
|
|
|
|
|
 |
Ответов
(75 - 89)
|
Jul 30 2008, 07:38
|

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

|
Цитата ...теперь и я увидел насколько все плохо Это далеко не самый дивный код - посмотрите любимый многими LCD 2x16 вот там полный отвал башки. Цитата(Alexashka @ Jul 30 2008, 08:18)  кстати в вашем варианте видимо нужно вставить обнуление двух последних битов -четности (9) и стопового (10), последний всегда =1. Они обнулены изначально в 32bit переменной data и обнуляются после приема последовательности. При использовании их просто обрезать, что и делается для stop. Можете сдвинуть еще на один бит и обрезать четность, но лучше оставить и анализировать/отсеивать потом по полному коду. Естественно, при нормальном подходе к делу их нужно контролировать - я не добавлял контроль start/stop, поскольку ставил целью просто повторить функционал и дать почувствовать разницу. Цитата и еще объясните невежде что делает последняя строчка? То-же самое,что у Редькина 3 строчки: Код U32 dum=0; //разрешить следующее прерывание IRQ1 dum =AT91C_BASE_PIOA->PIO_ISR; dum =dum; //чтобы не генерировалось замечание о неиспольз переменной AT91C_BASE_PIOA->PIO_ISR это volatile, посему компилятор не может выкинуть обращение к PIO_ISR и будет произведено чтение "в никуда", что и требовалось. Кстати, неиспользуемые переменные, например передаваемые аргументы, эффектнее заглушать так: (void)dum; Для читабельности можно макросик пользовать: Код #define USED(foo) (void)(foo) USED( dum );
Сообщение отредактировал zltigo - Jul 30 2008, 07:48
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 30 2008, 08:34
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Кстати, неиспользуемые переменные, например передаваемые аргументы, эффектнее заглушать так: (void)dum; Для читабельности можно макросик пользовать: Код #define USED(foo) (void)(foo) USED( dum ); ясно...спасибо кстати, хорошо бы стелать рубрику "полезные советы"  и добавлять туда такие кусочки кода
|
|
|
|
|
Aug 17 2008, 01:26
|

Участник

Группа: Участник
Сообщений: 26
Регистрация: 21-02-08
Пользователь №: 35 272

|
Да. Эта книга "" будет полезна только как datasheet на русском языке, а про работу с IAR и примеры на С лучше пропустить - дабы мозг свой не засорять. В качестве скромного примера как писать на языке Си, могу приложить написанную мной библиотеку для работы с LCD 4470, правда для AVR. А в качестве учебника по языку Си кроме оригинального учебника лучше ничего не видел, в нём всё грамотно и достаточно просто описано (файл прилагается)
|
|
|
|
|
Aug 17 2008, 08:34
|

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

|
Цитата(radiofill @ Aug 17 2008, 03:26)  В качестве скромного примера как писать на языке Си, могу приложить написанную мной библиотеку для работы с LCD 4470 О Господи! Ну не надо так писать на С. Начиная с того, что это никак не "библиотека", извращеного использования хидера, мрачных 0bXXXXXX и совсем не сишных, "задержек от фонаря", asm( "nop" ), именования перменных и функций заглавными буквами, и прочего прочего... При этм тупейшая, лобовая работа с собственно 4470, ни разных режимов, ни опроса готовности, ни загрузки знакогенератора, ни чтения, ни сколь-нибудь реальных диаграмм (для нормального ARM там повылезают требования по выдержке сотен наносекунд )....
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 17 2008, 08:55
|

Любитель Кошек
    
Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873

|
Цитата(zltigo @ Aug 17 2008, 11:34)  О Господи! ... тупейшая, лобовая работа с собственно 4470, ни разных режимов, ни опроса готовности, ни загрузки знакогенератора, ни чтения, ни сколь-нибудь реальных диаграмм (для нормального ARM там повылезают требования по выдержке сотен наносекунд ).... Не сочтете ли Вы возможным, в качестве позитивной части обсуждения, выложить код (по возможности с комментариями), как надо делать?
--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
|
|
|
|
|
Aug 17 2008, 11:52
|

Участник

Группа: Участник
Сообщений: 26
Регистрация: 21-02-08
Пользователь №: 35 272

|
Цитата(zltigo @ Aug 17 2008, 12:34)  О Господи! Ну не надо так писать на С. Начиная с того, что это никак не "библиотека", извращеного использования хидера, мрачных 0bXXXXXX и совсем не сишных, "задержек от фонаря", asm( "nop" ), именования перменных и функций заглавными буквами, и прочего прочего... При этм тупейшая, лобовая работа с собственно 4470, ни разных режимов, ни опроса готовности, ни загрузки знакогенератора, ни чтения, ни сколь-нибудь реальных диаграмм (для нормального ARM там повылезают требования по выдержке сотен наносекунд ).... Согласен задержки лучше через счётчик сделать, но эт будет тяжеловато для поимания.
|
|
|
|
|
Aug 17 2008, 19:16
|

Участник

Группа: Участник
Сообщений: 26
Регистрация: 21-02-08
Пользователь №: 35 272

|
Цитата(zltigo @ Aug 17 2008, 12:34)  О Господи! Ну не надо так писать на С. Начиная с того, что это никак не "библиотека", извращеного использования хидера, мрачных 0bXXXXXX и совсем не сишных, "задержек от фонаря", asm( "nop" ), именования перменных и функций заглавными буквами, и прочего прочего... При этм тупейшая, лобовая работа с собственно 4470, ни разных режимов, ни опроса готовности, ни загрузки знакогенератора, ни чтения, ни сколь-нибудь реальных диаграмм (для нормального ARM там повылезают требования по выдержке сотен наносекунд ).... Не судите строго - я самоучка, спросить совершенно некого. Может у меня книги плохие были?... Учился сначала по "учебнику" по AVRам, Голубцов вроде автор был. Но недавно осозал что лучше родных даташитов ничего не найдёшь.... А заголовочник для 4470 отлично работает, задержки для тактовой частоты 14 МГц. Функция проверки готовности BF_READ()... Можно было готовый заголовочник взять, но захотелось попрактиковаться. И опять же по поводу книг, кроме книги Редькина по ARMам на русском языке ничего не нашёл :-/ Хотелось бы посмотреть на вашу библиотеку для LCD.
|
|
|
|
|
Aug 17 2008, 19:27
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(radiofill @ Aug 17 2008, 15:52)  Согласен задержки лучше через счётчик сделать, но эт будет тяжеловато для поимания. В АВР задержки через таймер расточительно. Но задержки это самая малая часть проблемы. Вы в заголовочном файле размещаете не инлайновые функции и переменные! Представьте ситуацию, что вывод на LCD потребуется сделать из двух модулей - вы подключите этот заголовок в каждый модуль и в результате получите все функции и переменные в двух экземплярах. Естественно линкер будет нецензурно ругаться. Правда CV сам не стандартный и линкера не имеет вовсе, вот и появляются на свет такие странные конструкции. Если Вас устраивает - пользуйтесь, но никому не показывайте. Кстати двоичной записи в стандарте C нет. Вы книжку то почитайте...
|
|
|
|
|
Aug 17 2008, 21:19
|

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

|
Цитата(radiofill @ Aug 17 2008, 21:16)  Хотелось бы посмотреть на вашу библиотеку для LCD. Могу дать, только это не претендует на некую супер библиотеку, это просто аккуратно с пониманием того, что делается написанный код, который при необходимости достаточно легко модифицируется под разные условия использования и разное железо. Писался вкупе с лабораторной работой и меню в свое время где-то за субботний день, потом по мелочи добавлялся.... Для публикации не предназначался. Предназначается в текущем виде для LPC2000. На вопросы, в том числе и каверзные могу ответить
Прикрепленные файлы
lcd_z.rar ( 2.46 килобайт )
Кол-во скачиваний: 190
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 18 2008, 19:21
|

Участник

Группа: Участник
Сообщений: 26
Регистрация: 21-02-08
Пользователь №: 35 272

|
Цитата В АВР задержки через таймер расточительно. Но задержки это самая малая часть проблемы. Вы в заголовочном файле размещаете не инлайновые функции и переменные! Представьте ситуацию, что вывод на LCD потребуется сделать из двух модулей - вы подключите этот заголовок в каждый модуль и в результате получите все функции и переменные в двух экземплярах. Естественно линкер будет нецензурно ругаться. Правда CV сам не стандартный и линкера не имеет вовсе, вот и появляются на свет такие странные конструкции. Если Вас устраивает - пользуйтесь, но никому не показывайте. Кстати двоичной записи в стандарте C нет. Вы книжку то почитайте... Почему через таймер расточительно? а как же тогда? если задержка к примеру 30ms? Про модуль не совсем понял. Вы про то, что надо в начале написать чтото вроде: #if !defined(LCD.h) #define LCD.h ...... #endif А насчёт двоичной записи- мне так проще было с флагами эксперементировать  ... а книгу по ARMам я так и не нашёл(... Редькин не в счёт Может хоть ссылка у кого есть? В частности хотелось бы понять как в AT90 Linux запихать и как потом с этим управляться
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|