Пара вопросов по МК 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
ISR (INT0_vect) вот эта строчка мне не известна.
Это объявление прерывания по INT0 в стиле WinAVR.
do - это я так понимаю цикл, но вот в чём его отличие от while?
Циклом является конструкция
Код: Выделить всё
do
{
/*Тело цикла*/
}while (/*Условие*/);
Отличие от простого 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 в том, что условие проверяется после выполнения тела цикла. Таким образом, тело цикла выполнится как минимум один раз.
Не знаю на счёт того когда условие проверяется, может я не понимаю о чём речь, но то что while по середине цикла не остановится это факт, я для этого в прерывании присваиваю переменной отвечающей за задержку 0, ибо если не присвоить и нажать кнопку, он обработает прерывание, добавит к переменной единицу, следовательно условие не будет соответствовать, но он всё равно выполнит цикл до конца и только потом выполнит тот цикл который соответствует условию. То есть хотя бы раз, как вы говорите, цикл выполнит даже while! Собственно в этом и была вся загвоздка, мы с товарищем очень долго не могли понять как нам правильно сделать кнопку, очень быстро разобрались прерыванием и условием в циклах, но срабатывать сразу она не хотела, нажимали, и цикл менялся только тогда, когда тот, во время которого была нажата кнопка не доходил до конца, со временем нас осенило в обработчике выставлять прерывание 0,чтобы остаток цикла прочитывался быстро, незаметно для глаз человека, а в начале каждого цикла переменной присваивалось нужное значение задержки.
Re: Пара вопросов по МК AVR
Ааа... Я кажется понял. Тот что у вас сходу выполнит, а потом сравнить в конце цикла, а просто while, если в самом начале не совпало не будет выполнять, но если уже начал то до конца всё же доделает. Так?
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Пара вопросов по МК AVR
так. тема о вопросах по МК AVR, а вопросы по Си.... почитайте Кернигана "Язык программирования Си"
Ставим плюсы: )
Re: Пара вопросов по МК AVR
Я вообще-то и сказал что буду разбираться, человек предложил помощь, что тут плохого?! Какая вам разница я буду читать книгу или задавать вопросы у получать ответы от того, кто предложил помочь?
Это самое начало этой ветки. Что первый что второй вопрос затрагивает именно код, заливаемый в МК, не считая что второй вопрос, по сути то что мы обсуждаем, просто у меня МК другой! И ваше замечание имело бы место если бы Си вообще никак не касался МК AVR или бы было указано что пара вопросов по железу, пайке и установке МК AVR. Так как в программировании данных МК одним из используемых языком является Си и в шапке не указана работа только с железом паяльниками, бокарезами и т.п. то ваше замечание НЕ УМЕСТНО!!!!
Подскажите, плз, начинающему, как решить 2 вопроса:
1-й генерация AVR ATtiny2313, ATmega8 звука
2-й включение/отключение питания МК одной кнопкой, т.к. есть необходимость сделать один девайс, где надо реализовать так питание.
Тренируюсь в программировании МК на WinAVR
Это самое начало этой ветки. Что первый что второй вопрос затрагивает именно код, заливаемый в МК, не считая что второй вопрос, по сути то что мы обсуждаем, просто у меня МК другой! И ваше замечание имело бы место если бы Си вообще никак не касался МК AVR или бы было указано что пара вопросов по железу, пайке и установке МК AVR. Так как в программировании данных МК одним из используемых языком является Си и в шапке не указана работа только с железом паяльниками, бокарезами и т.п. то ваше замечание НЕ УМЕСТНО!!!!
Re: Пара вопросов по МК AVR
Koldyn писал(а):Я вообще-то и сказал что буду разбираться, человек предложил помощь, что тут плохого?! Какая вам разница ...
ibiza11, между прочим, тоже ответил на Ваш вопрос и помогает Вам:
ibiza11 писал(а):Koldyn писал(а):Так?
так.
Спойлер
Не разгоняйте людей, старающихся Вам помочь. Тем более, что, если у Вас возникают вопросы при фразе "цикл с пост-условием", то теорию по собственно языку и основам алгоритмизации Вам таки еще читать и читать. ibiza11 указал Вам правильный курс, который указал бы и я, ответь я раньше. Именно, что вопрос про циклы - "книжный", для самостоятельного изучения. И Вам даже указали книгу, в которой про все это можно прочесть.если бы Си вообще никак не касался МК AVR
Си никак не касается МК AVR. Это отдельный самостоятельный язык, на котором пишут под очень многие архитектуры. Более того, чтобы адаптировать Си, изначально не приспособленный к гарвардской архитектуре, для AVR, в AVR-GCC введены отклонения вроде PROGMEM, EEMEM и т.п.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- 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, никакого совпадения и соотвественно ШИМ не получится.
прочитайте хотя бы что такое ЦАП.