Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

atmega16 PORTC
http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=13473
Страница 1 от 1

Автор:  Реконструктор [ Нед Яну 04, 2015 1:20 pm ]
Заглавие:  atmega16 PORTC

Може ли половината да се ползва като изход, и половината като вход?
Има следната опитна постановка:

DDRC = 0xF0;

Горния полубайт са изходи, долния - входове. Между изходите и входовете има бутони. Така, че като направя

PORTC = 0xF0;

очаквам като прочета:

test = PINC & 0x0F;

да имам стойности 1, 2, 4 или 8 в зависимост от кой бутон е натиснат. На практика, обаче, коректно получавам единствено 1, за останалите 3 бутона получавам 0x0E, защото при натискане на кой да е от трите, ми светват и трите пина едновременно. Проверих го и с мултицет и наистина, електрически се получава точно това. Не мога да разбера защо се получава така, промяната на нивото на единия пин влече промяна и на другите 2.

Автор:  Nikola Kirov [ Нед Яну 04, 2015 1:50 pm ]
Заглавие:  Re: atmega16 PORTC

А провери ли дали нямаш късо между тия три входа? :)

Автор:  Реконструктор [ Нед Яну 04, 2015 2:10 pm ]
Заглавие:  Re: atmega16 PORTC

Nikola Kirov написа:
А провери ли дали нямаш късо между тия три входа? :)


Разбира се, просвирих ги и няма. :) Дали пък самия чип не е заминал?

Автор:  Cekins [ Нед Яну 04, 2015 2:16 pm ]
Заглавие:  Re: atmega16 PORTC

пулъп / пулдаун ? Как очакваш бутона да ти пусне логическа 0 като не е натиснат - реално той е в "тристейт" изход - входа може да отиде където си иска...

Автор:  Реконструктор [ Нед Яну 04, 2015 2:37 pm ]
Заглавие:  Re: atmega16 PORTC

Ами с включени вътрешни пулъпове се държи още по-странно. :) Пина, дето е замасен си е на маса, другия до него е на некви 3v, а третия е на 1.5v :D

Автор:  itso.t [ Нед Яну 04, 2015 2:45 pm ]
Заглавие:  Re: atmega16 PORTC

Ако на същите пинове има друга аналогова или цифрова периферия, тя конфигурирана ли е?

Автор:  Nikola Kirov [ Нед Яну 04, 2015 2:49 pm ]
Заглавие:  Re: atmega16 PORTC

Колегата правилно ти е писал за pull down.
В този вариант трябва да имаш на всеки вход резистор към маса. От последните ти обяснения става ясно че нямаш.
Ако искаш без резистори трябва да инвертираш логиката на работа.
Изходите да дават нула а на входовете да активираш pullup.

Автор:  Реконструктор [ Нед Яну 04, 2015 3:00 pm ]
Заглавие:  Re: atmega16 PORTC

В крайна сметка смених чипа и се оправи. Явно докато съм си играл е прицъркала някоя искра и е размазала всичко.

Автор:  Nikola Kirov [ Нед Яну 04, 2015 3:07 pm ]
Заглавие:  Re: atmega16 PORTC

И как става работата без pulldown? :)

Автор:  Реконструктор [ Нед Яну 04, 2015 10:51 pm ]
Заглавие:  Re: atmega16 PORTC

Ми принципно няма проблем, но го оставих така с вътрешния пулъп, щото е наистина по-сигурно.

Автор:  marcuka68 [ Чет Яну 08, 2015 5:22 pm ]
Заглавие:  Re: atmega16 PORTC

Имаше особеност при АВР, когато се пише PORTx, е необходим NOP, ако в следващата инструкция ще се чете PINx. Описано е в раздел "Reading the Pin Value", струва ми се.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/