Программирование ATMega8 с помощью USBASP

Обсуждаем контроллеры компании Atmel.
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Доброго времени суток!
Пытаюсь научиться программировать (хотя бы залить готовую прошивку в контроллер).
Купил программатор 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 марта
Текущая задача: проверить: работает ли программатор и панелька?

Пара вопросов напоследок:
  • Что делать с частотой? Как мне выставить эти джамперы (у меня переключатели, как и в варианте платы автора статьи)
  • Может ли кто-то скомпилить прошивку под мигалку и закинуть сюда? (а то времени в обрез до 8 марта, а мигалка - просто проверочная стадия)
Реклама
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Сегодня попробовал залить программу этой мигалки по 2 способу из этой инструкции в CodeVision AVR. Та же ошибка. Помогите. Сегодня времени у меня еще на день меньше...
Реклама
codenamehawk
Вымогатель припоя
Сообщения: 531
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: Программирование ATMega8 с помощью USBASP

Сообщение codenamehawk »

У вас усб а не сом порт используется, вот его в установках и указывайте.
Попробуйте оболочку типа Sinaprog или Extreme burner для USBASP
http://www.drive2.ru/communities/e-stuff/blog/398036/
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Завтра попробую. А как указать USB? Я предполагал, что USB вешается на виртуальный COM, сразу полез в дисп. устройств (еще тогда), но ничего не нашел или просто забыл где это смотреть.
Реклама
Эиком - электронные компоненты и радиодетали
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Попробовал в оболочке 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.
Реклама
С_а_н_ы_ч
Родился
Сообщения: 13
Зарегистрирован: Чт окт 03, 2013 19:30:03

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 у меня ничо не получилось.
Реклама
С_а_н_ы_ч
Родился
Сообщения: 13
Зарегистрирован: Чт окт 03, 2013 19:30:03

Re: Программирование ATMega8 с помощью USBASP

Сообщение С_а_н_ы_ч »

А усб нигде указывать не надо, указывается только программатор USBASP, если он поддерживается, а программой уже подразумевается что он к усб подключен.
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Программатор заработал после прозвонки. Оказалось, что на плате с панельками отошел вывод "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
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Вт июн 04, 2013 14:52:20
Откуда: Крым

Re: Программирование ATMega8 с помощью USBASP

Сообщение Appll »

Kolian писал(а):Где взять такой переходник с smd на dip? Просто таких контроллеров прошить надо штук пять, не припаивать же...
Есть универсальные платы под PLCC и QFP. К ней подпаиваете разьем программатора. А саму микруху прижимаете биндером.
Прошили,проверили запаяли.
Из всех меломанов, хороший транзисторный звук от хорошего лампового отличить смог только осциллограф...
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

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
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Вт июн 04, 2013 14:52:20
Откуда: Крым

Re: Программирование ATMega8 с помощью USBASP

Сообщение Appll »

Зачем паять провода к дорожкам? :facepalm: там же есть отверстия..... И микруха 100% прижалась бы прищепкой. Ну и можно припаять PLC ножки и вставить платку в разьем на Вашей плате.
Фьюзы....подводный камень всех МК :)))
Вообщем так - лучше почитать тему про них ( благо тут их хватает)
Из всех меломанов, хороший транзисторный звук от хорошего лампового отличить смог только осциллограф...
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6319
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Программирование ATMega8 с помощью USBASP

Сообщение Jack_A »

И не надо так кричать ! :)
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Jack_A писал(а):И не надо так кричать ! :)
Я и не кричал вовсе. Я просто выделил основные мысли. Возможно, кому-то лень читать весь текст или некогда.
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Так что с фьюзами? Уто-нибудь можкт показать мне каки фьюзы выставлять в khazahmaили другой оболочке? Я приложил нужные фьюзы, только в другой программе, не понимаю только как преобразовать.
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Appll писал(а):Зачем паять провода к дорожкам? :facepalm: там же есть отверстия..... И микруха 100% прижалась бы прищепкой. Ну и можно припаять PLC ножки и вставить платку в разьем на Вашей плате.
Фьюзы....подводный камень всех МК :)))
Вообщем так - лучше почитать тему про них ( благо тут их хватает)
Уже припаял. Хорошо, что пару плат купил... Паял в час ночи, соображалка не очень работала. Еще 3 Чипа ждут своей очереди :dont_know:
Какие темы, например...
Может фьюзы дефолтные оставить, просто прошивку закачать? И попробовать.
Аватара пользователя
Appll
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Вт июн 04, 2013 14:52:20
Откуда: Крым

Re: Программирование ATMega8 с помощью USBASP

Сообщение Appll »

вот здесь найдете все что нужно
и еще соберите вот такой девайс - он Вам пригодиться )))
Из всех меломанов, хороший транзисторный звук от хорошего лампового отличить смог только осциллограф...
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Appll писал(а):вот здесь найдете все что нужно
и еще соберите вот такой девайс - он Вам пригодиться )))
Уже нашел)) Попал в эту тему, а потом на этот сайт, только аваст начал гавкать, что вирусы, но на win 8 пустил, на XPюше сказал, что страница недоступна... Пробежался по фьюзам для своего контроллера, почитал что к чему, помогло немного))) Выставил фьюзы так:

Изображение

Прошил их и прошивку залил. Сейчас в устройство МК впаяю.
Kolian
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Заработала "лампа" :beer: . Перепаял на красный кристалл резистор с 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
Родился
Сообщения: 17
Зарегистрирован: Чт май 23, 2013 22:19:27

Re: Программирование ATMega8 с помощью USBASP

Сообщение Kolian »

Написал я автору, спросил в чем проблема, он посоветовал выпаять МК и добиться белого свечения СИД, подключив питание к 3-м кристаллам, методом подбора резисторов. И поделился новой прошивкой. теперь заметно, что это "Лампа настроения". Видео тут
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: Программирование ATMega8 с помощью USBASP

Сообщение Morroc »

Напишу сюда...

Столкнулся с проблемой - не шьется мега8 USBASP'ом и все тут, вообще не видится. Пришлось расковырять USBASP и запаять перемычку "Slow SCK", после чего фьюзами выставил 2 мгц внутренний генератор и тогда оно заработало нормально без "Slow SCK" (с ним уж больно медленно). Не помню точно чем я до этого шил меги8, мне казалось этим же девайсом и "Slow SCK" не требовался, может глючу.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Ответить

Вернуться в «AVR»