Так пробовали:pokk писал(а):EEPROM по нужному мне адресу ?
Код: Выделить всё
char arr[5] @0x0100Создать, записать - не получается?pokk писал(а):как стереть всю EEPROM ?
Так пробовали:pokk писал(а):EEPROM по нужному мне адресу ?
Код: Выделить всё
char arr[5] @0x0100Создать, записать - не получается?pokk писал(а):как стереть всю EEPROM ?
То что надо благодарю!!!Так пробовали:
ага в принципе так и сделал. Как и испоганил всю EEPROM так же и записал туда FF =)Создать, записать - не получается?
Пробовал инверсным цветом (дисплей монохром 3310) не работаетpyzhman писал(а):Не юзал, но логичное решение - нарисовать пустыми битами.
Код: Выделить всё
#include <mega8.h>
long a=0,b=0,c=0;
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
if(a==0) //считываем таймер в "a"
{
a=ICR1;
}
else //находим разницу
{
b=ICR1;
c=b-a;
TCNT1=0x00;
a = 0;
#asm("cli")
}
}
void main(void)
{
PORTB=0x01;
DDRB=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Normal top=0xFFFF
// Input Capture on Rising Edge
// Input Capture Interrupt: On
TCCR1A=0x00;
TCCR1B=0xC3;
TCNT1=0x00;
ICR1=0x00;
TIMSK=0x20;
#asm("sei")
while (1)
{
}
}В основном цикле. Не ?Эту величину нужно выводить на дисплей 1602. Как правильно организовать задержку в выборке значений и выводе их на экран, ато дисплей не сможет обновляться с частотой в несколько килогерц
Что значит "правильно" ? Delay_Ms не подойдёт ?Как правильно организовать задержку
Код: Выделить всё
int get_dlit(void); // эта функция возвращает длительность импульса
void main(void){
int result;
while(1){
result = get_dlit(); // получаем
out_to_lcd(result); // выводим
delay_ms(1000); // задержка
}
}Хорошая мысль. СпасибоPanda_Y2K писал(а):данные и цифры так сильно скакать не будут
Можно в принципе... Просто хотел таймер присобачить, ато что он без дела висит...Panda_Y2K писал(а):while (i)
Это где?ARV писал(а):для чего вы в прерывании делаете запрет прерываний?
Delay злая вещь. Пока просто тахометр у меня, но возможно в будущем придётся дополнить код какими-либо наворотами, а там от такой задержки может плохо статьARV писал(а):чем не устраивает такой алгоритм опроса и вывода
это там:isx писал(а):Это где?ARV писал(а):для чего вы в прерывании делаете запрет прерываний?
isx писал(а):Код: Выделить всё
#include <mega8.h> long a=0,b=0,c=0; interrupt [TIM1_CAPT] void timer1_capt_isr(void) { if(a==0) //считываем таймер в "a" { a=ICR1; } else //находим разницу { b=ICR1; c=b-a; TCNT1=0x00; a = 0; #asm("cli") // ВОТ ИМЕННО ТУТ } }
сами по себе всякие вещи не злые и не добрые, злыми или добрыми их делают люди.isx писал(а): Delay злая вещь. Пока просто тахометр у меня, но возможно в будущем придётся дополнить код какими-либо наворотами, а там от такой задержки может плохо стать![]()
Тоесть с включением/отключением таймеров лучше не баловаться?
2) Зачем выключать таймер ? сделайте его на какой-то элементарный шаг к примеру 10 миллисекунд и внутри его увеличивайте счётчикisx писал(а):Хотелось бы без delay, мало ли что потом в код дописать нужно будет...
А можно ли сделать так:
1) Включаем 16-ти битный таймер. Делаем замер. Отключаем таймер.
2) Включаем 8-ми битный таймер. Делаем 15 циклов (около 0.5сек).Отключаем таймер.
...
Код: Выделить всё
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
counter++;
}
void main(void){
int result;
while(1){
result = get_dlit(); // получаем
if(counter>100){
out_to_lcd(result); // выводим 1 раз в секуну
counter=0;
}
}
}
Код: Выделить всё
unsigned long int countob = 0;Код: Выделить всё
unsigned long int от 0 до 4294967295