ATtiny13: Очень интересная работа портов

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 28
Зарегистрирован: Вс май 24, 2009 22:25:36
Откуда: Russia

Сообщение fox15 »

Привет Мурзатые ! :)

Вот интересная особенность...

void main()
{
// Порты 2, 3, 4, 5 конфигурируем на выход
DDRB = 0b00111100; // set PORTB as Output PB2, PB3, PB4, PB5
PORTB = 0; // Необязательно, для чистоты эксперимента
.....
Кусь.... все несущественное, то что никак не затрагивает порты
.....
State = 0;
while (1)
{
if (PINB.B4) // вот в этих местах самое интересное
State = 1;
if (!PINB.B4 && State)
{
State = 0;
..... Чего-нить можно сделать, засветить светодиодом например
PORTB.B2 ^= 1; // Вообщем инверсия всякий раз
}
}
}

Так вот, Порт B4 был сконфигурирован как выходной согласно кошачьей обучалке (Настройка портов ввода-вывода)
http://radiokot.ru/start/mcu_fpga/avr/06/

...Кусь...
И наоборот, если например, PX5 настроен на вывод, то прочитав 5-й бит PinD, мы всегда обнаружим 0.
Порты - дело тонкое…
...Кусь...

Почему этот алгоритм работает ?
Прекрасно работает и на вход и на выход :shock:
Нажимаю кнопочку, при отпускании срабатывает, тут же можно засветить/погасить светодиод на этом порту (т.к. он сконфигурирован на выход)
Мы же должны обнаружить там 0, как в описании говорилось и тогда первое условие несработает а, стало быть и второе и на PORTB.B2 недолжно быть реакции :?

1. Кто виновать ? :evil:
2. Что делать ? :?

- Кто подскажет ?
- Кто даст совет ?
- Это наваждение или нет ?

P.S.
И вообще, зачем тогда мне порты настраивать на вход, когда они и так работают ?
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

че-то я ничего не понял ваще... напрягитесь и задайте вопрос одним предложением без детских игр в животных.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 28
Зарегистрирован: Вс май 24, 2009 22:25:36
Откуда: Russia

Сообщение fox15 »

ARV писал(а):че-то я ничего не понял ваще... напрягитесь и задайте вопрос одним предложением без детских игр в животных.
Вся наша жизнь - игра ! (азартная :)) )

И что тут непонятного-то ? :shock:

Недолжен PINB.B4 реагировать на нажатие кнопки, т.к. он сконфигурирован на ВЫХОД (в регистре DDR 3-й бит равен 1), а он реагирует (как будто в регистре DDR 3-й бит равен 0)
и мне непонятно почему так.

И в описании сказано:
... если например, PX5 настроен на вывод, то прочитав 5-й бит PinD, мы всегда обнаружим 0.

Т.е. читая PINB.B4, я всегда должен получать только 0, а я в цикле получаю и 0 и 1.
Контактная информация:
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

fox15 писал(а): ... если например, PX5 настроен на вывод, то прочитав 5-й бит PinD, мы всегда обнаружим 0.
а вы случаем с PORTD не путаете?
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Аватара пользователя
Сообщения: 1708
Зарегистрирован: Ср апр 23, 2008 17:44:56
Откуда: Россия, г. Нижний Новгород

Сообщение sema »

pin это "физическое" состояние вывода, если его закоротить на "землю", то без разницы вход это будет или выход - при чтении из pin всегда будет "0"

ну это если я правильно понял весь этот словесный поток :roll:
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Контактная информация:
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 28
Зарегистрирован: Вс май 24, 2009 22:25:36
Откуда: Russia

Сообщение fox15 »

GP1 писал(а):
fox15 писал(а): ... если например, PX5 настроен на вывод, то прочитав 5-й бит PinD, мы всегда обнаружим 0.
а вы случаем с PORTD не путаете?
На ATTiny13 нет порта D, есть только B0-B5
Контактная информация:
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 28
Зарегистрирован: Вс май 24, 2009 22:25:36
Откуда: Russia

Сообщение fox15 »

sema писал(а):pin это "физическое" состояние вывода, если его закоротить на "землю", то без разницы вход это будет или выход - при чтении из pin всегда будет "0"

ну это если я правильно понял весь этот словесный поток :roll:
Так отож :shock:
Еслибы там был чистый 0, как и положено.
Ан нет, и 0 есть и 1 есть, на кнопочку нажимаю, порт работает как на вход
Контактная информация:
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

fox15 писал(а):
GP1 писал(а): а вы случаем с PORTD не путаете?
На ATTiny13 нет порта D, есть только B0-B5
Супер!
Сначала сам пишет PinD, а потом тыкает мне в нос что у tiny13 нет порта D, просто супер.
Да я tiny13 крайний раз в руках два года назад держал, а при моем склерозе..., помню что у него всего один порт а какой по букве :roll:
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 335
Зарегистрирован: Вт сен 11, 2007 10:27:08
Откуда: Киев

