АТMega16 PORTC проблема
Сталкивался кто нибудь с такой проблемой:
Тумблера на порту С управляют портом В один к одному, т.е типа PORTB=PINC. Но выводы порта С работают не все (На PINC.2.3.5 всегда 0, а на PINC.4 1,56в). Прогу переписывал во всех ракомсах. Думал что с платой накосячил. Сделал плату специально для проверки портов. Думал с процем что то. Взял другой проц в другом месте. То же самое.
Итого: в порту С пины 2,3,5 всегда 0, а пин 4 всегда 1,56в. Порт С ставил и входом, и выходом. Остальные порты в порядке. В проге ниже порт С - выход на светодиоды через балласт 330ом, порт А - вход, подтянутый к +5в с тумблерами на входе, подключенными на землю.
***************************************************** Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 1,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega16.h> unsigned char x; void main(void) { // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTA=0xFF; DDRA=0x00; // Port B initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTB=0x00; DDRB=0xFF; // Port C initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1 PORTC=0xFF; DDRC=0xFF; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; while (1) { x=~(PINA); PORTC=x; } }
Прога в CodeVision 2.05 вылеченной. ATMega16A-PU серии разные.
Это проц виноват или мои кривые руки?
подсказали мне - отключил JTAG в фузах и сразу стало как надо.
Вопрос снят. Может кому то будет тоже полезно.
решил проблему?
решил проблему?
Была похожая проблема, вышло
Была похожая проблема, вышло так что изначально один порт микроконтроллера ATmega16 не настроен на работу ввод/вывод данных. Короче говоря мучился с настройкой пока не установил фьюз биты, вот только не помню в какую конфигурацию. Поищи информацию в этом направлении, конфигурация фьюз битов atmega16
Попробуй прошить под работу от внешнего генератора фьюзы будут следующими в Uniprof,
отмечены галкой в среднем столбике следующие регистры:
cksel0
cksel1
cksel2
cksel3