Например TDA7294

Форум РадиоКот :: Просмотр темы - Программирование ATMega8 с помощью USBASP
Форум РадиоКот
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 марта
Текущая задача: проверить: работает ли программатор и панелька?

Пара вопросов напоследок:
    Что делать с частотой? Как мне выставить эти джамперы (у меня переключатели, как и в варианте платы автора статьи)

    Может ли кто-то скомпилить прошивку под мигалку и закинуть сюда? (а то времени в обрез до 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

Зачем паять провода к дорожкам? :facepalm: там же есть отверстия..... И микруха 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 писал(а):
Зачем паять провода к дорожкам? :facepalm: там же есть отверстия..... И микруха 100% прижалась бы прищепкой. Ну и можно припаять PLC ножки и вставить платку в разьем на Вашей плате.
Фьюзы....подводный камень всех МК :)))
Вообщем так - лучше почитать тему про них ( благо тут их хватает)


Уже припаял. Хорошо, что пару плат купил... Паял в час ночи, соображалка не очень работала. Еще 3 Чипа ждут своей очереди :dont_know:
Какие темы, например...
Может фьюзы дефолтные оставить, просто прошивку закачать? И попробовать.

Автор:  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

Заработала "лампа" :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 [ Пн мар 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/