Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

ICCAVR генератор кода - неправильная последовательность инициализации порта

Непрочитано 12.08.2010, 13:21  
andruha-d
Временная регистрация
 
Регистрация: 09.11.2007
Сообщений: 56
Сказал спасибо: 12
Сказали Спасибо 10 раз(а) в 6 сообщении(ях)
andruha-d на пути к лучшему
По умолчанию ICCAVR генератор кода - неправильная последовательность инициализации порта

Здравствуйте,
сгенерировал на ICCAVR 6.2 с помощью встроенного визарда начальный код для инициализации порта (для Tiny13). По условию нулевой пин должен быть сконфигурирован как Output, и его начальное значение должно быть 1 (High). Все остальные оставляем как Input.
Сгенерирован следующий код инициализации:

Цитата:
PORTB = 0x01;
DDRB = 0x01;
Вопрос: почему сначала присваивается значение порту а затем определяется его направление (DDRB)? Ведь, по идее должно быть наоборот.

Это баг или фича?
Реклама:
andruha-d вне форума  
Непрочитано 12.08.2010, 13:50  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: ICCAVR генератор кода - неправильная последовательность инициализации порта

Сообщение от andruha-d Посмотреть сообщение
Ведь, по идее должно быть наоборот.Это баг или фича?
Если будет наоборот, то на пару тактов пин станет выходом с нулевым состоянием. По моему, такого в программе не просилось.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Сказали "Спасибо" nml
andruha-d (12.08.2010)
Непрочитано 12.08.2010, 19:17  
andruha-d
Временная регистрация
 
Регистрация: 09.11.2007
Сообщений: 56
Сказал спасибо: 12
Сказали Спасибо 10 раз(а) в 6 сообщении(ях)
andruha-d на пути к лучшему
По умолчанию Re: ICCAVR генератор кода - неправильная последовательность инициализации порта

Как бы понятно, но выходит, что порту, настроенному на Input можно программно присвоить значение (0/1) и он его где-то запомнит и затем, после смены направленности, подхватит и самовольно выставит уровень, который был в предыдущей инкарнации? А как быть, если в момент, когда порт был Input ему на вход подавался уровень, не совпадающий с планируемым после смены DDRx выходным уровнем? Кто победит - программное присвоение или внешний сигнал?
Если развить тему, то можно в режиме Input подать на порт извне некий логический уровнь, затем сменить DDRx на Output и порт автоматом выставит на выход ранее поданный сигнал? А я ведь тоже этого не просил при смене DDRx.

Последний раз редактировалось andruha-d; 12.08.2010 в 19:20.
andruha-d вне форума  
Непрочитано 12.08.2010, 23:00  
andruha-d
Временная регистрация
 
Регистрация: 09.11.2007
Сообщений: 56
Сказал спасибо: 12
Сказали Спасибо 10 раз(а) в 6 сообщении(ях)
andruha-d на пути к лучшему
По умолчанию Re: ICCAVR генератор кода - неправильная последовательность инициализации порта

Сообщение от lvadia Посмотреть сообщение
это выходной регистр....или я не понял вопрос?)
Аха! Точно, я как-то не обратил внимание. Большое спасибо.
andruha-d вне форума  
Непрочитано 12.08.2010, 23:17  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: ICCAVR генератор кода - неправильная последовательность инициализации порта

Сообщение от andruha-d Посмотреть сообщение
Как бы понятно, но выходит, что порту, настроенному на Input можно программно присвоить значение (0/1) и он его где-то запомнит
Он его запомнит не где-то, а в регистре PORTx. Этот порт - если в режиме input - то 1 означает "подперт на Vcc", а 0 - "бесконечное" входное сопротивление. Смотрите даташит внимательно!
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 20:11.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.