Цитата(Labinskiy Nikolay @ Jul 22 2006, 15:55)

вот что получилось:
[skipped]
но инициализация все равно не проходит...
может что-то с датчиком?
Вряд ли.
На сайте господина
protoss'а лежат его сорцы для борьбы с ванварью:
1Wire.C1Wire.Asmза что ему большое спасибо.
Я на AVR только переползаю и пока не владею особенностями генерации кода компиляторами для этой архитектуры. Тем не менее, общие соображения:
1) посмотрите ассемблерный текст и вручную посчитайте время выполнения/выполните профилирование по ванварным функциям.
2) если в программе используются прерывания, на время выполнения коротких задержек и связанных с ними манипуляций со входами/выходами их придется запрещать.
И для упрощения жизни компилятору и контроллеру я бы сделал так:
Код
void delay_ms(uint16_t t)
{
uint8_t i;
if (t > 10)
for (i=t/10;i;i--)
_delay_ms(10);
else
_delay_ms(t);
}
или так
Код
void delay_ms(uint16_t t)
{
uint8_t i;
if (t >= 256)
{
for (i=t/256;i;i--)
_delay_ms(256);
t &= 255;
}
_delay_ms(t);
}
Сообщение отредактировал xemul - Jul 22 2006, 14:07