pokk писал(а):EEPROM по нужному мне адресу ?
Так пробовали:
Код: Выделить всё
char arr[5] @0x0100?
pokk писал(а):как стереть всю EEPROM ?
Создать, записать - не получается?
pokk писал(а):EEPROM по нужному мне адресу ?
Код: Выделить всё
char arr[5] @0x0100pokk писал(а):как стереть всю EEPROM ?
Так пробовали:
Создать, записать - не получается?
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 писал(а):для чего вы в прерывании делаете запрет прерываний?
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 злая вещь. Пока просто тахометр у меня, но возможно в будущем придётся дополнить код какими-либо наворотами, а там от такой задержки может плохо стать![]()
Тоесть с включением/отключением таймеров лучше не баловаться?
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