Сообщение __Alexander »

fox15 писал(а): Еслибы там был чистый 0, как и положено.
Ан нет, и 0 есть и 1 есть, на кнопочку нажимаю, порт работает как на вход
Почитайте в даташитах про работу портов, прежде чем задавать глупые вопросы.

А еще лучше, почитайте про полевые транзисторы, и как они в связке работают в режимах вход, выход и третье состояние.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина

Сообщение Krik99 »

Дык вроде как все AVR которые 8 лапные у них тока PB, так как пины ISP всегда стоят на PB.
Изображение
Контактная информация:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 28
Зарегистрирован: Вс май 24, 2009 22:25:36
Откуда: Russia

Сообщение fox15 »

__Alexander писал(а): Почитайте в даташитах про работу портов, прежде чем задавать глупые вопросы.
Глупых вопросов небывает, бывают глупые ответы, вроде этого.

Я на форум обратился потому как предполагаю, что может у кого-то была подобная проблема. Информации начального уровня у меня достаточно и по портам и по прерываниям.
И вообще я не электронщик, а программист, разработчик баз данных.
А микроконтроллеры в данный момент это хобби, которым я занимаюсь в свободное время и никак немогу знать электротехнику на уровне электронщика профессионала. :evil:

А форум создан, чтобы задавать вопросы и делиться опытом.
Контактная информация:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 28
Зарегистрирован: Вс май 24, 2009 22:25:36
Откуда: Russia

Сообщение fox15 »

GP1 писал(а): Супер!
Сначала сам пишет PinD, а потом тыкает мне в нос что у tiny13 нет порта D, просто супер.
Да я tiny13 крайний раз в руках два года назад держал, а при моем склерозе..., помню что у него всего один порт а какой по букве :roll:
Я не тыкал никому ничего в нос.
Надо быть внимательнее, это пример статьи, которая размещена здесь же на этом сайте и ссылку привел (в самом первом сообщении).
В этой статье описана работа портов на примере порта D.
http://radiokot.ru/start/mcu_fpga/avr/06/

Может быть такой режим работы микроконтроллера может возникать при определенных условиях, типа ошибки ? :roll:
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1708
Зарегистрирован: Ср апр 23, 2008 17:44:56
Откуда: Россия, г. Нижний Новгород

Сообщение sema »

порт настроен на выход (любой) и в него записан "0" и висит в воздухе - читаем pin, на нем "0". подключаем эту ножку к +5В, читаем pin - "1"

пишем в него "1", нога в воздухе, читаем pin - "1", подключаем его к корпусу, читаем pin - "0", с настройкой на вход (с подтягивающим резистором) такая ситуация

читайте кроме нашей обучалки еще и книжки :wink:
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

sema писал(а):порт настроен на выход (любой) и в него записан "0" . . . подключаем эту ножку к +5В, читаем pin - "1"
и при этом сильно-сильно перегружаем внутренний буфер МК, так что скорее всего через пару секунд порт выгорит
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 28
Зарегистрирован: Вс май 24, 2009 22:25:36
Откуда: Russia

Сообщение fox15 »

sema писал(а):порт настроен на выход (любой) и в него записан "0" и висит в воздухе - читаем pin, на нем "0". подключаем эту ножку к +5В, читаем pin - "1"

пишем в него "1", нога в воздухе, читаем pin - "1", подключаем его к корпусу, читаем pin - "0", с настройкой на вход (с подтягивающим резистором) такая ситуация

читайте кроме нашей обучалки еще и книжки :wink:
Ok !

У меня так: нога через резистор на землю, параллельно эта нога на кнопку, кнопка на +5V
(Отладочный стенд EasyAVR5A)
:)
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

fox15 писал(а):У меня так: нога через резистор на землю, параллельно эта нога на кнопку, кнопка на +5V
(Отладочный стенд EasyAVR5A) :)
Я С ВАС БАЛДЕЮ! с этого и надо было начинать! и вас еще удивляет, что порт, настроенный на выход, не может "перетянуть" питание, подаваемое на пин снаружи! :) если на кнопку нажимали часто и подолгу - думаю, порт вы выжгли...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 28
Зарегистрирован: Вс май 24, 2009 22:25:36
Откуда: Russia

Сообщение fox15 »

ARV писал(а):Я С ВАС БАЛДЕЮ! с этого и надо было начинать! и вас еще удивляет, что порт, настроенный на выход, не может "перетянуть" питание, подаваемое на пин снаружи! :) если на кнопку нажимали часто и подолгу - думаю, порт вы выжгли...
Нет, порт целый.
Ну не моими же "корявыми" ручками создан стенд EasyAVR5A.
Думаю они позаботились об этом и простым нажатием на кнопку микросхему неиспортить (ну там резистор какой-нить) :)
Я могу конфигурировать стенд, можно кнопку переключать или на землю или на VCC

