Добавлено: Вт фев 03, 2009 11:18:30
Ога понял, еще на железе не тестил, пока примерный код, а как можно ВООБЩЕ избежать этой задержки?
Ну вообще то не все так страшно, если ты сделаешь чтобы тот кусок кода с кнопками и конвертором выполнялся основную массу времени меньше чем 100 тактов то все вполне должно работать и так, кроме того эти временные сдвиги они не накапливаются, тоесть речь идет не о самом такте который обрабатывается таймером и соотв. частота не поменяется, а просто время начала бипа будет гулять на +- половину времени одного основного цикла программы. Чтобы совсем избежать зависимости от кода в мэйне просто перенеси кодVenomXP писал(а):Ога понял, еще на железе не тестил, пока примерный код, а как можно ВООБЩЕ избежать этой задержки?
Код: Выделить всё
if (START == 1)
{
if (count > 7680)
{
count -= 7680;
beep();
}
}
Код: Выделить всё
if (START == 1)
{
if (count > 7680)
{
count -= 7680;
beep_timer=100;
}
if(beep_timer>0)
{
beep_timer--;
beep_100();// эта функция работает не более 100 тактов,
//выводит к примеру несколько периодов тона которым делается бип
}
}
Вроде нормально. Из функции Send задержки убери, они там все равно не нужны тк ты один разряд отображаешь на протяжении целого таймерного прерывания, так что чем быстрее этот разряд засветится тем лучше.VenomXP писал(а):0.78 секунды это слишком много, допустим при 155 bpm этот тик уже будет сплошным, надо ~0.075 сек, вот еще подправил код, сделал под CodeVisionAVR, проверьте. Я там намудрил с кнопками, незнаю как точно, но примерно так.
А с кнопками как, все нормально? Я до конца не вкурил как, они у меня на землю замыкаются, я правильно сделал? Да и еще у меня нормально выставлены эти параметры?Neekeetos писал(а): Вроде нормально. Из функции Send задержки убери, они там все равно не нужны тк ты один разряд отображаешь на протяжении целого таймерного прерывания, так что чем быстрее этот разряд засветится тем лучше.
Код: Выделить всё
TCCR0A = 0;
TCCR0B = 0x04;
TCNT0 = 255;Трудно сказать, я же не знаю какой режим таймера ты выбрал для себя, судя по цифрам они в значительной степени от балды, попробуй указывать побитно настройки таймера по аналогии с этим напримерVenomXP писал(а):А с кнопками как, все нормально? Я до конца не вкурил как, они у меня на землю замыкаются, я правильно сделал? Да и еще у меня нормально выставлены эти параметры?А то я чет когда считал не так сделал, наглаз поставилКод: Выделить всё
TCCR0A = 0; TCCR0B = 0x04; TCNT0 = 255;
Код: Выделить всё
ADMUX = _BV(REFS1) | _BV(REFS0)|1;
ADCSRA = _BV(ADEN) | _BV(ADATE) | _BV(ADPS2); // /16
ADCSRB = _BV(ADTS2) | _BV(ADTS0);