Знакомства с помехами на AVR

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Знакомства с помехами на AVR

Сообщение ploop »

Вот, нашел, код опроса энкодера. От Леонида Ивановича, если не ошибаюсь:
Вложения
enc.7z
(1.17 КБ) 197 скачиваний
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Знакомства с помехами на AVR

Сообщение YS »

К вопросу о незадействованых пинах. Обычно в ДШ пишут, что с ними рекомендуется делать. Читайте даташит, да. :) Вот, например, из ДШ на ATmega48:

10.2.6 Unconnected Pins

If some pins are unused, it is recommended to ensure that these pins have a defined level. Even
though most of the digital inputs are disabled in the deep sleep modes as described above, floating
inputs should be avoided to reduce current consumption in all other modes where the digital
inputs are enabled (Reset, Active mode and Idle mode).

The simplest method to ensure a defined level of an unused pin, is to enable the internal pull-up.
In this case, the pull-up will be disabled during reset. If low power consumption during reset is
important, it is recommended to use an external pull-up or pull-down. Connecting unused pins
directly to VCC or GND is not recommended, since this may cause excessive currents if the pin is
accidentally configured as an output.


но везде пишут, что она не айс


Ну, в том смысле, что там резисторы достаточно высокоомные. Там что-то около 30 - 50 килоом (точность не нормируется). Если это просто один пин, висящий в воздухе (просто незадействованный пин), такой подтяжки хватит. Если же к этому пину подключен еще и метровый провод, ессно надо ставить что-то внешнее.

К слову, внутренняя подтяжка vs конфигурация как выход. Если мы сконфигурируем пины как выход, это даст нам совершенно железный уровень на них. Это конечно хорошо. Но проблемы могут начаться, если на работающую плату ВНЕЗАПНО упадет какая-нибудь железяка и закоротит эти выводы на что-то. Так что мой выбор для неиспользуемых пинов - внутренняя подтяжка. И конечно, если я читаю из такого порта, я просто обрезаю неиспользуемые биты или сразу проверяю только тот бит, который интересует.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Ruslan.B
Прорезались зубы
Сообщения: 204
Зарегистрирован: Вт июл 21, 2009 20:57:09

Re: Знакомства с помехами на AVR

Сообщение Ruslan.B »

Энкодер я использовал именно с контролем 3-х состояний и анализом каждой ситуации в общем-то о теории не думал а просто перенёс в код человеческую логику если самому смотреть на энкодер.
А вот на прерываниях с контролем соседнего датчика в обработчике не стоит, ловит и помехи и дребезг.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Знакомства с помехами на AVR

Сообщение SmarTrunk »

Неиспользуемые выводы плохо делать как выходы из соображения, что если было КЗ при пайке, то контроллер может сгореть, при первом включении, а с резисторами подтяжки этого не будет. Ну так не надо делать КЗ.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Знакомства с помехами на AVR

Сообщение ibiza11 »

ploop писал(а):Стоп. Что внутренняя, что внешняя, грубо говоря, тупо подтягивает к шине затвор полевика.
Затвор??? Вы наверное что-то путаете. Выходной драйвер никак не связан с подтяжкой. Подтяжка стоит после драйвера.
Ставим плюсы: )
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Знакомства с помехами на AVR

Сообщение Мikа »

YS писал(а):И конечно, если я читаю из такого порта, я просто обрезаю неиспользуемые биты или сразу проверяю только тот бит, который интересует.


А как это делать? :) Обрезать по маске научили, а читать нужный бит как?

ploop писал(а):Вот, нашел, код опроса энкодера. От Леонида Ивановича, если не ошибаюсь:


Там лежит два файла, я не нашёл отличий.
Там есть #include "Encoder.h". Это какая-то стандартная библиотека типа delay или что-то другое?
И ещё я там не увидел антидребезговой проверки. Она делается в основной программе?

И можете показать тему, о антидребезговом последовательном проверянии состояний, пожалуйста? :)

Код: Выделить всё

void Encoder_Init(void)
{
  DDRC  &= ~(ENC_F1 | ENC_F2); //настройка портов на ввод
  [b]PORTC |= ENC_F1 | ENC_F2;    //включение подтягивающих резисторов[/b]
  EncPrev = State0;       //инициализация предыдущего состояния
  EncPrevPrev = State0;   //инициализация пред-предыдущего состояния
}


Выделенное делается для того, чтобы обеспечить там устойчевое 1, которое проваливается в устойчивый 0, когда энкодер подключает ногу к земле? Я всё правильно понял? :)
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Знакомства с помехами на AVR

Сообщение YS »

А как это делать?


Код: Выделить всё

if (PINC & SW_PIN)
{
  ...
}


Вот методичка, которую я писал, когда вел кружок. Почитайте, вдруг чего интересное найдете.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Знакомства с помехами на AVR

Сообщение Мikа »

YS писал(а):
А как это делать?


Код: Выделить всё

if (PINC & SW_PIN)
{
  ...
}


Вот методичка, которую я писал, когда вел кружок. Почитайте, вдруг чего интересное найдете.


