kras писал(а):Собрал новую схему с другим дисплеем LCM1602K - нет ответа от нее. Поэтому вопрос в алгоритме, наверное, что-то не так понимаю. Все делаю на CVAvr.
4. Для теста припаял диод к выходу PORTB.0 и сделал делитель напряжения для ножки PORTA.0 (подумал, может АЦП есть).
5. Написал программу для мигания PORTB.0, заработала, но время идет некорректно: delay_ms(999) длится не 1секунду, а дольше раз в 8.
6. Пошел дальше, кинул стандартный код LCD с нета. Не заработало, хотя в PROTEUS все ок!
7. Решил воспользоваться генератором кода, там по умолчанию частота 8МГц, подключил LCD, добавил 3 строчки из проекта пункта 6, итог:Код: Выделить всё
#include <mega8515.h>
// Alphanumeric LCD functions
#include <alcd.h>
// Declare your global variables here
void main(void)
{
char *_str="Hell!"; //Создаем выводимую строку
// Declare your local variables here
// Input/Output Ports initialization
// Characters/line: 16
lcd_init(16);
//#asm
// .equ __lcd_port=0x15 ;PORTC
//#endasm // Инициализируем PORTC как порт ЖКИ
}
Прошиваю FLASH, при этом фьюзы не меняю. Дисплей молчит! А в Proteus все ок.
8. Кручу резистор вправо-влево - ноль эмоций у LCD.
Больше ничего не делал. Если я все необходимое назвал, то где мог ошибиться?
LCD подключал еще на CVAVR первой версии. Использовал и встроенную библиотеку и свою. С этих позиций мне кажется херню вы пишите.
Надо сначало
//#asm
// .equ __lcd_port=0x15 ;PORTC
//#endasm // Инициализируем PORTC как порт ЖКИ
а потом
lcd_init(16);
А то как вы иницизируете lcd, если вы порт не установили, где вход, где выход?
Возмите автоматически генерируемый код CVAVR.
А вот фьюзы менять надо. Судя по всему в мк используется внутренний генератор на 1МГц. А вы пишете код на 8МГц
ЧИТАЙТЕ ДАТАШИТ. СКОЛЬКО РАЗ ВАМ ЭТО НАДО ПОВТОРИТЬ.
(подумал, может АЦП есть) А ДАТАШИТ ДЛЯ КОГО?
Привожу рабочий код для меги 8. Две штуки. Сам изучал чей-то пример. Если и это не поможет, то
