|
Вопрос новичка по AVR |
|
|
|
Dec 1 2008, 20:04
|
Группа: Участник
Сообщений: 11
Регистрация: 1-12-08
Пользователь №: 42 133

|
Здравствуйте!
Начинаю изучать микроконтроллеры. Выбрал AVR. В качестве первого проекта хочу сделать устройство, которое подключается по usb и позволяет управлять 8-ью транзисторными выходами (для коммутации небольшой нагрузки). Собираюсь приобрести AVR Dragon (стоит ли брать именно его?) Какую конкретно AtMega лучше выбрать? Может быть где-нибудь есть подобные схемы?
Заранее большое спасибо!!!
--------------------
|
|
|
|
|
Dec 1 2008, 21:54
|
Группа: Участник
Сообщений: 11
Регистрация: 1-12-08
Пользователь №: 42 133

|
Изучаю... Огромное спасибо.
--------------------
|
|
|
|
|
Dec 2 2008, 11:12
|

За битами по регистрам гоняюсь
  
Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446

|
Цитата(domowoj @ Dec 2 2008, 06:27)  Что-то Вы сразу замахнулись "на Вильяма нашего, так сказать, Шекспира". Сложно будет. Ну, повторить-то будет не сложно, а вот если устройство заработает, опыт будет бесценным. Конечно, просто поморгать светодиодом для начинающего наверное лучше, но эти конструкции уже многократно проверены, в крайнем случае на той-же плате USB можно будет и потренироваться со светодиодом, а после залить рабочую прошивку.
--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
|
|
|
|
|
Dec 2 2008, 19:56
|
Частый гость
 
Группа: Новичок
Сообщений: 97
Регистрация: 15-04-08
Пользователь №: 36 783

|
Очень интересно. А на русском подобные ссылки имеются?
--------------------
Самурай без меча - такой же, как самурай с мечом, только без меча
|
|
|
|
|
Dec 5 2008, 21:01
|
Группа: Новичок
Сообщений: 11
Регистрация: 12-04-08
Пользователь №: 36 705

|
По моему опыту обучение пойдёт намного продуктивнее если ты не будешь тупо копировать чьи-то работы, а сам писать всё от начала и до конца. Начни просто с мигания светодиодом по счетчику, потом несколько с/д попеременно, потом с ШИМом разберись, потом АЦП и уж потом передача данных по COM / USB
|
|
|
|
|
Dec 8 2008, 08:20
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Цитата(chajnik @ Dec 8 2008, 11:57)  Думаю,мой вопрос для этой темы подойдет.Тоже недавно начал изучать программирование AVR.На СИ и компилятором CVAVR.Уже многому научился.Вот щас никак не могу додуматься-как сделать так,чтобы при кратковременном нажатии кнопки программа выполняла одну работу,а при удерживании например 3 сек.-другую. Понимаю,что нужно считать время,как это сделать,не пойму.  Зависит от того как у вас реализовано сканирование кнопок. Если чтото типа такого: Код if(!PINC.1) //если кнопка нажата то ждём пока её отпустят { while(!PINC.1); } То вставте в цикл while счётчик и инкриментируйте его (только подберите константу _3000ms ): Код cnt=0; if(!PINC.1) //если кнопка нажата то ждём пока её отпустят { while(!PINC.1) cnt++;
if(cnt < _3000ms) task1(); //при удержании меньше 3с else task2(); //при удержании больше 3с
} Если приведёте ваш вариант сканирования кнопок то подсказать как вам реализовать вашу идею будет проще
|
|
|
|
|
Dec 8 2008, 08:32
|
Участник

Группа: Новичок
Сообщений: 21
Регистрация: 25-08-08
Пользователь №: 39 811

