Цитата(GVC @ Apr 29 2008, 18:59)

Покажите что и как вы делаете, ну а мы уже скажем так или не так делает.
Конфигурирование таймера и прерывания этож класскика жанра. Показуйте свой код ...
Забыл подписаться, поэтому не отвечал.
Код
#include <pic12F6x.h>
int time;
void interrupt Times(void)
{
if (++time==3906)
{
unsigned char to_delay=0;
while (++to_delay<6)
{}
time=0;
_asm NOP _endasm
time=0;//
time=0;//Вообщем надо как-то паузу сделать,
TMR0=0;//по грамотному, а то вдруг компилер сменил и всё, не пашет.
GPIO=!GPIO;
}
T0IF = 0;
}
main()
{
int x;
GPIO=0;
CMCON=7;
TRISIO=254;
GPIO=0;
GIE=1;
T0IE=1;
T0CS=0;
PSA=1;
TMR0=1;
for(;;) {}
}
Собственно сейчас у меня компилера нет поэтому протестить особо не могу, но по памяти, что-то типа такого делал. И работало оно как надо, по крайней мере за неделю ни на секунду не сдвинулось.
Алгоритм простой, таймер инкрементиться каждые 256 машинных циклов таймер вызывает прерывание и увеличивает переменную
time на 1. Секунда проходит через 1000 000 машинных циклов или через 3906 прерываний и ещё 64 такта. Вот у меня и вопрос, как сделать чисто на С, чтобы любой другой компилятор поставил и всё работает. Хочется знаете, увидеть как делают мастера.
Цитата(rezident @ Apr 29 2008, 21:00)

Таймер разрядности менее, чем 32 можно программно расширить до 32-х разрядов. А с помощью 32-х разрядного уже можно отмерить интервал в 1с даже при тактовой 4ГГц.
Знаю. Проблем со "сделать" нет. Не хочется быть умным программистом, который тупым кодом делает гениальные вещи. Хочется делать красиво. Вот Вы мне скажете. Я посмотрю и подумаю: "Ёлки палки, да ведь здесь же надо в таком направлении двигаться, такие книжки читать и т.д.".
P.S.
Сомневаюсь, что буду когда-нибудь использовать такие бешеные частоты