| Автор |
Съобщение |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
 atmega16 PORTC
Може ли половината да се ползва като изход, и половината като вход? Има следната опитна постановка:
DDRC = 0xF0;
Горния полубайт са изходи, долния - входове. Между изходите и входовете има бутони. Така, че като направя
PORTC = 0xF0;
очаквам като прочета:
test = PINC & 0x0F;
да имам стойности 1, 2, 4 или 8 в зависимост от кой бутон е натиснат. На практика, обаче, коректно получавам единствено 1, за останалите 3 бутона получавам 0x0E, защото при натискане на кой да е от трите, ми светват и трите пина едновременно. Проверих го и с мултицет и наистина, електрически се получава точно това. Не мога да разбера защо се получава така, промяната на нивото на единия пин влече промяна и на другите 2.
|
| Нед Яну 04, 2015 1:20 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 Re: atmega16 PORTC
А провери ли дали нямаш късо между тия три входа? 
|
| Нед Яну 04, 2015 1:50 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
 Re: atmega16 PORTC
Разбира се, просвирих ги и няма.  Дали пък самия чип не е заминал?
|
| Нед Яну 04, 2015 2:10 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: atmega16 PORTC
пулъп / пулдаун ? Как очакваш бутона да ти пусне логическа 0 като не е натиснат - реално той е в "тристейт" изход - входа може да отиде където си иска...
|
| Нед Яну 04, 2015 2:16 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
 Re: atmega16 PORTC
Ами с включени вътрешни пулъпове се държи още по-странно.  Пина, дето е замасен си е на маса, другия до него е на некви 3v, а третия е на 1.5v 
|
| Нед Яну 04, 2015 2:37 pm |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12764 Местоположение: София
|
 Re: atmega16 PORTC
Ако на същите пинове има друга аналогова или цифрова периферия, тя конфигурирана ли е?
|
| Нед Яну 04, 2015 2:45 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 Re: atmega16 PORTC
Колегата правилно ти е писал за pull down. В този вариант трябва да имаш на всеки вход резистор към маса. От последните ти обяснения става ясно че нямаш. Ако искаш без резистори трябва да инвертираш логиката на работа. Изходите да дават нула а на входовете да активираш pullup.
|
| Нед Яну 04, 2015 2:49 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
 Re: atmega16 PORTC
В крайна сметка смених чипа и се оправи. Явно докато съм си играл е прицъркала някоя искра и е размазала всичко.
|
| Нед Яну 04, 2015 3:00 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 Re: atmega16 PORTC
И как става работата без pulldown? 
|
| Нед Яну 04, 2015 3:07 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
 Re: atmega16 PORTC
Ми принципно няма проблем, но го оставих така с вътрешния пулъп, щото е наистина по-сигурно.
|
| Нед Яну 04, 2015 10:51 pm |
|
 |
|
marcuka68
Ранг: Ориентиран
Регистриран на: Пет Авг 07, 2009 4:58 pm Мнения: 273
|
 Re: atmega16 PORTC
Имаше особеност при АВР, когато се пише PORTx, е необходим NOP, ако в следващата инструкция ще се чете PINx. Описано е в раздел "Reading the Pin Value", струва ми се.
|
| Чет Яну 08, 2015 5:22 pm |
|
|