|
У меня именно так опрос кнопок,спасибо,буду разбираться.
|
|
|
|
|
Dec 8 2008, 08:32
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(mempfis_ @ Dec 8 2008, 11:20)  Зависит от того как у вас реализовано сканирование кнопок. Если чтото типа такого: то придётся всё переделать, ибо чушь. Стоять и ждать 3 секунды, пока нажата кнопка - непозволительная блажь. Тем более никакой защиты от дребезга. Нормальный вариант - это опрос по таймеру и выставление соответственных флагов для последующей обработки в основном потоке. А обработка следующая: Если флаг стоит более _хх_ (нужное вписать) миллисекунд (обычно 20-50), считаем, сто кнопка нажата и выполняем нужное действие. Если более _хххх_ мс (3000, например), то выполняем другое действие. Время отсчитывается по тому же таймеру, то есть в каждом прерывании инкрементируем переменную времени.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Dec 8 2008, 08:40
|
Участник

Группа: Новичок
Сообщений: 21
Регистрация: 25-08-08
Пользователь №: 39 811

|
Цитата Стоять и ждать 3 секунды, пока нажата кнопка - непозволительная блажь. В моей программе это не страшно,думаю пример mempfis_ лучше подойдет для меня, с этим- Код cnt я еще не сталкивался.Это что ,переменная,CVAVR на это- _3000ms ошибку выдает,что такое task тоже не знаю.
Сообщение отредактировал chajnik - Dec 8 2008, 09:02
|
|
|
|
|
Dec 8 2008, 09:20
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Цитата(chajnik @ Dec 8 2008, 12:40)  В моей программе это не страшно,думаю пример mempfis_ лучше подойдет для меня, с этим- Код cnt я еще не сталкивался.Это что ,переменная,CVAVR на это- _3000ms ошибку выдает,что такое task тоже не знаю. В CVAVR есть библиотека delay.h delay_ms(), delay_us(). Подключите её через #include <delay.h> Перед функцией main объявите глобальную переменную Цитата unsigned int cnt=0; и константу количества инкрементов этого счётчика которые будут считаться как 3 секунды Код #define _3000ms 3000 Код #include <delay.h>
unsigned int cnt=0; #define _3000ms 3000
void task1(void) { //действия при удержании менее 3 с }
void task2(void) { //действия при удержании более 3 с }
void main(void) { //инициализация мк
for(;;) {
if(!PINC.1) //если кнопка нажата то ждём пока её отпустят { cnt=0; while(!PINC.1) { if(cnt != 0xffff) cnt++;//инкримент с проверкой на границу delay_ms(1);//ждём миллисекунду }
if(cnt < _3000ms) task1(); //при удержании меньше 3с else task2(); //при удержании больше 3с } }
} tsk1(), task2() - это ваши функции в которых вы можете выполнить необходимые вам действия Потренеруйтесь на этом для начала а потом сделайте как вам посоветовал MrYuran и как делают все в таком случае - для сканирования кнопок используйте прерывания от одного из таймеров
Сообщение отредактировал mempfis_ - Dec 8 2008, 09:20
|
|
|
|
|
Dec 8 2008, 09:39
|
Участник

Группа: Новичок
Сообщений: 21
Регистрация: 25-08-08
Пользователь №: 39 811

|
Все понял.
|
|
|
|
|
Dec 17 2008, 08:27
|
Группа: Новичок
Сообщений: 5
Регистрация: 26-11-08
Пользователь №: 41 983

|
Цитата(domowoj @ Dec 2 2008, 05:27)  Что-то Вы сразу замахнулись "на Вильяма нашего, так сказать, Шекспира".
Сложно будет. В Flowcode ,eltn d 1000 раз проще!!!!! Сам немного пробовал,да и люди продвинутые в микроконтроллерах пишут: -"Для программы- Flowcode (есть для-AVR есть и для PIC) ненужен язык, как все остальные. не нужно писать кодов в редакторе. тут программа собирается из кубиков, визуально. то есть ты рисуешь алгоритм программы из готовых кирпичиков с определенными функциями, а код непосредственно программа пишет (компилирует) за вас, фактически языка как такового знать не нужно, достаточно найти общий язык с программой, понять что каждый элемент делает. это совсем не сложно, расматривайте каждый кубик как радиодеталь, компонент со своими функциями. и стройте свою схему, все остальное, вплоть до получения конечного HEX файла (ко%
Сообщение отредактировал Neman2000 - Dec 17 2008, 08:55
|
|
|
|
|
Dec 17 2008, 11:49
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Цитата(Neman2000 @ Dec 17 2008, 11:27)  В Flowcode ,eltn d 1000 раз проще!!!!! Сам немного пробовал,да и люди продвинутые в микроконтроллерах пишут: -"Для программы- Flowcode (есть для-AVR есть и для PIC) ненужен язык, как все остальные. не нужно писать кодов в редакторе. тут программа собирается из кубиков, визуально. то есть ты рисуешь алгоритм программы из готовых кирпичиков с определенными функциями, а код непосредственно программа пишет (компилирует) за вас, фактически языка как такового знать не нужно, достаточно найти общий язык с программой, понять что каждый элемент делает. это совсем не сложно, расматривайте каждый кубик как радиодеталь, компонент со своими функциями. и стройте свою схему, все остальное, вплоть до получения конечного HEX файла (ко% Сколько же человек пишут на ассемблере, С и не знают сего чуда. Каково качество кодогенерации? Прежде чем рекламировать (и не в одном месте) оцените качество кода и объем. Обычно плата за простоту создания огромный избыточный код.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Dec 26 2008, 08:35
|
Группа: Новичок
Сообщений: 5
Регистрация: 20-10-08
Пользователь №: 41 057

|
Цитата(mdmitry @ Dec 17 2008, 14:49)  Сколько же человек пишут на ассемблере, С и не знают сего чуда. Каково качество кодогенерации? Прежде чем рекламировать (и не в одном месте) оцените качество кода и объем. Обычно плата за простоту создания огромный избыточный код. А есть ещё и Algorithm Builder for AVR http://algrom.net/russian.htmlПрограммирование идёт визуально... сам код на ассемблере. Как народ пишет (сам только начинаю изучать МК)... то этой прогой можно легко отлаживать большие программы на ассемблере... проще не запутаться случайно!
|
|
|
|
|
Dec 26 2008, 09:59
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(Spirit412 @ Dec 26 2008, 16:35)  Как народ пишет Народ это профессионалы или ...? Прежде, чем доверяться "объективному" мнению народа, следует почитать топики с обсуждениями сих чудных продуктов. На электрониксе они есть. P.S. Выбрав AB или что-то в этом роде Вы прежде всего лишите себя квалифицированной помощи специалистов, которые вряд ли захотят разбираться в экзотике. Издавна получается, что программирование в машинных кодах ведется с помощью ассемблера, а для замены ассемблера есть Си++. AB и что-то там еще, к сожалению не в одну нишу не попадают. З.Ы. Все сказанное всего лишь мое ИМХО, которое формировалось на основе личного опыта, чтения подобных веток "... vs ..." и т.п. А также все сказанное относится к МК, ни о каких IBM PC и т.п. речь не идет.
--------------------
Выбор.
|
|
|
|
|
Dec 26 2008, 18:12
|

Гуру
     
Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591

|
Цитата(haker_fox @ Dec 26 2008, 12:59)  программирование в машинных кодах ведется с помощью ассемблера, а для замены ассемблера есть Си++. AB и что-то там еще Программирование в машинных кодах -ведется в машинных кодах (двоично, восьмирично , шестнацатирично) . Сам ляпал крохотные восьмиричные тестовые программки для ремонта PDP-11, но знал человека, написавшего тетрис в машинных кодах. АБ , чтобы не говорили специалисты и примкнувшие к ним, кто таковыми себя считает, полноценный ассемблер, один в один , что напишешь , то и получишь. В отличии , например , от Кодевижена, который склоняют на каждом углу. И почему то, никто не желает бросить Винды и вернуться в ДОС.
|
|
|
|
|
Dec 29 2008, 23:20
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(muravei @ Dec 26 2008, 21:12)  знал человека, написавшего тетрис в машинных кодах. Даа. Знал что мазохисты встречаются, но чтобы так... Цитата(muravei @ Dec 26 2008, 21:12)  АБ , чтобы не говорили специалисты и примкнувшие к ним, кто таковыми себя считает, полноценный ассемблер, один в один , что напишешь , то и получишь. При хорошем понимании СИ и даже СИ++ и нормальном инструментарии типа IAR, GCC Ваши слова вызывают скепсис. Что, вернее как напишешь на СИ - то такой ASM листинг и получишь. Не надо загонять себя в угол. При массе достоинств у ASM есть и не меньшее количество недостатков. Я твёрдо убеждён в том, что человек написавший хоть раз программу на языке высокого уровня никогда не захочет вернутся на чистый ASM без жизненной на то необходимости. А всякие там недоязыки программирования - это однозначно тупиковая ветвь.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Dec 30 2008, 07:18
|
Группа: Новичок
Сообщений: 5
Регистрация: 20-10-08
Пользователь №: 41 057

|
Можете конечно смеяться... Но напишу как лузер... который только начал осваивать МК... и программирование их. Кроме программирования на PHP... и явы... А... ну ещё Визуал бэйсик для Корела... и ЯвыСкрипт для Иллюстратора... с панорамированием не сталкивался.
Сначало было очень сложно сделать выбор книги... т.к. большая часть является либо переводом на русский даташита... либо ориентируется на пользователей - уже имеющих представление о МК... Книга на которой остановился - это "Вводный курс" Джона Мортана.... Очень всё доходчиво описано.... Но примеры разбираемые, написаны на АСМ... Посмотрел я тут описание СИ... и понял! Достаточно вникнуть... хотябы в общем представлении в АСМ и научиться программировать более менее сложные программы... А дальнейший переход на Си... будет делом одной, двух недель.
|
|
|
|
|
Dec 30 2008, 15:18
|

Гуру
     
Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591

|
Цитата(demiurg_spb @ Dec 30 2008, 02:20)  Даа. Знал что мазохисты встречаются, но чтобы так... Просто , по другому тогда было сложнее.  Вы в те времена , еще лежали густо присыпанные тальком...Ну , или как минимум-под стол пешком ходили... Цитата(demiurg_spb @ Dec 30 2008, 02:20)  Что, вернее как напишешь на СИ - то такой ASM листинг и получишь. Была тут где-то темка , где человеку требовалось точно знать последовательность операторов, а компилятор сообщал что , он ничего не гарантирует. Все кончилось советом сделать вставку на асм. А вообще-то я не собираюсь с вами препираться: ну нравится вам си , ну и програмьте на здоровье. А АБ это среда (асмоподобная) и просто удобнее , хотя бы симулятором, да и по листигу ползать не надо. Сделают визуальный си (не VC) буду им пользоваться. И еще . В данный момент разбираюсь сишной программе, наваянной одним Си-программистом , ну к программе притензий нет, а вот железом у чела явно проблемы (с фузами такого нагородил).
|
|
|
|
|
Dec 30 2008, 20:39
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(muravei @ Dec 30 2008, 18:18)  Просто , по другому тогда было сложнее.  Вы в те времена , еще лежали густо присыпанные тальком...Ну , или как минимум-под стол пешком ходили... Все когда-то делали это  Цитата(muravei @ Dec 30 2008, 18:18)  Была тут где-то темка , где человеку требовалось точно знать последовательность операторов, а компилятор сообщал что , он ничего не гарантирует. "И молвит она ему человеческим голосом":) Прямо кокой-то первобытный страх перед компилятором испытывать начинаешь. Ну а если серьезно, то язык программирования создан для того чтоб программист мого достичь того результата, который он задумал. Программа всегда строго детерминирована и мне с огромным трудом верится в невозможность реализации какой бы то нибыло алгоритмической, логической или математической последовательности на СИ. Любую идею реализованную на ASM без использования особо специфических инструкций можно реализовать на СИ. Я не твердолобый упертый баран и ясно представляю назначение ASM. В конечном итоге за всё приходится платить. И за СИ тоже. Простите если что. Но люди конечно совершенно разные. И некоторые из них намеренно отрекаются от благ цивилизации - им это даже полезно. Вы видимо один из немногих  Поверьте, что у меня нет даже ни одной ассемблерной вставки, а суммарный объем исполняемого кода моих програм для AVR немного не дотягивает до 1,5 Мб.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|