Можно немного подробнее про SW_PIN?, пожалуйста? А ваша ссылка не открывается =((
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Знакомства с помехами на AVR

Сообщение YS »

Можно немного подробнее про SW_PIN?


SW_PIN - это я так символически обозначил битовую маску проверяемого вывода. ОК, пример. Пускай у нас на выводе 2 порта PORTC кнопка, замыкающая на землю, а на выводе 5 - светодиод. И примитивная задача: зажечь светодиод, когда кнопка нажата. :)


Код: Выделить всё

#include <avr/io.h>

#define SW_PIN       (1<<PB2)
#define LED_PIN      (1<<PB5)

void main(void)
{
  DDRC=LED_PIN;
  PORTC=0;

  while (1)
  {
    if (!(PINC & SW_PIN))
    {
        PORTC|=LED_PIN;
    }
    else
    {
        PORTC&=~LED_PIN;
    }
  }
}



Попробуйте эту ссылку:

http://embedderslife.wordpress.com/2012/04/06/avr-mcus/
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Знакомства с помехами на AVR

Сообщение Мikа »

YS писал(а):
Можно немного подробнее про SW_PIN?


SW_PIN - это я так символически обозначил битовую маску проверяемого вывода. ОК, пример. Пускай у нас на выводе 2 порта PORTC кнопка, замыкающая на землю, а на выводе 5 - светодиод. И примитивная задача: зажечь светодиод, когда кнопка нажата. :)


while (1)
{
if (!(PINC & SW_PIN)) //Если значение порта С не равно 0b10 - правильно? Я никак не вникну в это. Постоянно путаю, что происходит в таких строках, если смотреть на них как на двоичные числа :((
{
PORTC|=LED_PIN; //Побитовое или между 0b00000000 и 0b100000?
}
else
{
PORTC&=~LED_PIN; //Побитовое И с 0b011111

[/code]

Попробуйте эту ссылку:

http://embedderslife.wordpress.com/2012/04/06/avr-mcus/


Ссылка тоэже не работает. Попробовал с компа и с яблобука - не открывается :(
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Знакомства с помехами на AVR

Сообщение YS »

Если значение порта С не равно 0b10 - правильно?


Если там не стоит второй бит.

SW_PIN будет замещено препроцессором на 1 << 2 = 0b00000100.

Тогда, если бит №2 (нумерация с нуля!) стоит, получим

PINC = 0bxxxxx1xx, (x - неважно, что).
SW_PIN = 0b00000100.

0bxxxxx1xx & 0b00000100 = 0b00000100, что для условного оператора есть "истина". Любое ненулевое значение признается как "истина".

В противном случае получим 0bxxxxx0xx & 0b00000100 = 0, что для условного оператора есть "ложь".

Получается, что все биты, кроме ненулевого в маске, не важны - побитовое И с нулями отрежет их.

Побитовое или между 0b00000000 и 0b100000?


Да. По сути - установка бита, не трогая остальные.

Побитовое И с 0b011111


Да. Снятие бита, не трогая остальные.

не открывается


Что пишет?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Знакомства с помехами на AVR

Сообщение Мikа »

Спасибо за подробное объя\снение. Я это спрашиваю, тк то, что сделает команла мне, в принципе, понятно. Вернее мне понятен результат. Но что именно пошагово произойдёт дохоодит не сразу. А поскольку самые начинания были на ассемблере, хочется понять всё :)

Пишет вот что:

Изображение

Пробовал на хроме, на фаерфоксе. Пробовал выключить экраны антивируса. Пробовал с яблобука. На яблобуке тоже хром. Результат одинаковый везде.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Знакомства с помехами на AVR

Сообщение YS »

Попробуйте вставить ссылку в поиск Google и перейти по найденной статье...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Знакомства с помехами на AVR

Сообщение Мikа »

Изображение

Ваш сайт точно работает? Может быть он у вас в кэше сидит, а на самом деле не отвечает?
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Знакомства с помехами на AVR

Сообщение YS »

100% работает. Где-то у Вас в URL ошибка. Но при таком разрешении скриншота этого не увидеть...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Знакомства с помехами на AVR

Сообщение Мikа »

Вот тут получше :)

СпойлерИзображение
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Знакомства с помехами на AVR

Сообщение YS »

Странно. А попробуйте зайти просто на wordpress.com, embedderslife.wordpress.com .
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Знакомства с помехами на AVR

Сообщение Мikа »

wordpress.com открывает, а вот с адресом вашего сата нет. Ни в ввв, ни с хттп, ни с планшета :(
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Знакомства с помехами на AVR

Сообщение YS »

ХЗ, это какие-то чудеса. Я даже попробовал через прокси зайти, чтобы точно кэш не мешал, - все ОК.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Re: Знакомства с помехами на AVR

Сообщение Мikа »

Мож у меня с инетом чего, щас покидаю ссылку друзьям, попробуем :)

UPD Хренотень какая-то, у друга открылось. У меня через анонимайзер тоже... Оо
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Ответить

Вернуться в «AVR»