Re: Пара вопросов по МК AVR
Добавлено: Вс апр 28, 2013 11:00:43
Спасибо конечно, но я пока не всё понял что вы написали. Только начинаю писать на Си и по этому не все операторы знаю, буду разбираться.
Это объявление прерывания по INT0 в стиле WinAVR.ISR (INT0_vect) вот эта строчка мне не известна.
Циклом является конструкцияdo - это я так понимаю цикл, но вот в чём его отличие от while?
Код: Выделить всё
do
{
/*Тело цикла*/
}while (/*Условие*/);
Это проверка того, что кнопка нажата. Макросом INT_PORT я символически обозначил порт, на каотором кнопка, INT0_PINMASK - битовую маску ножки, к которой подключена кнопка, т.е., ножки INT0.то что в круглых скобках мне тоже не понятно!
Ну, так я символически обозначил ваш полезный код. "Something worthwhile" в переводе с английского - "что-то полезное (стоящее)".something_worthwhile(); И эта строка мне тоже не известна!
Флаг внешнего прерывания - бит в специальном регистре, который отвечает за вызов. Если его установить, то обработчик будет вызван сразу, как только это станет возможным. Этот бит обычно устанавливается аппаратурой.И ещё бы освежить в памяти зачем нужны флаги внешних прерываний.
Не знаю на счёт того когда условие проверяется, может я не понимаю о чём речь, но то что while по середине цикла не остановится это факт, я для этого в прерывании присваиваю переменной отвечающей за задержку 0, ибо если не присвоить и нажать кнопку, он обработает прерывание, добавит к переменной единицу, следовательно условие не будет соответствовать, но он всё равно выполнит цикл до конца и только потом выполнит тот цикл который соответствует условию. То есть хотя бы раз, как вы говорите, цикл выполнит даже while! Собственно в этом и была вся загвоздка, мы с товарищем очень долго не могли понять как нам правильно сделать кнопку, очень быстро разобрались прерыванием и условием в циклах, но срабатывать сразу она не хотела, нажимали, и цикл менялся только тогда, когда тот, во время которого была нажата кнопка не доходил до конца, со временем нас осенило в обработчике выставлять прерывание 0,чтобы остаток цикла прочитывался быстро, незаметно для глаз человека, а в начале каждого цикла переменной присваивалось нужное значение задержки.Отличие от простого while в том, что условие проверяется после выполнения тела цикла. Таким образом, тело цикла выполнится как минимум один раз.
Это самое начало этой ветки. Что первый что второй вопрос затрагивает именно код, заливаемый в МК, не считая что второй вопрос, по сути то что мы обсуждаем, просто у меня МК другой! И ваше замечание имело бы место если бы Си вообще никак не касался МК AVR или бы было указано что пара вопросов по железу, пайке и установке МК AVR. Так как в программировании данных МК одним из используемых языком является Си и в шапке не указана работа только с железом паяльниками, бокарезами и т.п. то ваше замечание НЕ УМЕСТНО!!!!Подскажите, плз, начинающему, как решить 2 вопроса:
1-й генерация AVR ATtiny2313, ATmega8 звука
2-й включение/отключение питания МК одной кнопкой, т.к. есть необходимость сделать один девайс, где надо реализовать так питание.
Тренируюсь в программировании МК на WinAVR
ibiza11, между прочим, тоже ответил на Ваш вопрос и помогает Вам:Koldyn писал(а):Я вообще-то и сказал что буду разбираться, человек предложил помощь, что тут плохого?! Какая вам разница ...
ibiza11 писал(а):так.Koldyn писал(а):Так?
Си никак не касается МК AVR. Это отдельный самостоятельный язык, на котором пишут под очень многие архитектуры. Более того, чтобы адаптировать Си, изначально не приспособленный к гарвардской архитектуре, для AVR, в AVR-GCC введены отклонения вроде PROGMEM, EEMEM и т.п.если бы Си вообще никак не касался МК AVR
ibiza11, между прочим, тоже ответил на Ваш вопрос и помогает Вам
Вынужден не согласиться. Рас для МК пишут на Си, не важно с какими дополнениями и адаптациями, то он к ним всё таки относится. Или МК относятся к СИ. но это не суть важно. Вот к примеру топор или скажем колесо от велосипеда никак не относиться к МК, впрочем как и к Си. Я же не говорил что Си разработали исключительно для МК! Нет конечно же. Но заявлять что он ни как к ним не относиться... причём это ж не то что какой-то один уникум умудрился написать на Си что-то для МК в то время как никто больше такого не практикует. На нём пишут для МК и в очень больших объёмах! Добавлю что я не затрагивал какие-то нюансы языка не касающиеся МК, я ж не спрашивал как скомпелировать какую-то софтину написанную под винду!Си никак не касается МК AVR. Это отдельный самостоятельный язык, на котором пишут под очень многие архитектуры.
Я собственно перед тем как писать то сообщение уже почитал как раз, и если вы не видели то ответил что понял в чём соль!вместо написания этого сообщения лучше бы почитали основы Си
Без лишних вопросов, к сожалению, не получается, ибо книге не задашь вопрос, и если там написано что каким-то образом, то только им и никаким другим, и если я не понял именно ту интерпретацию, тот набор слов которым автор хотел донести до читателя свою мысль, то хоть я сто раз прочитаю, результат маловероятно что изменится. Форумы вообще-то для этого и созданы чтобы задавать вопросы и выяснять что не ясно, ибо каждый человек объясняет по своему и то что один не смог объяснить или я не смог его понять, другой сможет.узнали бы чем отличаются конструкции while и do-while без лишних вопросов
Я ни где не требовал ничего мне объяснять и никого не заставлял, прежде чем спрашивать я почитал!!! Всё равно немного не понял, уточнил то что понял. Потом, просто перебирая мысли в голове до меня дошло то что мне толковали и я дабы не утруждать людей, ответил что понял, и что можно не разжевывать! И где же этоЧто за остервенелое чувство того, что кто-то вам должен это все рассказать?
???остервенелое чувство того, что кто-то вам должен это все рассказать
Для управления двигателем ЦАП не особо нужен. Тем более, что силовые транзисторы гораздо эффективнее использовать в ключевом режиме. Вполне хватит ШИМа.как организовать это через ЦАП?