Где-то я это делал, надо посмотреть старые исходники..
itoa(), думаю, пойдет
Да. назвается itoaintel4ever писал(а):Уверен, что есть что-то более удобное.
Там хитрая последовательность выключения чтоб случайно не выключился - см. на стр. 2 в русском даташите на мегу128 под кнопкойAlex870 писал(а):Даташит читал, только запись в регистры ничего не дает, даже принудительная остановка (типа WDTCR = 0x55) не действует в железе.
ниже. Вначале сброс - АСМ команда wdtAlex870 писал(а):VMLab пишет Watchdog Reset (WDR) must always be executed before the Watchdog Timer is enabled.
Я и пишу проверьте не включена ли совместисость с мегой103 - может в этом дело.Alex870 писал(а):И фьюзы проверил (они кстати по умолчанию стоят)...
про #define, дак конечно через него, только в каком направлении копать?; Можно бы было объекты стряпать на C, было бы проще, а так ума не приложу...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; }