А вообще, когда нажимаю на кнопку и:

Порт настроен на ВЫХОД (напряжение на ножке)
Vmax = 4.00V
Vavg = 3.91V
Vmin = 3.80V
Vrms = 3.91V

Порт настроен на ВХОД (напряжение на ножке)
Vmax = 5.08V
Vavg = 4.93V
Vmin = 4.84V
Vrms = 4.93V

И еще интересная деталь.
Думаю тут имеется небольшой грех компилятора MicroC от Mikroelektronika, потому как при редактировании программы этот эффект то пропадает, то появляется, хотя при редактировании я незатрагиваю именно этот порт. Может соседние порты влияют ? :shock:

Хотя, вероятно Вы правы, надо пересмотреть схему, компилятор скорее всего непричем.
Я был вынужден в EasyAVR5A кнопку переключить с земли на VCC, т.к. у меня есть второй стенд 8051 на AT89S8253, с него я беру тестовый сигнал, а его кнопочки, в силу определенных причин, были сконфигурированы на VCC
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1708
Зарегистрирован: Ср апр 23, 2008 17:44:56
Откуда: Россия, г. Нижний Новгород

Сообщение sema »

ARV писал(а):
sema писал(а):порт настроен на выход (любой) и в него записан "0" . . . подключаем эту ножку к +5В, читаем pin - "1"
и при этом сильно-сильно перегружаем внутренний буфер МК, так что скорее всего через пару секунд порт выгорит
все верно (писал утром опаздывая на работу поэтому для большей доходчивости так утрировал), хотя мк довольно живучие, вот если несколько ног в порте так закоротить то наверняка сгорит
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 335
Зарегистрирован: Вт сен 11, 2007 10:27:08
Откуда: Киев

Сообщение __Alexander »

fox15 писал(а): И вообще я не электронщик, а программист, разработчик баз данных.
А форум создан, чтобы задавать вопросы и делиться опытом.
Правду говорят, что любой инженер может стать программистом, но не каждый программист может стать инженером.

Если уже ARV ниче не понял из вашего кода.... то куда там поделиться опытом.
fox15 писал(а): Ну не моими же "корявыми" ручками создан стенд EasyAVR5A.
Думаю они позаботились об этом и простым нажатием на кнопку микросхему неиспортить (ну там резистор какой-нить)
Нет, они не могут позаботиться о всех корявых руках, которыми пишутся корявые программы. Ну дайте ему на порт 220, и хрен с ним. А потом спрашивайте почему они не позаботились об этом. А лучше кислотки, серной, прям на плату...


-------
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 28
Зарегистрирован: Вс май 24, 2009 22:25:36
Откуда: Russia

Сообщение fox15 »

__Alexander писал(а):
fox15 писал(а): И вообще я не электронщик, а программист, разработчик баз данных.
А форум создан, чтобы задавать вопросы и делиться опытом.
Правду говорят, что любой инженер может стать программистом, но не каждый программист может стать инженером.

Если уже ARV ниче не понял из вашего кода.... то куда там поделиться опытом.
fox15 писал(а): Ну не моими же "корявыми" ручками создан стенд EasyAVR5A.
Думаю они позаботились об этом и простым нажатием на кнопку микросхему неиспортить (ну там резистор какой-нить)
Нет, они не могут позаботиться о всех корявых руках, которыми пишутся корявые программы. Ну дайте ему на порт 220, и хрен с ним. А потом спрашивайте почему они не позаботились об этом. А лучше кислотки, серной, прям на плату...
-------
Вы странный человек __Alexander, позволяете себе судить квалификацию того, кого совсем незнаете и делать утверждения ни на чем неоснованные типа кто кем может стать, а кто неможет.
Кто Вам сказал такие глупости ?
Программа как раз прекрасно работает, все проблемы решены.
Я просто хочу разобраться и понять работу AVR.

По моим личным наблюдениям в форумах подобные заявления делают простые дилетанты, которые себя считают профессионалами. Они немогут ответить по существу проблемы, но считают своим долгом написать какую-нибудь глупость вроде этой.

Вы написали пару сообщений в этой теме, совершенно бессмысленных.
Зачем Вам это надо, неужели больше нечем заняться ? :shock:

Как Вы думаете, эти Ваши сообщения несут в себе хоть какую-нибудь полезную информацию, кроме глупых, детских насмешек ?
Или это такая форма самоутверждения, что характерно для подросткового возраста.

:)) А мои вопросы на форумах адресованы профессионалам, специалистам и тем кто сталкивался с подобными проблемами.

:)))
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»