| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Программирование ATMega8 с помощью USBASP https://radiokot.ru/forum/viewtopic.php?f=57&t=100908 |
Страница 1 из 2 |
| Автор: | Kolian [ Чт фев 20, 2014 01:58:10 ] |
| Заголовок сообщения: | Программирование ATMega8 с помощью USBASP |
Доброго времени суток! Пытаюсь научиться программировать (хотя бы залить готовую прошивку в контроллер). Купил программатор USBASP в Чине, пришел в упаковке, целехонький. Отдали мне контроллер ATMega8L-8PU (кто-то купил программатор, но плату с панельками так и не сделал). Хотел и платку с панельками - да не нашел, пришлось собрать как тут: клац. Вроде собрал правильно, обрывов и КЗ быть не должно. Соединил плату и программатор вместе, на плату в гнездо 2,1 подал 12В, подключил к ПК. Программатор успешно установился. Продавец в комплект приложил линк на дрова и какие-то проги, да документацию. Вычитал я из приложенных мануалов, что нужно юзать khazama AVR Programmer. Установил, открыл. дальше в инструкции предлагают выбрать файл прошивки - его нет. Вот не задача... В гугл с такими лозунгами: "первый проект atmega8", дальше - сюда. Готового .hex файла нет на сайте. Начинаю читать статью, где говорят, что в предыдущей статье... Иду в предыдущую статью рассматривать код мигалки на C и способы его компиляции. Качаю WinAVR, инсталлирую. Снова в статью, Copy+Paste - готово. Не тут то было! Еще Makefile редактировать... Начинаем... Почти готово. Цитата: Ищем строку: AVRDUDE_PORT = com1 # programmer connected to serial device Заменяем на: AVRDUDE_PORT = lpt1 Программатор stk200 использует параллельный порт (lpt). Но у меня USB программатор. Что делать? Смотрю на время - без 20 полночь. Оставляем по дефолту, вдруг прокатит. Компилим - все ОК. Иду в первую статью, куда попал из гугла. Там написано: Цитата: Запустим Programmers Notepad, откроем пример программы, приведенной в статье "Makefile и компиляция программы". Можно еще раз откомпилировать его командой Tools -> [WinAVR] Make All. После чего загрузим откомпилированный файл my_test.hex в память программ вашего микроконтроллера командой Tools -> [WinAVR] Make Program. По окончании процесса внизу, в окне "Output", должно появиться сообщение об успешной загрузке Делаю все, как написано. В итоге: Цитата: "make.exe" program avrdude -p atmega8 -P com1 -c stk200 -U flash:w:my_test.hex avrdude: port name "com1" is neither lpt1/2/3 nor valid number avrdude: can't open device "com1" avrdude: failed to open parallel port "com1" make.exe: *** [program] Error 1 > Process Exit Code: 2 > Time Taken: 00:00 Цитата: Оставляем по дефолту, вдруг прокатит. Не прокатило.... Что ж, возвращаемся к софту от продавца. Открываю мануал, khazama AVR Programmer, где выбираю готовый .hex файл прошивки контроллера на "мигалку", который сам скомпилил в поте лица. Жму "Auto Program", получаю: ![]() ![]() ![]() Основная задача: запилить такую лампу (или несколько) до 8 марта Текущая задача: проверить: работает ли программатор и панелька? Пара вопросов напоследок:
|
|
| Автор: | Kolian [ Чт фев 20, 2014 21:34:17 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Сегодня попробовал залить программу этой мигалки по 2 способу из этой инструкции в CodeVision AVR. Та же ошибка. Помогите. Сегодня времени у меня еще на день меньше... |
|
| Автор: | codenamehawk [ Пт фев 21, 2014 01:24:14 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
У вас усб а не сом порт используется, вот его в установках и указывайте. Попробуйте оболочку типа Sinaprog или Extreme burner для USBASP http://www.drive2.ru/communities/e-stuff/blog/398036/ |
|
| Автор: | Kolian [ Пт фев 21, 2014 01:31:48 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Завтра попробую. А как указать USB? Я предполагал, что USB вешается на виртуальный COM, сразу полез в дисп. устройств (еще тогда), но ничего не нашел или просто забыл где это смотреть. |
|
| Автор: | Kolian [ Пт фев 21, 2014 09:25:39 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Попробовал в оболочке USBASP_AVRDUDE_PROG с drive2.ru - та же ошибка. Цитата: avrdude.exe: error: programm enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. avrdude.exe done. Thank you. |
|
| Автор: | С_а_н_ы_ч [ Пт фев 21, 2014 23:26:50 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Сам не давно начал этим заниматься, программатор у меня такой же. USBASP_AVRDUDE_PROG все определил с первого раза. Попробуй с командной строки зайти в папку где лежит USBASP_AVRDUDE_PROG и вбей не: avrdude -p atmega8 -P com1 -c stk200 -U flash:w:my_test.hex, а: avrdude -p m8 -c USBASP -U flash:w:my_test.hex А khazama AVR Programmer у меня ничо не получилось. |
|
| Автор: | С_а_н_ы_ч [ Пт фев 21, 2014 23:30:56 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
А усб нигде указывать не надо, указывается только программатор USBASP, если он поддерживается, а программой уже подразумевается что он к усб подключен. |
|
| Автор: | Kolian [ Вт фев 25, 2014 00:56:18 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Программатор заработал после прозвонки. Оказалось, что на плате с панельками отошел вывод "SCK", который был успешно припаян. Сделал я и мигалку. Взял код из этой статьи, чуть-чуть подправил синтаксис и вот что вышло: Код: /************************************************ ПРИМЕР МИГАНИЯ СВЕТОДИОДАМИ *************************************************/ #define F_CPU 1000000UL // 1 MHz #include <io.h> #include <delay.h> void main(void) // начало основой программы { DDRD = 0xff; /* все выводы порта D сконфигурировать как выходы */ while (1) { // Бесконечный цикл PORTD = 0xff; /* установить "1" на всех линиях порта D */ delay_ms(250); // Ждем 0.25 сек. PORTD = 0x00; /* установить "0" на всех линиях порта D */ delay_ms(250); // Ждем 0.25 сек. } // закрывающая скобка бесконечного цикла } // закрывающая скобка основной программы Видео + исходник + проект в CodeVision AVR + файл прошивки(led3.hex): http://yadi.sk/d/_GtxNsJSJV3zz Завтра поеду за ATtiny13. Только беда: мне нужно купить ATtIiny в smd корпусе., а как его прошить? Где взять такой переходник с smd на dip? Просто таких контроллеров прошить надо штук пять, не припаивать же... |
|
| Автор: | Appll [ Вт фев 25, 2014 03:45:02 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Kolian писал(а): Где взять такой переходник с smd на dip? Просто таких контроллеров прошить надо штук пять, не припаивать же... Есть универсальные платы под PLCC и QFP. К ней подпаиваете разьем программатора. А саму микруху прижимаете биндером. Прошили,проверили запаяли. |
|
| Автор: | Kolian [ Ср фев 26, 2014 04:02:50 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Appll писал(а): Kolian писал(а): Где взять такой переходник с smd на dip? Просто таких контроллеров прошить надо штук пять, не припаивать же... Есть универсальные платы под PLCC и QFP. К ней подпаиваете разьем программатора. А саму микруху прижимаете биндером. Прошили,проверили запаяли. Купил четыре Attiny13A ($0.9 за штуку) в SOIC корпусе. Спросил панельки-переходники с SOIC на DIP. "Были такие" - мне ответили. поинтересовался по чем... $5.3 за один переходничек. Нашел платки, на которых шаг выводов контроллера совпадает с дорожками - купил парочку ($0.1 за шт.). Думал: дело в шляпе. припаиваюсь к дорожкам, другие концы проводков в DIP панельку на плату с панельками, а контроллер прищепкой. Как ни пытался - ничего не вышло. пришлось припаять контроллер. Дорожки слишком короткие, лапки МК не становятся нормально, когда провода припаяны. ![]() ![]() ![]() _____ Но не все так гладко. Столкнулся я с проблемой: Как выставить фьюзы? У меня есть скрин фьюзов из CodeVision AVR Programmer. Но эта программа не совместима с моим программатором. Однако, в моем арсенале имеется парочка оболочек avrdude: khazahma и USBASP_AVRDUDE_PROG. Прикладываю скрины фьюзов. ![]() Это скрин фьюзов из CodeVision AVR Programmer (то, что выложил автор статьи о лампе) ![]() Выставление фьюзов в USBASP_AVRDUDE_PROG (я считал с чистого контроллера) ![]() Выставление фьюзов в khazahma (я считал с чистого контроллера) |
|
| Автор: | Appll [ Ср фев 26, 2014 10:58:52 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Зачем паять провода к дорожкам? там же есть отверстия..... И микруха 100% прижалась бы прищепкой. Ну и можно припаять PLC ножки и вставить платку в разьем на Вашей плате.Фьюзы....подводный камень всех МК Вообщем так - лучше почитать тему про них ( благо тут их хватает) |
|
| Автор: | Jack_A [ Ср фев 26, 2014 12:49:42 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
И не надо так кричать ! |
|
| Автор: | Kolian [ Ср фев 26, 2014 15:15:58 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Jack_A писал(а): И не надо так кричать ! Я и не кричал вовсе. Я просто выделил основные мысли. Возможно, кому-то лень читать весь текст или некогда. |
|
| Автор: | Kolian [ Ср фев 26, 2014 16:43:42 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Так что с фьюзами? Уто-нибудь можкт показать мне каки фьюзы выставлять в khazahmaили другой оболочке? Я приложил нужные фьюзы, только в другой программе, не понимаю только как преобразовать. |
|
| Автор: | Kolian [ Ср фев 26, 2014 20:44:27 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Appll писал(а): Зачем паять провода к дорожкам? там же есть отверстия..... И микруха 100% прижалась бы прищепкой. Ну и можно припаять PLC ножки и вставить платку в разьем на Вашей плате.Фьюзы....подводный камень всех МК Вообщем так - лучше почитать тему про них ( благо тут их хватает) Уже припаял. Хорошо, что пару плат купил... Паял в час ночи, соображалка не очень работала. Еще 3 Чипа ждут своей очереди ![]() Какие темы, например... Может фьюзы дефолтные оставить, просто прошивку закачать? И попробовать. |
|
| Автор: | Appll [ Ср фев 26, 2014 22:13:51 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
вот здесь найдете все что нужно и еще соберите вот такой девайс - он Вам пригодиться ))) |
|
| Автор: | Kolian [ Ср фев 26, 2014 22:22:15 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Appll писал(а): Уже нашел)) Попал в эту тему, а потом на этот сайт, только аваст начал гавкать, что вирусы, но на win 8 пустил, на XPюше сказал, что страница недоступна... Пробежался по фьюзам для своего контроллера, почитал что к чему, помогло немного))) Выставил фьюзы так: ![]() Прошил их и прошивку залил. Сейчас в устройство МК впаяю. |
|
| Автор: | Kolian [ Чт фев 27, 2014 01:53:10 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Заработала "лампа" . Перепаял на красный кристалл резистор с 9 на 13 Ом, но все равно красного многовато. Цвет плавно меняет: красный --> розовый --> серый --> белый --> белый с зеленым оттенком --> красный --> розовый -->...... Короче, вот фотки (не один фотик на видео запечатлеть не смог, только глаз видел, изменение цвета не такое значительное) ![]() ![]() ![]() Хотелось бы, чтобы доходило до чистых цветов (красный, синий, зеленый), плавно меняя оттенки, среди которых желтый, пурпурный, голубой и другие. Возможно ли это в данном коде? Код: /*
* MoonLamp.c * * Created: 29.04.2012 16:12:53 * Author: Trol */ #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> uint8_t currentColor[3]; uint8_t startColor[3]; uint8_t nextColor[3]; #define currentR currentColor[0] #define currentG currentColor[1] #define currentB currentColor[2] #define startR startColor[0] #define startG startColor[1] #define startB startColor[2] #define nextR nextColor[0] #define nextG nextColor[1] #define nextB nextColor[2] uint16_t tickBeforeChange; #define TIMER_FREQUENCY 9600000 #define TIMER_OVERFLOW_FREQUENCY (TIMER_FREQUENCY/0xff) static uint8_t calculateColor(uint8_t from, uint8_t to, uint16_t tm); static void calcNextPoint(); /** * Timer overflow interrupt. Used for PWM implementation * Called with TIMER_OVERFLOW_FREQUENCY frequency */ ISR(TIM0_OVF_vect){ static uint8_t cnt_0 = 0; // PWM counter static uint16_t cnt_1 = 0; // counter for next color recalculation if ( cnt_0 == 0 ) { // recalculate bright currentR = calculateColor(startR, nextR, cnt_1); currentG = calculateColor(startG, nextG, cnt_1); currentB = calculateColor(startB, nextB, cnt_1); cnt_1++; if ( cnt_1 >= tickBeforeChange ) { cnt_1 = 0; calcNextPoint(); } } // update channels uint8_t output = 0; if ( currentR >= cnt_0 ) { output |= _BV(0); } if ( currentG >= cnt_0 ) { output |= _BV(1); } if ( currentB >= cnt_0 ) { output |= _BV(2); } PORTB = output; cnt_0++; } static uint8_t calculateColor(uint8_t from, uint8_t to, uint16_t tm) { uint32_t percent = 0xff; percent *= tm; percent /= tickBeforeChange; int res = from + (to - from) * percent / 0xff; return (uint8_t)res; } static uint8_t rndColor() { return 30 + (random() % 220); } static void calcNextPoint() { startR = nextR; startG = nextG; startB = nextB; nextR = rndColor(); nextG = rndColor(); nextB = rndColor(); uint8_t rnd = random(); uint8_t indx = rnd % 3; nextColor[indx] = 0; rnd = 30 + rnd % 120; // time to change color, sec/10 tickBeforeChange = (TIMER_OVERFLOW_FREQUENCY/0xff)*rnd/10; } int main(void) { nextR = 0; nextG = 0; nextB = 0; calcNextPoint(); DDRB = 0xff; TCCR0B = _BV(CS00); // disable prescaler for timer TIMSK0 = _BV(TOIE0); // enable timer overflow interrupts sei(); // enable global interrupts while (1) { } } |
|
| Автор: | Kolian [ Пн мар 03, 2014 02:34:35 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Написал я автору, спросил в чем проблема, он посоветовал выпаять МК и добиться белого свечения СИД, подключив питание к 3-м кристаллам, методом подбора резисторов. И поделился новой прошивкой. теперь заметно, что это "Лампа настроения". Видео тут |
|
| Автор: | Morroc [ Ср мар 12, 2014 13:16:46 ] |
| Заголовок сообщения: | Re: Программирование ATMega8 с помощью USBASP |
Напишу сюда... Столкнулся с проблемой - не шьется мега8 USBASP'ом и все тут, вообще не видится. Пришлось расковырять USBASP и запаять перемычку "Slow SCK", после чего фьюзами выставил 2 мгц внутренний генератор и тогда оно заработало нормально без "Slow SCK" (с ним уж больно медленно). Не помню точно чем я до этого шил меги8, мне казалось этим же девайсом и "Slow SCK" не требовался, может глючу. |
|
| Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|












там же есть отверстия..... И микруха 100% прижалась бы прищепкой. Ну и можно припаять PLC ножки и вставить платку в разьем на Вашей плате.

. Перепаял на красный кристалл резистор с 9 на 13 Ом, но все равно красного многовато. Цвет плавно меняет: красный --> розовый --> серый --> белый --> белый с зеленым оттенком --> красный --> розовый -->...... Короче, вот фотки (не один фотик на видео запечатлеть не смог, только глаз видел, изменение цвета не такое значительное) 

