freon 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Помогите подключить к AVR LCD 16x2 По вот этой схеме!!!! схема в "Шпроте" AVR_164_LCD.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kool 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Помогите подключить к AVR LCD 16x2 По вот этой схеме!!!! схема в "Шпроте" А можно "шпрот" открыть и выложить в pdf, gif, jpg или другом более доступном формате Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба А можно "шпрот" открыть и выложить в pdf, gif, jpg или другом более доступном форматеПрисоединяюсь. Но даже не видя схемы можно предположить, что задача нерешаемая - 74HC165 имеет 8 входов и последовательный выход. Надо ее заменять на 74HC164 или 74HC595. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
freon 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Я извеняюсь за дезу в теме там 74hc164n!!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Я извеняюсь за дезу в теме там 74hc164n!!!!Так в чем вопрос? Что у вас не получается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба В где проблема-то? Подключить три цифровых сигнала к любым GPIO выводам МК это проблема разве? :cranky: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
freon 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Проблема как организовать код на си временные задержки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Проблема как организовать код на си временные задержки?Самое простое решение - пустой циклvoid delay_1_ms() { #define CYCLES_PER_MS 100 // подобрать, чтобы функция исполнялась 1 мс volatile unsigned char i; for( i = 0; i < CYCLES_PER_MS; ++i) ; } void delay_ms(unsigned char time_ms) { while(--time_ms) delay_1_ms(); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Самое простое решение - пустой циклПростое, но не самое оптимальное. Лучше уж разобраться с работой таймера, прерываний и формировать временнЫе паузы с помощью таймера и его прерывания. Или если с прерываниями сложно, то по крайней мере настроить таймер на работу с переполнением кратным той же самой 1 мс, и выполнять опрос флага переполнения таймера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба А еще лучше использовать SPI и горя не знать. Все само собой делается. Хотя и программно дергать - задержки могут и не понадобиться. У меня SPI работает на 4 мгц (OSC/2). При этом сам проц на одной плате, а регистр на другой в 20 см от него (плоский шлейф). 4 Мгц программно и не сделать. Так что можно и без задержек. Все от платы зависит, от обвески. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба А еще лучше использовать SPI и горя не знать. Все само собой делается.Без программных задержек все равно не обойтись. Модуль SPI реализует только аппаратную загрузку данных в сдвиговый регистр, но времянку записи/чтения самого LCD-модуля SPI никак "сам собой" не сделает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Ну, "та" времянка вообще не нуждается в задержках. Вернее, эти задержки будут происходить вполне самостоятельно. Даже слишком медленно будет. И без задержек. А для каких-то больших задержек просто вставляем в первое попавшееся прерывание по таймеру if (delay!=0) delay--; А саму задержку в мэйне delay=123; while (delay!=0); Разрядность delay устанавливаем соответственно аппетиту. Но это употребляется для достаточно больших задержек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Ну, "та" времянка вообще не нуждается в задержках. Вернее, эти задержки будут происходить вполне самостоятельно.Спишем эту часть поста на послепраздничный дурман А для каких-то больших задержек просто вставляем в первое попавшееся прерывание по таймеру if (delay!=0) delay--; А саму задержку в мэйне delay=123; while (delay!=0); И тут же напарываемся на необходимость применения для переменной delay квалификатора volatile. Сказавши "А", говорите уж тогда и "Б". То бишь объясняйте начинающему про прерывания и особенности использования глобальных переменных, модифицируемых в прерываниях. ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
freon 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Спасибо всем откликнувшимся!!!! Я тут нашол схему и проект в ВИНАВР вроде все компилится а результат ноль!! 2wireLCD.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zhevak 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба Господа, хочу напомнить, что у LCD-индикаторов, которые выполнены на базе контроллера HD44780, время исполнения большинства команд примерно одинаковое, а вот пара команд потребуют достатосно много времени. В доках приводятся следующие цифры: команда время [ms] ------------------------------- ---------- Чтение данных 43 Запись данных 43 Чтение флага готовности 0 Запись адреса 39 Установка параметров интерфейса 39 Перемещение курсора 39 Управление дисплеем 39 Перемещение в начало экрана 1530 Очистка дисплея 1530 Данные для этой таблички я взял из своей рабочей теради, Туда они попали из какого-то дэйтшита. В свое время не записал, а за давностью времени уже и не помню. Кроме того, нужно учитывать, что эти времена зависят от температуры. Я не полагаюсь на наличие задержек в коде. Задержки -- это как-то не кошерно. Всегда, тестирую флаг готовности перед очередным обращением к LCD. При этом получается скорость работы -- максимально возможная. Проблем ни разу не было. Поэтому настоятельно рекомендую не заорачиваться на "задержки". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться