Страница 2 из 3

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

Добавлено: Пт июн 14, 2013 12:19:40
ploop
Вот, нашел, код опроса энкодера. От Леонида Ивановича, если не ошибаюсь:

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

Добавлено: Пт июн 14, 2013 13:40:57
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 конфигурация как выход. Если мы сконфигурируем пины как выход, это даст нам совершенно железный уровень на них. Это конечно хорошо. Но проблемы могут начаться, если на работающую плату ВНЕЗАПНО упадет какая-нибудь железяка и закоротит эти выводы на что-то. Так что мой выбор для неиспользуемых пинов - внутренняя подтяжка. И конечно, если я читаю из такого порта, я просто обрезаю неиспользуемые биты или сразу проверяю только тот бит, который интересует.

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

Добавлено: Пт июн 14, 2013 17:13:50
Ruslan.B
Энкодер я использовал именно с контролем 3-х состояний и анализом каждой ситуации в общем-то о теории не думал а просто перенёс в код человеческую логику если самому смотреть на энкодер.
А вот на прерываниях с контролем соседнего датчика в обработчике не стоит, ловит и помехи и дребезг.

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

Добавлено: Пт июн 14, 2013 20:52:55
SmarTrunk
Неиспользуемые выводы плохо делать как выходы из соображения, что если было КЗ при пайке, то контроллер может сгореть, при первом включении, а с резисторами подтяжки этого не будет. Ну так не надо делать КЗ.

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

Добавлено: Сб июн 15, 2013 08:40:23
ibiza11
ploop писал(а):Стоп. Что внутренняя, что внешняя, грубо говоря, тупо подтягивает к шине затвор полевика.
Затвор??? Вы наверное что-то путаете. Выходной драйвер никак не связан с подтяжкой. Подтяжка стоит после драйвера.

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

Добавлено: Сб июн 15, 2013 13:56:50
М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, когда энкодер подключает ногу к земле? Я всё правильно понял? :)

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

Добавлено: Сб июн 15, 2013 14:13:22
YS
А как это делать?

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

if (PINC & SW_PIN)
{
  ...
}
Вот методичка, которую я писал, когда вел кружок. Почитайте, вдруг чего интересное найдете.

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

Добавлено: Сб июн 15, 2013 14:16:36
Мikа
YS писал(а):
А как это делать?

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

if (PINC & SW_PIN)
{
  ...
}
Вот методичка, которую я писал, когда вел кружок. Почитайте, вдруг чего интересное найдете.
Можно немного подробнее про SW_PIN?, пожалуйста? А ваша ссылка не открывается =((

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

Добавлено: Сб июн 15, 2013 14:25:03
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/

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

Добавлено: Сб июн 15, 2013 14:51:27
М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/
Ссылка тоэже не работает. Попробовал с компа и с яблобука - не открывается :(

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

Добавлено: Сб июн 15, 2013 18:11:40
YS
Если значение порта С не равно 0b10 - правильно?
Если там не стоит второй бит.

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

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

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

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

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

Получается, что все биты, кроме ненулевого в маске, не важны - побитовое И с нулями отрежет их.
Побитовое или между 0b00000000 и 0b100000?
Да. По сути - установка бита, не трогая остальные.
Побитовое И с 0b011111
Да. Снятие бита, не трогая остальные.
не открывается
Что пишет?

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

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

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

Изображение

Пробовал на хроме, на фаерфоксе. Пробовал выключить экраны антивируса. Пробовал с яблобука. На яблобуке тоже хром. Результат одинаковый везде.

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

Добавлено: Сб июн 15, 2013 20:16:11
YS
Попробуйте вставить ссылку в поиск Google и перейти по найденной статье...

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

Добавлено: Сб июн 15, 2013 20:19:02
Мikа
Изображение

Ваш сайт точно работает? Может быть он у вас в кэше сидит, а на самом деле не отвечает?

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

Добавлено: Сб июн 15, 2013 20:25:40
YS
100% работает. Где-то у Вас в URL ошибка. Но при таком разрешении скриншота этого не увидеть...

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

Добавлено: Сб июн 15, 2013 20:28:04
Мikа
Вот тут получше :)
СпойлерИзображение

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

Добавлено: Сб июн 15, 2013 20:32:30
YS
Странно. А попробуйте зайти просто на wordpress.com, embedderslife.wordpress.com .

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

Добавлено: Сб июн 15, 2013 20:41:14
Мikа
wordpress.com открывает, а вот с адресом вашего сата нет. Ни в ввв, ни с хттп, ни с планшета :(

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

Добавлено: Сб июн 15, 2013 20:57:22
YS
ХЗ, это какие-то чудеса. Я даже попробовал через прокси зайти, чтобы точно кэш не мешал, - все ОК.

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

Добавлено: Сб июн 15, 2013 21:03:59
Мikа
Мож у меня с инетом чего, щас покидаю ссылку друзьям, попробуем :)

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