Пара вопросов по МК AVR
Re: Пара вопросов по МК AVR
Спасибо конечно, но я пока не всё понял что вы написали. Только начинаю писать на Си и по этому не все операторы знаю, буду разбираться.
- Реклама
Re: Пара вопросов по МК AVR
Что конкретно непонятно? Сразу бы и спросили.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: Пара вопросов по МК AVR
ISR (INT0_vect) вот эта строчка мне не известна.
do - это я так понимаю цикл, но вот в чём его отличие от while?
while (INT_PORT & INT0_PINMASK); на сколько знаю while это цикл, но здесь не вижу фигурных скобок, тогда вопрос что делает эта строка? Правда то что в круглых скобках мне тоже не понятно!
something_worthwhile(); И эта строка мне тоже не известна!
И ещё бы освежить в памяти зачем нужны флаги внешних прерываний.
do - это я так понимаю цикл, но вот в чём его отличие от while?
while (INT_PORT & INT0_PINMASK); на сколько знаю while это цикл, но здесь не вижу фигурных скобок, тогда вопрос что делает эта строка? Правда то что в круглых скобках мне тоже не понятно!
something_worthwhile(); И эта строка мне тоже не известна!
И ещё бы освежить в памяти зачем нужны флаги внешних прерываний.
Re: Пара вопросов по МК AVR
Это объявление прерывания по INT0 в стиле WinAVR.ISR (INT0_vect) вот эта строчка мне не известна.
Циклом является конструкцияdo - это я так понимаю цикл, но вот в чём его отличие от while?
Код: Выделить всё
do
{
/*Тело цикла*/
}while (/*Условие*/);
Это проверка того, что кнопка нажата. Макросом INT_PORT я символически обозначил порт, на каотором кнопка, INT0_PINMASK - битовую маску ножки, к которой подключена кнопка, т.е., ножки INT0.то что в круглых скобках мне тоже не понятно!
Ну, так я символически обозначил ваш полезный код. "Something worthwhile" в переводе с английского - "что-то полезное (стоящее)".something_worthwhile(); И эта строка мне тоже не известна!
Хороший тон - давать функциям/переменным/макросам говорящие англоязычные имена. Привыкайте к этому.
INT_PORT -> INTerrupt PORT
INT0_PINMASK -> mask of INT0 pin
ISR -> Interrupt Service Routine
И так далее. "Something worthwhile" я уже переводил.
Флаг внешнего прерывания - бит в специальном регистре, который отвечает за вызов. Если его установить, то обработчик будет вызван сразу, как только это станет возможным. Этот бит обычно устанавливается аппаратурой.И ещё бы освежить в памяти зачем нужны флаги внешних прерываний.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: Пара вопросов по МК AVR
Не знаю на счёт того когда условие проверяется, может я не понимаю о чём речь, но то что while по середине цикла не остановится это факт, я для этого в прерывании присваиваю переменной отвечающей за задержку 0, ибо если не присвоить и нажать кнопку, он обработает прерывание, добавит к переменной единицу, следовательно условие не будет соответствовать, но он всё равно выполнит цикл до конца и только потом выполнит тот цикл который соответствует условию. То есть хотя бы раз, как вы говорите, цикл выполнит даже while! Собственно в этом и была вся загвоздка, мы с товарищем очень долго не могли понять как нам правильно сделать кнопку, очень быстро разобрались прерыванием и условием в циклах, но срабатывать сразу она не хотела, нажимали, и цикл менялся только тогда, когда тот, во время которого была нажата кнопка не доходил до конца, со временем нас осенило в обработчике выставлять прерывание 0,чтобы остаток цикла прочитывался быстро, незаметно для глаз человека, а в начале каждого цикла переменной присваивалось нужное значение задержки.Отличие от простого while в том, что условие проверяется после выполнения тела цикла. Таким образом, тело цикла выполнится как минимум один раз.
- Реклама
Re: Пара вопросов по МК AVR
Ааа... Я кажется понял. Тот что у вас сходу выполнит, а потом сравнить в конце цикла, а просто while, если в самом начале не совпало не будет выполнять, но если уже начал то до конца всё же доделает. Так?
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Пара вопросов по МК AVR
так. тема о вопросах по МК AVR, а вопросы по Си.... почитайте Кернигана "Язык программирования Си"
Ставим плюсы: )
Re: Пара вопросов по МК AVR
Я вообще-то и сказал что буду разбираться, человек предложил помощь, что тут плохого?! Какая вам разница я буду читать книгу или задавать вопросы у получать ответы от того, кто предложил помочь?
Это самое начало этой ветки. Что первый что второй вопрос затрагивает именно код, заливаемый в МК, не считая что второй вопрос, по сути то что мы обсуждаем, просто у меня МК другой! И ваше замечание имело бы место если бы Си вообще никак не касался МК AVR или бы было указано что пара вопросов по железу, пайке и установке МК AVR. Так как в программировании данных МК одним из используемых языком является Си и в шапке не указана работа только с железом паяльниками, бокарезами и т.п. то ваше замечание НЕ УМЕСТНО!!!!Подскажите, плз, начинающему, как решить 2 вопроса:
1-й генерация AVR ATtiny2313, ATmega8 звука
2-й включение/отключение питания МК одной кнопкой, т.к. есть необходимость сделать один девайс, где надо реализовать так питание.
Тренируюсь в программировании МК на WinAVR
Re: Пара вопросов по МК AVR
ibiza11, между прочим, тоже ответил на Ваш вопрос и помогает Вам:Koldyn писал(а):Я вообще-то и сказал что буду разбираться, человек предложил помощь, что тут плохого?! Какая вам разница ...
ibiza11 писал(а):так.Koldyn писал(а):Так?
Спойлер
Не разгоняйте людей, старающихся Вам помочь. Тем более, что, если у Вас возникают вопросы при фразе "цикл с пост-условием", то теорию по собственно языку и основам алгоритмизации Вам таки еще читать и читать. ibiza11 указал Вам правильный курс, который указал бы и я, ответь я раньше. Именно, что вопрос про циклы - "книжный", для самостоятельного изучения. И Вам даже указали книгу, в которой про все это можно прочесть.Си никак не касается МК AVR. Это отдельный самостоятельный язык, на котором пишут под очень многие архитектуры. Более того, чтобы адаптировать Си, изначально не приспособленный к гарвардской архитектуре, для AVR, в AVR-GCC введены отклонения вроде PROGMEM, EEMEM и т.п.если бы Си вообще никак не касался МК AVR
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Пара вопросов по МК AVR
Koldyn, вместо написания этого сообщения лучше бы почитали основы Си. узнали бы чем отличаются конструкции while и do-while без лишних вопросов. Что за остервенелое чувство того, что кто-то вам должен это все рассказать?
Ставим плюсы: )
Re: Пара вопросов по МК AVR
На лицо недопонимание, по этому хочу извиниться если кого-то обидел!
Я и не говорил что он мне не помогал! В любом случае спасибо за помощь! И то что я в чём-то другом не согласен с ibiza11 ни в коем случае не означает что я неблагодарен за помощь. Но эта благодарность же не означает что я должен соглашаться с ним во всём! У меня есть своё мнение, и если я считаю что ibiza11 был в чём-то не прав то это ни как не отменяет того что он мне помог и я благодарен!
Ещё раз извиняюсь! Ни в коем случае не хотел никого обидеть и выказать не уважение, вроде написал аккуратно и без оскорблений, и однозначно благодарен за помощь, тем более, что уверен, ещё обращусь и не раз. Но просто стало обидно, я ведь читал и просто не понял, по этому и задал вопрос по тому что не понятно, а меня обвинили в невежестве!
ibiza11, между прочим, тоже ответил на Ваш вопрос и помогает Вам
Я и не говорил что он мне не помогал! В любом случае спасибо за помощь! И то что я в чём-то другом не согласен с ibiza11 ни в коем случае не означает что я неблагодарен за помощь. Но эта благодарность же не означает что я должен соглашаться с ним во всём! У меня есть своё мнение, и если я считаю что ibiza11 был в чём-то не прав то это ни как не отменяет того что он мне помог и я благодарен!
Вынужден не согласиться. Рас для МК пишут на Си, не важно с какими дополнениями и адаптациями, то он к ним всё таки относится. Или МК относятся к СИ. но это не суть важно. Вот к примеру топор или скажем колесо от велосипеда никак не относиться к МК, впрочем как и к Си. Я же не говорил что Си разработали исключительно для МК! Нет конечно же. Но заявлять что он ни как к ним не относиться... причём это ж не то что какой-то один уникум умудрился написать на Си что-то для МК в то время как никто больше такого не практикует. На нём пишут для МК и в очень больших объёмах! Добавлю что я не затрагивал какие-то нюансы языка не касающиеся МК, я ж не спрашивал как скомпелировать какую-то софтину написанную под винду!Си никак не касается МК AVR. Это отдельный самостоятельный язык, на котором пишут под очень многие архитектуры.
Я собственно перед тем как писать то сообщение уже почитал как раз, и если вы не видели то ответил что понял в чём соль!вместо написания этого сообщения лучше бы почитали основы Си
Без лишних вопросов, к сожалению, не получается, ибо книге не задашь вопрос, и если там написано что каким-то образом, то только им и никаким другим, и если я не понял именно ту интерпретацию, тот набор слов которым автор хотел донести до читателя свою мысль, то хоть я сто раз прочитаю, результат маловероятно что изменится. Форумы вообще-то для этого и созданы чтобы задавать вопросы и выяснять что не ясно, ибо каждый человек объясняет по своему и то что один не смог объяснить или я не смог его понять, другой сможет.узнали бы чем отличаются конструкции while и do-while без лишних вопросов
Я ни где не требовал ничего мне объяснять и никого не заставлял, прежде чем спрашивать я почитал!!! Всё равно немного не понял, уточнил то что понял. Потом, просто перебирая мысли в голове до меня дошло то что мне толковали и я дабы не утруждать людей, ответил что понял, и что можно не разжевывать! И где же этоЧто за остервенелое чувство того, что кто-то вам должен это все рассказать?
???остервенелое чувство того, что кто-то вам должен это все рассказать
Ещё раз извиняюсь! Ни в коем случае не хотел никого обидеть и выказать не уважение, вроде написал аккуратно и без оскорблений, и однозначно благодарен за помощь, тем более, что уверен, ещё обращусь и не раз. Но просто стало обидно, я ведь читал и просто не понял, по этому и задал вопрос по тому что не понятно, а меня обвинили в невежестве!
Re: Пара вопросов по МК AVR
Предлагаю закончить эту полемику, ибо это уж точно не по теме данной ветки! 
-
mechanical_lynx
- Родился
- Сообщения: 4
- Зарегистрирован: Вс фев 10, 2013 02:30:00
Re: Пара вопросов по МК AVR
Доброго времени суток! Подскажите, пожалуйста, можно ли с выходов микроконтроллера подавать синусоидальный сигнал? Это необходимо для управления фазами двигателя переменного тока
Re: Пара вопросов по МК AVR
Если в МК есть ЦАП, то да.
Если в МК нет ЦАП (99% недорогих МК), то напрямую нет. Можно либо организовать ШИМ, либо запилить R-2R ЦАП.
Если в МК нет ЦАП (99% недорогих МК), то напрямую нет. Можно либо организовать ШИМ, либо запилить R-2R ЦАП.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
-
mechanical_lynx
- Родился
- Сообщения: 4
- Зарегистрирован: Вс фев 10, 2013 02:30:00
Re: Пара вопросов по МК AVR
Спасибо. А можно по-подробнее: как организовать это через ЦАП?
Re: Пара вопросов по МК AVR
Для управления двигателем ЦАП не особо нужен. Тем более, что силовые транзисторы гораздо эффективнее использовать в ключевом режиме. Вполне хватит ШИМа.как организовать это через ЦАП?
А так - загоняем в память массив синуса, сдвинутого в диапазон [0;255] (ради Бога, не пытайтесь работать в МК с вещественными числами и, тем более, вычислять синус в рантайме
Это самый элементарный случай, естесственно. Для полноценного (с контролем оборотов, момента и т.п.) управления мотором нужно еще много других действий. Но тупо прокрутить мотор и так можно.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
-
mechanical_lynx
- Родился
- Сообщения: 4
- Зарегистрирован: Вс фев 10, 2013 02:30:00
Re: Пара вопросов по МК AVR
Спасибо за совет, YS. попробую выкрутиться
Re: Пара вопросов по МК AVR
Да не за что. Поройте интернет, тема-то известная. Почитайте аппноуты по теме motor control.
Например, тут много полезного.
Например, тут много полезного.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: Пара вопросов по МК AVR
Возможно ли на 8-битном таймере делать ШИМ с произвольным периодом? Или в 8-битном доступен только фиксированный набор делителей?
Еще вопрос.
У всех видов PWM есть режим "TOP = OCRn". Как им пользоваться и зачем он нужен? Сигнал на выходе меняется при совпадении с OCRn. А если счетчик будет считать только до OCRn, никакого совпадения и соотвественно ШИМ не получится.
Еще вопрос.
У всех видов PWM есть режим "TOP = OCRn". Как им пользоваться и зачем он нужен? Сигнал на выходе меняется при совпадении с OCRn. А если счетчик будет считать только до OCRn, никакого совпадения и соотвественно ШИМ не получится.


