Где-то я это делал, надо посмотреть старые исходники..
itoa(), думаю, пойдет
intel4ever писал(а):Уверен, что есть что-то более удобное.
Alex870 писал(а):Даташит читал, только запись в регистры ничего не дает, даже принудительная остановка (типа WDTCR = 0x55) не действует в железе.
ниже.
Alex870 писал(а):VMLab пишет Watchdog Reset (WDR) must always be executed before the Watchdog Timer is enabled.
Alex870 писал(а):И фьюзы проверил (они кстати по умолчанию стоят)...
tych писал(а):Наверно через #define макрос хитрый написать. Или через функции обычые работать.
KDAlex писал(а):А про "обычные функции" - не понял. Всмысле? использовать порт целиком?
Код: Выделить всё
PORTB |= 0b00001111;Код: Выделить всё
PORTB &= 0b11110000;Код: Выделить всё
unsigned char read_data (void)
{
unsigned char data;
data = (PINB & 0b00001111);
return data;
}Код: Выделить всё
void write_data (unsigned char data)
{
PORTB |= (data & 0b00001111);
}Alex870 писал(а):Здравствуйте!
У меня такая проблема, не могу победить watchdog на atmega128 (CodeVision 1.25.9).Написал программу - не работает, начал ковырять, свел до минимума. Код элементарный - инициализируется UART0, далее в wihile(1) пишу
putchar(i);
i = getchar();
и все. "собака" сбрасывает программу во время ожидания байта с UART'a.
VMLab тоже предупреждает, что останавливать WDR нужно до его запуска, подскажите пожалуйста как это правильно сделать в CodeVision'e.
Даташит читал, только запись в регистры ничего не дает, даже принудительная остановка (типа WDTCR = 0x55) не действует в железе. Биты установлены в соответствии с уровнем защиты 0.
Первый раз у меня такое! Столько AVR'ов прошил, а вот со 128-ой первый раз столкнулся и не могу победить.
Зарание спасибо!.
Aheir писал(а):Если совсем хочется работать как с портом, то можно использовать функции. Например, чтение их первых четырех битов порта В в переменную:Код: Выделить всё
unsigned char read_data (void)
{
unsigned char data;
data = (PINB & 0b00001111);
return data;
}