Страница 1 из 1

mega64\mega128

Добавлено: Сб янв 10, 2009 22:04:00
SD
Пытаюсь вывести данные через порты PORTC и PORTA в mega64.

Код: Выделить всё

DDRC = 0xFF;
PORTC = 0xFF;


приводит к тому, что высокий уровень выставляется не только на порту С, но и на порту А. если делать тоже самое для порта А, то ситуация повторяется.

хидер инклудиться правильный: iom64.h

ПО:
эмулятор Proteus 7.2SP6.
компилятор IAR (C++).

хотел попробовать снять фьюз M103C, но не знаю, как в протеусе это сделать?

P.S: нужен МК с большим количеством портов: 8+5 бит на графический LCD + 1 бит на управление его подсветкой, 1 бит на шину 1-wire, 2 бита I2C(hardware), 4 бита на клавиатуру, также нужно 2а бита c ADC, 2 бита UART(hardware), еще бита 3 нужны на mosfet. Может стоит взять какой-то другой проц, но AVR Atmel только?

Добавлено: Вс янв 11, 2009 21:25:29
pirotehnick
Потребность в большом колличестве выводов легко решается при помощи сдвиговых регистров типа 74HC595 или дешифраторов.

Добавлено: Вс янв 11, 2009 22:31:49
ЛеонидК
Извините за хамство.
Не пользуйтесь Proteus. Это игрушка.
Пользуйтесь симулятором IAR или AVRStudio.
Пороверь в IAR и я на 99% уверен в отсутствии этого эффекта. Ну а если нет - это ты сам в программе так устанавливаешь.

Добавлено: Пн янв 12, 2009 00:00:10
SD
хм, проверил в IAR'е, все работает как положено. стал крутить proteus и нашел: у него эти порты (PORT_A & PORT_C) представлены ввиде шины и объединение 2х шин в одну вызвало такой баг (названия для пинов выставлял до слияния шин естественно).