Мелкие вопросы по МК и ПЛИС.

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

Сообщение ibiza11 »

в режиме "выход" к ножке подключается какой-либо потребитель (будь то светодиод или другая микросхема). в этом режиме уровни на ножке определяются двумя выходными транзисторами, которые могут либо прижать выход к земле, либо поднять к питанию. при этом ток может быть достаточно большим (относительно).
в режиме "вход" ножка сама является потребителем, выходные транзисторы заперты, ножка как бы висит в воздухе и ее состояние определяется внешним сигналом: подашь единицу - будет единица, подашь ноль- будет ноль.
подтяжка нужна только для того, чтобы ножка в режиме входа не болталась в воздухе при отсутствии сигнала источника. Бывают такие источники, которые имеют два состояния не лог."0"/лог."1", а например лог."0"/"воздух" (например обычная кнопка, которая закорачивает на землю), или лог."1"/"воздух" (это в случае, когда кнопка закорачивает на + питания). Чтобы в состоянии "воздух" вход микроконтроллера не мотылялся из одного состояния в другое от внешних наводок (почитайте подробнее про это, если слово не знакомо), специально используют подтяжку, которая будет определять состояние входа в момент, когда источник сигнала "висит в воздухе". Когда же источник подает активный сигнал, он должен как бы "побороть" эту подтяжку (это происходит в случае, если источник имеет сопротивление ниже сопротивления подтяжки в несколько раз).
В микроконтроллерах AVR есть возможность подтянуть вход только к + питания.
Надеюсь понятно объяснил, почти на пальцах.
Ставим плюсы: )
Реклама
Опытный кот
Аватара пользователя
Сообщения: 876
Зарегистрирован: Чт апр 12, 2012 07:19:59
Откуда: Тюмень

Сообщение xterro »

Да, так понятнее, спасибо сейчас попробую это всё обмозговать ))
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

FreshMan писал(а):вопрос касается ATmega8a относительно ADC
почему ADIF очищается аппаратно только в обработчике вектора прерываний ?
с каких соображений так сделано ?
Так на то он и флаг прерывания, чтобы указывать контроллеру на то, что нужно сделать прерывание АЦП, а если его не сбросить контроллер так и будет перескакивать на обработчик прерывания. Ну а если надо, его можно и руками сбросить, записав "1"...
Опытный кот
Аватара пользователя
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Сообщение coredumped »

xterro писал(а):Да, так понятнее, спасибо сейчас попробую это всё обмозговать ))
Чтоб совсем стало понятно, откройте Reference manual для своего контроллера (например - RM0090 для Cortex-M4F ) и в разделе 8 "General-purpose I/Os (GPIO)" почитайте, чем именно отличаются разные режимы портов. Там все достаточно подробно описано, с картинками :) А то у Вас уже вход от выхода не отличается :shock:
Все будет только лучше, в крайнем случае - хуже.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

вот сдесь http://www.protostack.com/blog/2011/02/ ... atmega168/ есть такой пример

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

uint16_t ReadADC(uint8_t __channel)

{

   ADMUX = (ADMUX & 0xf0) | __channel; // Channel selection

   ADCSRA |= _BV(ADSC);                // Start conversion

   while(!bit_is_set(ADCSRA,ADIF));    // Loop until conversion is complete

   ADCSRA |= _BV(ADIF);                // Clear ADIF by writing a 1 (this sets the value to 0)

 

   return(ADC);

}
в цикле while(!bit_is_set(ADCSRA,ADIF)); мы коротаем время пока не будут завершены преобразования, а потом сбрасываем флаг(сами).
не проще ли было бы сделать чтобы сдесь он сбрасывался аппаратно ?
Tell Me The Truth
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

FreshMan писал(а):не проще ли было бы сделать чтобы сдесь он сбрасывался аппаратно ?
Зависит от конкретной программы, где-то удобно через прерывания, где-то тупым ожиданием флага готовности.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

а почему чтобы сбросить ADIF то надо записать 1 ?
ведь 0 буыло бы логичней ........., из каких соображений так сделано ?
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Смотреть на микросхему 561ТМ2. Чем там сброс происходит?
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

по поводу 561ТМ2 там все понятно....., подаешь на вход R сигнал логической 1 и вуаля.......
а тут мы имеем дело с ячейкой памяти....., то извините, немног другое :))
Tell Me The Truth
Модератор
Аватара пользователя
Сообщения: 4618
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

FreshMan писал(а):ведь 0 буыло бы логичней
Согласен. Это равносильно тому, что фраза "сбросить бит" означала бы записать в бит единичку. Не логично однако ....
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

У меня у одного дежавю???
Кто то уже спрашивал похожее :)))
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4618
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

vitalik_1984, хорошая у Вас память :)) По крайней мере лучше чем у FreshMan :)))
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

в тот момент я так и не услышал внятно-понятного ответа......, прозвучали слова касающиеся вокруг да около и так "взагалi" :))
вот по этому пробел и остался :tea:
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Если не понятно что и как работает, то воспринимаем это как аксиому. Как библию. Как судьбу в виде даташита. :)) Ну а если не нравится, то делаем свое. :))
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

pyzhman писал(а):Если не понятно что и как работает
то надо искать источник где это понятно обясняется и излагается
всему есть логическое обьяснение :))
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

FreshMan писал(а):всему есть логическое обьяснение :))
Это логическое объяснение может крыться глубоко в схемотехнике контроллера, например если выход этого регистра, отвечающий за флаг статуса идет через логическое "ИЛИ" (со схемой дающей "1" при переходе на адрес вектора прерывания АЦП) на сброс триггера. При этом установка "1" в триггере происходит при окончании преобразования, а его выход это как раз тот самый бит флага но уже только для чтения (и для работы подсистемы прерывания). Т.е. этот бит не просто один физический бит памяти, которым можно манипулировать как вздумается, а более сложное устройство со своей хитрой схемой управления...
Сложный какой-то пример получился :facepalm:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

то надо искать источник где это понятно обясняется и излагается
Ищите молча, потом нам расскажете :))
Вообще почему Atmel сделал в управляющем регистре портом 0 это вход 1 это выход, в отличие от микрочип, где 1 это вход, а 0 это выход?
Таких загадок можно много найти, а ответ будет один- аппаратные особенности каждого Мк.
Сложный какой-то пример получился
Я как то так же пытался объяснить, но не вышло. Не знает человек что такое схемотехника. Да и плохо объясняю
Вообще ответ могут дать инженеры Atmel, может им стоит написать, вместо этого форума? :wink:
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Мол какого хэ, пацаны? :))
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

я тут читал что Cortex M3 имеет разделенную шину данных и управления и общую память для програм и ОЗУ
а у AVR шина данных и управления тоже разделены ?
Tell Me The Truth
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

вот так и хочется написать "нах.я тебе все это?"
вы знаете зачем эти шины нужны? а они вообще есть в AVR?
Ставим плюсы: )
Ответить

Вернуться в «Разные вопросы по МК»