Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 12/27/15 in all areas

  1. 1 point
    Оставлю свои наработки на сайте. Вдруг потеряются или пригодятся кому. bootloader Самозагрузчик для AVR минимального размера, использующий UART. Запускается автоматически при старте программы, если в течении определенного времени по UART ничего не пришло, возвращается в основную программу. Написан на ассемблере. Используемые константы: F_CPU - тактовая частота контроллера (Гц) TIMEOUT_SEC - время до перехода в рабочий режим (сек) UART_BAUD - скорость UART (бод) . pinmacro.h Набор макросов на Си для удобного назначения и использования портов. Пример объявления: #define ANY_PORT C,2 Пример использования: PORT_0( ANY_PORT ) - установить PORTC2 в лог.0, эквивалентно PORTC &=~(1<<2); DDR_1( ANY_PORT ) - установить DDRC2 в лог.1, эквивалентно DDRC |= (1<<2); PIN_1( ANY_PORT ) - возвращает логическое значение, равное уровню на PINC2, эквивалентно (PINC & (1<<2)) PIN_0( ANY_PORT ) - возвращает значение, противоположное уровню на PINC2, эквивалентно (!(PINC & (1<<2))) И другие. . lcd.h Библиотека на Си для работы с дисплеем на контроллере HD44780 по 4-проводной шине. Требуется набор макросов pinmacro.h. Линии RS и E могут располагаться на любых портах, RW не используется. Используемые макросы: #define LCD_DATA С,2 - куда подключены линии данных D4-D8 дисплея. В данном случае, это PC2-PC5 #define LCD_RS B,0 - куда подключена линия RS. В данном случае PB0 #define LCD_E D,3 - куда подключена линия E. В данном случае PD3 #define LCD_NUM_STR 4 - сколько строк поддерживает дисплей. В настоящее время реализованы 2-х и 4-х строчные дисплеи. Этот макрос используется для получения адресов строк LCD_STR_1, LCD_STR_2, LCD_STR_3, LCD_STR_4, их и рекомендуется использовать. Функции: lcd_init(); - в комментариях не нуждается lcd_cur_*(); - установка формы и размера курсора. На выбор 4 варианта: cd_cur_small(); - нижнее подчеркивание lcd_cur_large(); - мигающее знакоместо, здоровенный прямоугольник lcd_cur_two(); - оба вместе lcd_cur_hide(); - курсор не виден lcd_goto(unsigned char addr); - позиционирование в нужной точке. Адресация абсолютная, так что для обращения к отдельным строкам придется использовать макросы lcd_goto(LCD_STR_2+8); - 2 строка 8-й символ. lcd_enable() / lcd_disable(); - перевод линий, используемых дисплеем в рабочее / нерабочее состояние, на случай, если на них висит что-нибудь еще. lcd_str(const char *ch) / lcd_str_P(const char *ch); - вывод строки (стандарта Си, то есть заканчивающейся \0), из ОЗУ или из flash. Названия сделаны по шаблону strcmp / strcmp_P и подобных стандартных библиотек. lcd_data(char data) - посылка байта данных. Осторожно! устанавливает бит RS в лог.1 Полусистемные макросы и функции. Для штатного использования они не предназначены, но, учитывая, что библиотека писалась под себя, что-то мог забыть. Например, запись собственных символов в память, или последовательность команд, которые не надо разделять постоянной установкой бита RS. Однако, при их использовании стоит соблюдать осторожность и, желательно, просмотреть исходный код и предупреждения. lcd_send(unsigned char data); - посылка байта в дисплей. Биты RS и E, как и настрокйи порта (DDR) не меняются lcd_cmd(char cmd); - посылка команды. Обычно не нужна, так как написаны более специализированные макросы, вроде lcd_goto или lcd_cur_* Осторожно! Устанавливает RS в лог.0. bootloader.tar.gz pinmacro.tar.gz lcd.tar.gz
  2. -1 points
    Этот топик создан для тех пользователей, кто в названии своей новой темы хочет употребить одно из вышеприведенных слов, т.е. кто не умеет или не знает как правильно называть темы. Все остальные темы с вхождением данных слов будут удаляться без предупреждения! Для всех остальных - велкам в основной форум. Если Ваш вопрос связан с поиском какого-либо решения (схемы, проекта, задачи и т.п.), то уточняйте Ваш уровень знаний. Перед созданием новых тем не забываем читать правила нашего форума. Они не сложные и типовые, как и на большинстве форумов рунета
×
×
  • Create New...