Alexashka 0 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба 2 zltigo: теперь и я увидел насколько все плохо :crying: по правде сказать я эти исходники толком не смотрел, но конструкции и правда нелепые. кстати в вашем варианте видимо нужно вставить обнуление двух последних битов -четности (9) и стопового (10), последний всегда =1. и еще объясните невежде что делает последняя строчка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 30 июля, 2008 Опубликовано 30 июля, 2008 (изменено) · Жалоба ...теперь и я увидел насколько все плохо Это далеко не самый дивный код - посмотрите любимый многими LCD 2x16 вот там полный отвал башки. кстати в вашем варианте видимо нужно вставить обнуление двух последних битов -четности (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 ); Изменено 30 июля, 2008 пользователем zltigo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexashka 0 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба Кстати, неиспользуемые переменные, например передаваемые аргументы, эффектнее заглушать так: (void)dum; Для читабельности можно макросик пользовать: #define USED(foo) (void)(foo) USED( dum ); ясно...спасибо кстати, хорошо бы стелать рубрику "полезные советы" :) и добавлять туда такие кусочки кода Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба Для читабельности можно макросик пользовать: USED( dum ); Для читабельности лучше обозвать "ignore". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
libricon 0 5 августа, 2008 Опубликовано 5 августа, 2008 · Жалоба книгу можно скачать отсюда : http://www.infanata.org/civil/hardware/114...semejjstva.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
radiofill 0 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба Да. Эта книга "" будет полезна только как datasheet на русском языке, а про работу с IAR и примеры на С лучше пропустить - дабы мозг свой не засорять. В качестве скромного примера как писать на языке Си, могу приложить написанную мной библиотеку для работы с LCD 4470, правда для AVR. А в качестве учебника по языку Си кроме оригинального учебника лучше ничего не видел, в нём всё грамотно и достаточно просто описано (файл прилагается) lcd.rar Kernighan_Ritchie__C_programming_Language__rus.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
libricon 0 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба спасибо, почитаю всё так ритчи Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба В качестве скромного примера как писать на языке Си, могу приложить написанную мной библиотеку для работы с LCD 4470 О Господи! Ну не надо так писать на С. Начиная с того, что это никак не "библиотека", извращеного использования хидера, мрачных 0bXXXXXX и совсем не сишных, "задержек от фонаря", asm( "nop" ), именования перменных и функций заглавными буквами, и прочего прочего... При этм тупейшая, лобовая работа с собственно 4470, ни разных режимов, ни опроса готовности, ни загрузки знакогенератора, ни чтения, ни сколь-нибудь реальных диаграмм (для нормального ARM там повылезают требования по выдержке сотен наносекунд ).... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tyro 0 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба О Господи! ... тупейшая, лобовая работа с собственно 4470, ни разных режимов, ни опроса готовности, ни загрузки знакогенератора, ни чтения, ни сколь-нибудь реальных диаграмм (для нормального ARM там повылезают требования по выдержке сотен наносекунд ).... Не сочтете ли Вы возможным, в качестве позитивной части обсуждения, выложить код (по возможности с комментариями), как надо делать? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба Не сочтете ли Вы возможным... Что делать? Писать на С, или работать с LCD? Это в общем-то разные вещи. Если речь идет о поминаемой "библиотеке", то там комментировать и править совершенно нечего - все с 0. Если о C - то есть хорошие книги - по тому-же стилю поминал на форуме недавно Ритчи и Пайка... Если о том,как с текстовой железякой LCD работать - пожалуй могу несколько кусочков выложить - приходилось как-то один раз работать - результаты оформленные ввиде заготовки сохранены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
radiofill 0 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба О Господи! Ну не надо так писать на С. Начиная с того, что это никак не "библиотека", извращеного использования хидера, мрачных 0bXXXXXX и совсем не сишных, "задержек от фонаря", asm( "nop" ), именования перменных и функций заглавными буквами, и прочего прочего... При этм тупейшая, лобовая работа с собственно 4470, ни разных режимов, ни опроса готовности, ни загрузки знакогенератора, ни чтения, ни сколь-нибудь реальных диаграмм (для нормального ARM там повылезают требования по выдержке сотен наносекунд ).... Согласен задержки лучше через счётчик сделать, но эт будет тяжеловато для поимания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
radiofill 0 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба О Господи! Ну не надо так писать на С. Начиная с того, что это никак не "библиотека", извращеного использования хидера, мрачных 0bXXXXXX и совсем не сишных, "задержек от фонаря", asm( "nop" ), именования перменных и функций заглавными буквами, и прочего прочего... При этм тупейшая, лобовая работа с собственно 4470, ни разных режимов, ни опроса готовности, ни загрузки знакогенератора, ни чтения, ни сколь-нибудь реальных диаграмм (для нормального ARM там повылезают требования по выдержке сотен наносекунд ).... Не судите строго - я самоучка, спросить совершенно некого. Может у меня книги плохие были?... Учился сначала по "учебнику" по AVRам, Голубцов вроде автор был. Но недавно осозал что лучше родных даташитов ничего не найдёшь.... А заголовочник для 4470 отлично работает, задержки для тактовой частоты 14 МГц. Функция проверки готовности BF_READ()... Можно было готовый заголовочник взять, но захотелось попрактиковаться. И опять же по поводу книг, кроме книги Редькина по ARMам на русском языке ничего не нашёл :-/ Хотелось бы посмотреть на вашу библиотеку для LCD. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Qwertty 0 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба Согласен задержки лучше через счётчик сделать, но эт будет тяжеловато для поимания. В АВР задержки через таймер расточительно. Но задержки это самая малая часть проблемы. Вы в заголовочном файле размещаете не инлайновые функции и переменные! Представьте ситуацию, что вывод на LCD потребуется сделать из двух модулей - вы подключите этот заголовок в каждый модуль и в результате получите все функции и переменные в двух экземплярах. Естественно линкер будет нецензурно ругаться. Правда CV сам не стандартный и линкера не имеет вовсе, вот и появляются на свет такие странные конструкции. Если Вас устраивает - пользуйтесь, но никому не показывайте. :) Кстати двоичной записи в стандарте C нет. Вы книжку то почитайте... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 17 августа, 2008 Опубликовано 17 августа, 2008 · Жалоба Хотелось бы посмотреть на вашу библиотеку для LCD. Могу дать, только это не претендует на некую супер библиотеку, это просто аккуратно с пониманием того, что делается написанный код, который при необходимости достаточно легко модифицируется под разные условия использования и разное железо. Писался вкупе с лабораторной работой и меню в свое время где-то за субботний день, потом по мелочи добавлялся.... Для публикации не предназначался. Предназначается в текущем виде для LPC2000. На вопросы, в том числе и каверзные могу ответить :) lcd_z.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
radiofill 0 18 августа, 2008 Опубликовано 18 августа, 2008 · Жалоба В АВР задержки через таймер расточительно. Но задержки это самая малая часть проблемы. Вы в заголовочном файле размещаете не инлайновые функции и переменные! Представьте ситуацию, что вывод на LCD потребуется сделать из двух модулей - вы подключите этот заголовок в каждый модуль и в результате получите все функции и переменные в двух экземплярах. Естественно линкер будет нецензурно ругаться. Правда CV сам не стандартный и линкера не имеет вовсе, вот и появляются на свет такие странные конструкции. Если Вас устраивает - пользуйтесь, но никому не показывайте. Кстати двоичной записи в стандарте C нет. Вы книжку то почитайте... Почему через таймер расточительно? а как же тогда? если задержка к примеру 30ms? Про модуль не совсем понял. Вы про то, что надо в начале написать чтото вроде: #if !defined(LCD.h) #define LCD.h ...... #endif А насчёт двоичной записи- мне так проще было с флагами эксперементировать :laughing: ... а книгу по ARMам я так и не нашёл(... Редькин не в счёт Может хоть ссылка у кого есть? В частности хотелось бы понять как в AT90 Linux запихать и как потом с этим управляться Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться