Спасибо конечно, но вот разрешение прерываний не дает работать ЖКИ..
Для чистоты эксперимента убрал все лишнее, убрал инициализацию таймера, убрал обработчик прерывания - просто сделал sei - перезагружается..
УХ ТЫ!!!! Посмотрите код!
Запретил прерывания, инициализировал экранчик. Поставил задержку в 3 секунды - чтобы хоть посмотреть на черный экран.
Затем включил прерывания. - Экран стал моргать с периодичнстью в 3 секунды.
ЭТО НЕ ЖКИ, ЭТО КОНТРОЛЛЕР РЕСЕТИТСЯ. Почему? Куда копать?
Вот код:
Код
#include <mega32.h>
#include <delay.h>
#include <disp.h>
#include <stdio.h>
#include <defines.c>
//****************************************************
#define INT_ON #asm("sei")
#define INT_OFF #asm("cli")
u08 variable;
ui16 textcolor; // color of text
ui16 backcolor; // color of background
ui16 varvar;
volatile int cycle=0;
///////////////////////////////////////////////////
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
//lcd_setxy(2,15);
// lcd_str_fl("timer_ovfl",f8x14,green);//ñòðîêà èç flash
cycle++;
}
void main(void)
{
INT_ON;
/*
TCCR1A=0x00;
TCCR1B=0x03;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
*/
//=================================================
varvar = 4500 + 60123;
INT_OFF;
lcd_init();
backcolor=black;
textcolor=yellow;
lcd_clr();
fill_screen(black);
delay_ms(3000);
INT_ON;
}
Для общей информации - вот библиотека ЖКИ
При этом регистр MCUCSR=0x03, то есть оба бита равны 1