Пружина писал(а): Хочу взяться за освоение мк, но ничего о них не знаю. Посоветуйте с чего начать, было бы неплохо какую-нибудь книгу для чайников по AVR. В интернете много статей, но в них изобилует жаргон, который мне не понятен. Охотник писал(а): лучше сразу stm32 осваивай Думается мне, что уже пора создать тему для новичков. ИМХО, лучше начать с АВРов, они как-то проще и понятнее, да и инфы и самоучителей и софта для них больше, и уже готовых прошивок. http://123avr.com Последний раз редактировалось: Шурик (Fri Nov 15, 2013 3:52 am), всего редактировалось 2 раз(а) Добавлено: Wed Nov 13, 2013 4:40 am |
Советую начать с установки Proteus и AVRStudio. Потом найти и скачать русифицированный даташит на ATMega128. Собрать в протеусе "отладочную плату" с кнопками, потенциометрами, лампочками и экранчиком, и подключать и запускать это погугливая как делается. Вообще лучше конечно в железе, так интереснее. На 123avr язык изложения ну уж больно кхм. Добавлено: Wed Nov 13, 2013 8:32 am |
Начать однозначно с AVR. Под них полно простых программаторов, с ними нормально дружит Proteus(поставь обязательно) да и AVRStudio весьма дружелюбная вещь. Видимо поэтому они получили такое распространение. На www.easyelectronics.ru есть отличный учебный курс, с доходчивым объяснением все, начиная с самых основ. Плюс есть еще 100500 сайтов с "разжеванными" примерами(типа www.GetChip.net, www.avrproject.ru, и т.д.) Советую почитать и не пугатся ассемблера, при переходе на Си-шку это только на пользу, будешь лучше понимать, что у тебя там реально происходит. Ибо копирастия готовых кодов, скетчей и библиотек - это конечно приятно, но это не программирование, а говноляпство(ИМХО). http://easyelectronics.ru/category/avr-uchebnyj-kurs/page/5 http://easyelectronics.ru/category/avr-uchebnyj-kurs/page/4 http://easyelectronics.ru/category/avr-uchebnyj-kurs/page/3 http://easyelectronics.ru/category/avr-uchebnyj-kurs/page/2 http://easyelectronics.ru/category/avr-uchebnyj-kurs ЗЫ: Курс по STM там, кстати, тоже ничего, но они явно не для начинающих. Добавлено: Wed Nov 13, 2013 11:19 am |
BenG писал(а): говноляпство На той неделе пытался подключить WH1602 к stm32vldiscovery, пару дней бился искал либы, в конце всё кончилось тем что я сам переписал почти целиком одну из понравившихся либ прям по даташиту, оно бы заработало, еслибы случайно пробитая одна из ног stm, а потом еще одна, и вообще нога даты ЖКИ выдавала 5В, моим психом и легким дестроем жки всё кончилось. Вообще я к чему - хоть железные приколы и встречаются, но раз такая пьянка - протеус и avr, да и в железе как минимум удобнее для радиолюбителя 0-5В, много чего. Для чего современнее нужно больше скилла. Добавлено: Wed Nov 13, 2013 11:53 am |
Нет случаем ни у кого кода на С для счёта импульсов с ноги атмеги за определённое время? Нигде не могу найти примера (я по ним стараюсь изучать это дело). Сам пытался в симуляторе что-то замутить, но так и не понял как там организовать прерывание P.S. Зато уже мигал светодиодом ![]() Добавлено: Wed Nov 13, 2013 3:13 pm |
BenG писал(а): Советую почитать и не пугатся ассемблераАга, я как-раз хотел с него начать, чтобы сразу, так сказать, зрить в корень. Спасибо за подробную информацию! Добавлено: Wed Nov 13, 2013 5:33 pm |
Vitek_22 писал(а): счёта импульсов Кода нет но ищи: -внешние прерывания и их обработка, с примером, их есть. -работа с прерываниями по таймеру - настраивается таймер на нужное время В прерывании по внешнему импульсу инкремент переменной. В прерывании по таймеру - забираешь значение и обнуляешь. Всё. 2/3 кода делается в avr-wizard - выбрал таймер и время, выбрал прерывание и как - на выходе почти готовый код. Вписываешь про переменную и всё. Если не понял то могу написать -_- Добавлено: Wed Nov 13, 2013 6:08 pm |
qic писал(а): Если не понял то могу написать -_- О, это было бы прекрасно. Я уже не могу читать про это прерывание, мозг плавится, но ника не соображу, как сопрячь это Вот к примеру мы установили таймер и предделитель так, чтобы каждую секунду срабатывало: interrupt [TIM1_COMPA] void timer1_compa_isr(void) { s++; // увеличиваем переменную каждую секунду if(s>59) // обнуляем секунды после 59 { s=0; } Как теперь с порта A1 подсчитать кол-во импульсов за определённое время? Добавлено: Wed Nov 13, 2013 7:19 pm |
Чета ты намудрил, я не могу вчитаться (да и не хочу), держи отрыжку былокода для авр студии, для atmega8 16МГц /1с. Настраиваем таймер функцией (или внутренность перенести в main)
Его обработчик прерывания (без остановки прерываний, ато еще импульс пропустим ![]()
Настраиваем внешнее прерывание
И его обработчик (с инкрементом сразу)
В главном цикле остается настроить порт на вход и вызвать функции настройки прерывания и таймера, ну и обрабатывать значение переменной
Конечно в меня вероятно кинут тапком, потому что у таймера есть счетный режим, но я не счел нужным в нем разбираться ![]() Добавлено: Wed Nov 13, 2013 9:17 pm |
а существуют ли в природе usb программаторы для авр, сделанные не на основе микроконтроллера? Добавлено: Wed Nov 13, 2013 9:41 pm |
Да, например ft232 и моё любимое http://www.drive2.ru/cars/volvo/xc90/xc90/y-g/2/journal/497649/ Хотя и там и там чип, полагаю без "микроконтроллера" не выйдет =) Добавлено: Wed Nov 13, 2013 10:31 pm |
Как это не выйдет, а это: Скоростной AVR USB программатор на FT232RL без вспомогательного контроллераl Опробован лично мной в качестве программатора и UARTа. Ничего не надо прошивать - спаял, подключил, сконфигурировал ft-шку(если нужно) и работай. Кстати есть более свежая и универсальная версия этого программатора, но сейчас не вспомню уже где видел. UPD Кажется нашел более свежую версию http://www.reddylab.eu/usbbit/v1-1 Со светодиодами и клавиатурой - мысль интересная, надо будет опробовать ради прикола ![]() Добавлено: Thu Nov 14, 2013 12:37 am |
Спасибо! Буду разбираться. Добавлено: Thu Nov 14, 2013 8:54 am |
удалось мне запустить таймер, спасибо тов. qic, и счёт по таймеру, но теперь всплыла другая проблема. Хочу, чтобы показания на дисплеи изменялись не с каждым новым импульсом на порт С0, а выводилось суммарно что набежало за 5 секунд, при этом предыдущее значение сбрасывалось (переменная s у меня инкремируется каждую секунду, dv=(s%5) - остаток от деления на 5). Вот что у меня получилось:
Но, скотина, не работает нифига. В протеусе на дисплее постоянно Zero. Если вынести код
из условия что остаток секунд от деления на 5 равен нулю (тобишь каждый 5 с интервал) - всё работает. Но показания на дисплее меняются с каждым новым импульсом. Добавлено: Thu Nov 14, 2013 3:35 pm |
Что что, нахрен? Надо пять секунд? У тебя таймер Т1 отсчитывает какраз 1 секунду. А дальше всё просто. Прям в его прерывании пишем такой кусок: (предварительно гденибудь unsigned int = 0 ; )
Так получается системный отсчет 1 секунда и событие раз в 5 или раз в сколько надо. P.S. Старайтесь делать на прерываниях, очень удобно. Особенно выполнять постоянные задачи. При прерывании есть время на что-то еще кроме ожидания в бесконечном цикле следующего показа. Добавлено: Thu Nov 14, 2013 4:45 pm |
ISR (TIMER1_OVF_vect) - ругается "declaration syntax error" - с чего бы это? Где бы вообще почитать об этом прерывании доступно. Пока я тупо накопировал в код... Гуглил - но в основном приводят эти элементы кода без пояснения что и зачем и почему именно так пишется! Пишу я в CVAVR - там при создании нового проекта есть возможность настраивать таймер -надо ли вносить туда какие-либо изменения? И ещё один момент, если делать таким образом, то время получается фиксированным. К примеру мне захочется по нажатию кнопки изменять время счета с 5 с на 20 с или на 60. При таком коде не понятно мне как это реализовать... Ну, будем разбираться потихоньку. Главное что дело сдвинулось дальше мигания светодиодом ![]() Добавлено: Thu Nov 14, 2013 5:17 pm |
Я же написал что avr-studio. Пиши в нем, не заморачивайся. Кодогенераторы отдельно есть. Изменение времени очень легко. Где сравнение (i==5) вместо 5 пишешь например j (предварительно задав ему 5, или сколько надо) А вот это т.к. у тебя низкая цикличность то в главный бесконечный цикл добавляешь проверку нажатия кнопки и цикличную смену. Например в лоб if-ами.
Вот и цикличная смена. Добавлено: Thu Nov 14, 2013 6:30 pm |
благодарю! Качну сегодня этот studio Добавлено: Thu Nov 14, 2013 6:40 pm |
Только качай 4.18, а также тебе потребуется Си-компилятор winavr например от 20100110 . Я объясню почему так лучше. Нет ограничения на размер кода, есть отладчик. Студия 4.18 (кажется) последняя перед 5й и 6й, весит меньше, весь необходимый функционал, только Си компилятора нет ( в старших есть), поэтому WinAVR отдельно (поставишь в папку с студией, сама подхватит его). И будет всё каноничноЪ. ЗЫ Если не найдешь, могу какнибудь скинуть, 150МБ не так много. Добавлено: Thu Nov 14, 2013 6:45 pm |
Добавлено: Thu Nov 14, 2013 6:48 pm |
Меня бесит что IDE для проганья 8битных AVRок занимает несколько гигов на диске. Особенно бесит что ничего нового кроме лишних гигов с версии 4.18 я в ней для себя не открыл. Я холивар разводить не намерен, кому интересно - попробуйте старое и новое, и делайте выводы для себя. Свои выводы я уже сделал. Добавлено: Thu Nov 14, 2013 6:59 pm |
Добавлено: Thu Nov 14, 2013 7:10 pm |
Ну тогда всё окей. В принципе я ответил. Просто когда вопрос "почему именно эта IDE" начинаются холливары. Добавлено: Thu Nov 14, 2013 7:44 pm |
qic писал(а): Только качай 4.18, а также тебе потребуется Си-компилятор winavr например от 20100110 . Посмотрел в разделе программ флая, вроде нет, поэтому выложил. Правда у меня версия 4.16, другой не пользовался, т.к. глюков, пока, не замечал. Добавлено: Fri Nov 15, 2013 1:31 am |
Ну 4.16/4.18 действительно не суть важно, важно что 4я ветка а не 5я и не 6я. Если места много - ставьте последнюю, но лично мое мнение - это не правильно для закручивания гаек на 10 покупать набор на 100 ключей (при условии что с другими гайками вы врятле вообще столкнётесь). Добавлено: Fri Nov 15, 2013 7:13 am |
Лицензионное соглашение (c)Flyback.org.ru Российское общество любителей высоких напряжений. Использование материалов с данного сайта и форума возможно только с разрешения администрации. |