Пт сен 07, 2012 23:53:57
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.
Больше ничего не делал. Если я все необходимое назвал, то где мог ошибиться?
Вс сен 09, 2012 09:36:30
Вс сен 09, 2012 10:36:35
Вс сен 09, 2012 22:30:51
kras писал(а):Нашел сайт по фьюзам:http://www.engbedded.com/fusecalc. Но есть сомнения, поэтому просьба разъяснить. Если хочу работать с внутренним резонатором на 8Мгц, то подойдет то, то на рисунке?
А тогда можете показать, как этот код будет выглядеть для Atmega8515? А то у меня сейчас каждая ошибка на счету:)
Вс сен 09, 2012 23:26:55
Пн сен 10, 2012 13:42:22
vitalik_1984 писал(а):ds1307 Вспомните себя в молодости, не стоит так кричать.Мне вот лично не все понятно из даташита особенно фьюзы разбросаны.
Пн сен 10, 2012 16:37:22
Пн сен 10, 2012 17:28:23
Вт сен 11, 2012 03:11:33
Вт сен 11, 2012 07:44:04
Вт сен 11, 2012 11:42:20
#include <mega8515.h>
// Включение для любой марки дисплея с соответствующим интерфейсом
#include <alcd.h>
void main(void)
{
char *_str="Hello"; //Создаем выводимую строку
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm // Инициализируем PORTC как порт ЖКИ
lcd_init(16);
lcd_gotoxy(0, 0); // Переводим курсор на первый символ первой строки
lcd_puts(_str); // Выводим строку _str на дисплей
while (1){ // безконечный цикл, а на дисплее все еще держится информация
};
}
Вт сен 11, 2012 13:22:02
Вт сен 11, 2012 17:26:18
kras писал(а):Давайте еще раз, хоть узнать, с чем примерно у меня косяки. Допустим, по железу все норм. Тогда остается проверить программу и процесс прошивки.
Фьюзы?
lawr писал(а):в железе вывод R/W индикатора должен сидеть на массе. Если он сидит на меге и там единица - то ты постоянно "читаешь" из индикатора и ты на нем ничего не увидишь
Вт сен 11, 2012 17:40:01
Вт сен 11, 2012 17:43:05
У вас 00, а это для случая когда BOD включен, а вы его не активировали
Вт сен 11, 2012 18:10:56
Вт сен 11, 2012 18:38:13
если при выкручивании резистора на контрастности в крайние положения нигде не засвечивается строка из черных квадратиков, то LCD не работает не зависимо от МК
Вт сен 11, 2012 19:36:06
Вт сен 11, 2012 19:48:37
kras писал(а):А сжечь LCD нельзя?...
Вт сен 11, 2012 20:06:31