Знакомства с помехами на AVR
Re: Знакомства с помехами на AVR
Вот, нашел, код опроса энкодера. От Леонида Ивановича, если не ошибаюсь:
- Вложения
-
- enc.7z
- (1.17 КБ) 197 скачиваний
Re: Знакомства с помехами на AVR
К вопросу о незадействованых пинах. Обычно в ДШ пишут, что с ними рекомендуется делать. Читайте даташит, да.
Вот, например, из ДШ на ATmega48:
Ну, в том смысле, что там резисторы достаточно высокоомные. Там что-то около 30 - 50 килоом (точность не нормируется). Если это просто один пин, висящий в воздухе (просто незадействованный пин), такой подтяжки хватит. Если же к этому пину подключен еще и метровый провод, ессно надо ставить что-то внешнее.
К слову, внутренняя подтяжка vs конфигурация как выход. Если мы сконфигурируем пины как выход, это даст нам совершенно железный уровень на них. Это конечно хорошо. Но проблемы могут начаться, если на работающую плату ВНЕЗАПНО упадет какая-нибудь железяка и закоротит эти выводы на что-то. Так что мой выбор для неиспользуемых пинов - внутренняя подтяжка. И конечно, если я читаю из такого порта, я просто обрезаю неиспользуемые биты или сразу проверяю только тот бит, который интересует.
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
Энкодер я использовал именно с контролем 3-х состояний и анализом каждой ситуации в общем-то о теории не думал а просто перенёс в код человеческую логику если самому смотреть на энкодер.
А вот на прерываниях с контролем соседнего датчика в обработчике не стоит, ловит и помехи и дребезг.
А вот на прерываниях с контролем соседнего датчика в обработчике не стоит, ловит и помехи и дребезг.
Re: Знакомства с помехами на AVR
Неиспользуемые выводы плохо делать как выходы из соображения, что если было КЗ при пайке, то контроллер может сгореть, при первом включении, а с резисторами подтяжки этого не будет. Ну так не надо делать КЗ.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
Затвор??? Вы наверное что-то путаете. Выходной драйвер никак не связан с подтяжкой. Подтяжка стоит после драйвера.ploop писал(а):Стоп. Что внутренняя, что внешняя, грубо говоря, тупо подтягивает к шине затвор полевика.
Ставим плюсы: )
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
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
А как это делать?
Код: Выделить всё
if (PINC & SW_PIN)
{
...
}
Вот методичка, которую я писал, когда вел кружок. Почитайте, вдруг чего интересное найдете.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
YS писал(а):А как это делать?Код: Выделить всё
if (PINC & SW_PIN)
{
...
}
Вот методичка, которую я писал, когда вел кружок. Почитайте, вдруг чего интересное найдете.
Можно немного подробнее про SW_PIN?, пожалуйста? А ваша ссылка не открывается =((
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
Можно немного подробнее про 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
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
Если значение порта С не равно 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
Спасибо за подробное объя\снение. Я это спрашиваю, тк то, что сделает команла мне, в принципе, понятно. Вернее мне понятен результат. Но что именно пошагово произойдёт дохоодит не сразу. А поскольку самые начинания были на ассемблере, хочется понять всё 
Пишет вот что:

Пробовал на хроме, на фаерфоксе. Пробовал выключить экраны антивируса. Пробовал с яблобука. На яблобуке тоже хром. Результат одинаковый везде.
Пишет вот что:
Пробовал на хроме, на фаерфоксе. Пробовал выключить экраны антивируса. Пробовал с яблобука. На яблобуке тоже хром. Результат одинаковый везде.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
Попробуйте вставить ссылку в поиск Google и перейти по найденной статье...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
100% работает. Где-то у Вас в URL ошибка. Но при таком разрешении скриншота этого не увидеть...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
Странно. А попробуйте зайти просто на wordpress.com, embedderslife.wordpress.com .
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
wordpress.com открывает, а вот с адресом вашего сата нет. Ни в ввв, ни с хттп, ни с планшета 
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
ХЗ, это какие-то чудеса. Я даже попробовал через прокси зайти, чтобы точно кэш не мешал, - все ОК.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
Мож у меня с инетом чего, щас покидаю ссылку друзьям, попробуем 
UPD Хренотень какая-то, у друга открылось. У меня через анонимайзер тоже... Оо
UPD Хренотень какая-то, у друга открылось. У меня через анонимайзер тоже... Оо
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
