Програмирование микросхем ATmega 32

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Что то я туплю опять... Atmega168PA - каким вобще способом можно прошить фьюзы?

есть ASP, есть дунька...

Клапауций
Offline
Зарегистрирован: 10.02.2013

hugoboss317 пишет:

Что то я туплю опять... Atmega168PA - каким вобще способом можно прошить фьюзы?

Я лог в предыдущем посте зачем дал? - любоваться или вникать?

*\arduino-1.0.5\hardware/tools/avr/bin/avrdude // запускаем дудку.

-CD:\Program Files mini\arduino-1.0.5\hardware/tools/avr/etc/avrdude.conf // необязательная строка.
-v -v -v -v // подробный вывод инфы в консоли - необязательно.
-p atmega8 // твой МК.
-c usbasp // твой программатор.
-P usb // порт программатора - необязательно.
-e // стираем фсё!
-U lock:w:0x3F:m // лочим .
-U hfuse:w:0xca:m -U lfuse:w:0xdf:m // шьём фьюзы.

Из этого набора лепим командную строку для записи нужных тебе фьюзов:

avrdude -p atmega8 -c usbasp -U hfuse:w:0xca:m -U lfuse:w:0xdf:m
hugoboss317
Offline
Зарегистрирован: 21.03.2013

Вот поэтому я и спрашиваю про 168PA. если пишу 168 - там разные подписи, соответственно не шьётя. А 168p, не найден файл...

Клапауций
Offline
Зарегистрирован: 10.02.2013

hugoboss317 пишет:

Вот поэтому я и спрашиваю про 168PA. если пишу 168 - там разные подписи, соответственно не шьётя. А 168p, не найден файл...

Какой файл не найден? - имя у файла есть?

Список поддерживаемых МК и программатров рой в файле avrdude.conf - там есть ATmega168P.

ATmega168PA - это низковольтовая?, если так, то ничем по шитью не отличается от ATmega168P.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

ты пытаешься шить дудкой из кмплекта Ардуино ИДЕ? - так у них дудка в одной папке, а avrdude.conf в другой.

Брось avrdude.conf и avrdude.exe в одну папку и шей из неё.

Клапауций
Offline
Зарегистрирован: 10.02.2013

В том списке, что у тебя в консоли вывалился ATmega168P присутсвует?, если "да", то называй МК правильно.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Клапауций пишет:

В том списке, что у тебя в консоли вывалился ATmega168P присутсвует?, если "да", то называй МК правильно.

ваще не понял что и откуда вываливается.

Давай так!

1.avrdude.conf - 168P есть.

2. Скетчи в него загружаю но на конфигурацию в файле board.txt не реагирует вобще, даже на тактовую частоту.

3. я понятия не имею чем и как прошиваю. В командной строке по твоему примеру пишу что на фото.

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

hugoboss317 пишет:

Давай так!

1.avrdude.conf - 168P есть.

2. Скетчи в него загружаю но на конфигурацию в файле board.txt не реагирует вобще, даже на тактовую частоту.

3. я понятия не имею чем и как прошиваю. В командной строке по твоему примеру пишу что на фото.

 

Давай так.

1. Это хорошо.

2. Прошей фьюзы для внешнего кварца.

3. А, я откуда могу знать, что ты делаешь?

*марш в гугл на тему - запуск программ с помощью CMD из указанной папки.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Клапауций пишет:

2. Прошей фьюзы для внешнего кварца.

ааааааааааааааааааааааа...

а я то пытаюсь сделать!!!???

мне нужно прошить фьюзы только не столь кварц интересует сколько CKOUT активаровать надо.

3. поменял файл .conf в папке теперь получается:

Клапауций
Offline
Зарегистрирован: 10.02.2013

hugoboss317 пишет:

ааааааааааааааааааааааа...

а я то пытаюсь сделать!!!???

мне нужно прошить фьюзы только не столь кварц интересует сколько CKOUT активаровать надо.

3. поменял файл .conf в папке теперь получается:

Я сказал, что тебе нужно делать - запускать дудку из папки, а не из хрензнаетоткуда - что это за "\Администратор>avrdude", где это?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Есть. На фото видно путь, откуда запускалось. там в .conf нашёл 168р и поменял подпись 

signature       = 0x1e 0x94 0x06;

на

signature       = 0x1e 0x94 0x0b;

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Ясно, а взять и запустить дудку из папки /arduino-1.0.5 - не?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

ХМ, я принимаю бой )))

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Клапауций пишет:
а взять и запустить дудку из папки /arduino-1.0.5 - не?

Докладываю о выполнении домашнего задания.

Немного вернусь назад. Когда я писал в командной строке просто avrdude не указывая путь, использовался относилельный путь текущего каталога в котором (на моё счастье) тоже находилась дудка. Но при попытке использовать абсолютный путь с указанием каталога (d:\...\arduino-1.0.4\hardware\tools\avr\etc\avrdude)возникла проблема, я так и не разобрался с ней но думаю дело в точках в имени папки 1.0.4  .

cmd постоянно выдавала синтаксическую ошибку в имени... Решил пойти другим путём и скопировал, раннее тобой созданый и любезно мне предоставленный "батинок" bdf2u8g. Это когда я шрифты создавал на u8g. Поменял в нём команды, сохранил, закрыл...и удалил ... ну а что я лох какой-то "батинки" копировать!?)))) В командной строке создал БАТ файл(не меняя коталога) и в него прописал конфигурацию под прошивку фьюзов на At168p. И затем уже разместил в папке с дудкой и конфигурациями. Но както непонятно получилось, CMD мелькнула, что там, случилось, не случилось, хз. вобщем подкорректировал немного добавив команду чтоб не закрывалась пока я не скажу.

"Батинок" получился вот такой:







avrdude -p atmega168p -c usbasp -U hfuse:w:0xdf:m -U lfuse:w:0xbf:m
rem********************************************************
rem ___ внешний кварц от 8,000 - ; CKOUT - активен 
rem ___CKSEL = 1111; SUT = 11;
rem******************************************************** 
pause

и после выполнения CMD ждёт моего разрешения чтоб закрыться.

дудука запускается из папки \...\arduino-1.0.4\hardware\tools\avr\etc\avrdude

Задание выполнено :))

rastamanoff
rastamanoff аватар
Offline
Зарегистрирован: 22.10.2013

Всем привет.Вот приручил Atmega32 под Arduino1.0.4 http://radiomanoff.at.ua/index/adaptacija_atmega32_pod_arduino/0-31

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

rastamanoff, если интересно, поищите на форуме, фикс для атмега16, ищите arduino16. Если не ошибаюсь, они не сильно отличаются.
И Загрузчик и библиотеки.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Вариант, который выбрал rastamanoff, как по мне, несколько проще, достаточно расположить файлы и подредактировать, даже просто скопировать в boards данные по МК. 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Не вопрос, рыба ищет, где глубже :) Главное, чтобы работало и устраивало ;)

Клапауций
Offline
Зарегистрирован: 10.02.2013

hugoboss317 пишет:

Вариант, который выбрал rastamanoff, как по мне, несколько проще, достаточно расположить файлы и подредактировать, даже просто скопировать в boards данные по МК. 

А, чего там проще? - то же самое сделал kisoft для меги16.

И, если уж проще то использовать первоисточник https://code.google.com/p/avr-netino/ и последнюю версию ядра.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Клапауций пишет:
А, чего там проще? - то же самое сделал kisoft для меги16.

Ну да, 16, всё верно, только корректировать ядро надо один перец, а тут готовое под 32. И, Клапауций, если я не ошибаюсь под этот камень вы мне ссылку давали ту же...

Клапауций
Offline
Зарегистрирован: 10.02.2013

hugoboss317 пишет:

И, Клапауций, если я не ошибаюсь под этот камень вы мне ссылку давали ту же...

Да - теперь тоже тебе дал rastamanoff и ядро там тоже нужно корректировать.

rastamanoff
rastamanoff аватар
Offline
Зарегистрирован: 22.10.2013

Всем привет.Вот что наюзал с Atmega32 в качестве Arduino-контролера.Все 4 ШИМа работают ,проверял скетчем Fading.Аналоговые входа пробовал скетчем PotSend,и даже поиграл в ArduinoPong ( bionic_arduino ).

LCD подсоединял как на PortC так и на PortA.Все работает с библиотекой LiguidCrystalRus.Поскольку портС в реальном контролереи и есть JTAG интерфейс,то я думаю что мой загрузчик его отключает.Будет время посмотрю через ICSP на фьюзы. 

Сейчас "играюсь" с ds18b20.Уже вывожу с одного датчика (ШИМ на ноге D23 - PD7 ) на LCD температуру.Хочу выводить несколько штук...ну и там термостат и все такое...

Впринципе все устраивает в Atmega32.Только вот если бы поменять анологовые входы с D8-D15 на конечные D24-D31, да чтобы ШИМы сделать три штуки поподряд D9-D11,тогда можно попробовать сделать плату-клон UNO.Вот было-бы интересно занятся,но как интегрировать ядро?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

rastamanoff пишет:
Только вот если бы поменять анологовые входы с D8-D15 на конечные D24-D31, да чтобы ШИМы сделать три штуки поподряд D9-D11,тогда можно попробовать сделать плату-клон UNO.Вот было-бы интересно занятся,но как интегрировать ядро?

А таймеры разве не привязаны к физическим пинам??? И на сколько я понимаю, аналоговый пин это аппаранная часть и пины с АЦП тоже аппаратно реализованы.

rastamanoff
rastamanoff аватар
Offline
Зарегистрирован: 22.10.2013

Да ладно,это я так, мысли в слух.Просто надоело все время менять номера пинов в скетчах.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Забавный "круговорот инструкции в природе" ,  размещенная статья у rastamanoff ссылается на мою размещенную статью,на которую я по крохам насабирал в интернете,в том числе и тут :)

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Ну значит спасибо Вам

rastamanoff
rastamanoff аватар
Offline
Зарегистрирован: 22.10.2013

Присоединяюсь!Спасибо Вам,реально помогли.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Да.. ,только далеко с мегой32 не ушел ,интересовался можно ли подключить езернет на базе W5100 ,но не пошло -похоже там правок кучу в библиотеке необходимо делать ,знаю что можно подключить Ethernet ENC28J60 ,но пока некогда протестировать - занят другими экспериментами(которые ,кстати , описываю у себя на сайте)  над железками с м/к и т.д.

На мегу32 планировал заменить вместо м/к 328p в системе умного дома ,т.к. тут больше памяти и выводов,но похоже не получится,даже если Ethernet ENC28J60 с ней дружит,то не нравится как эта ENC28J60 работает - тормознутее она чем w5100 и шустро работает только на каком нибудь стелярисе с 60мгц.

Пока мегу32 даже не знаю куда можно применить,только если какой нибудь усб-gpio-контроллер сделать.. для подключения всяких датчиков

rastamanoff
rastamanoff аватар
Offline
Зарегистрирован: 22.10.2013

Слушайте, а я с этим модулем уже имел дело http .Работало нормально.Могу потестировать с Atmega32/

Я тоже под "умный дом" хочу все подмутить,всмысле с мегой32.У меня провода уже в стенах заложены (витые пары).Думаю два термостата (2 PWM) + 1-wire шина (еще 1 PWM) на два датчика для простого контроля (улица-дом),клавиатура 3х3,порт на выход (8 каналов),LCD Rus ,IR-control (например RC-5),меню.Незнаю влезет ли?И как это скажется на скорости девайса?

MaksMS
Offline
Зарегистрирован: 11.03.2013

Думаю влезет-все зависит от Ваших запросов.Оперативной памяти тут в 2 раза больше чем на 328р,если не ошибаюсь -главно оптимизировать скетч.

Клапауций
Offline
Зарегистрирован: 10.02.2013

MaksMS пишет:

Забавный "круговорот инструкции в природе" ,  размещенная статья у rastamanoff ссылается на мою размещенную статью,на которую я по крохам насабирал в интернете,в том числе и тут :)

если ты не первоисточник, то какие проблемы? - таков суровый мир копипасты

rastamanoff
rastamanoff аватар
Offline
Зарегистрирован: 22.10.2013

Всем привет.Я всего-лишь хотел показать,как я "приручил" мегу32 под Arduino.Преследуя только одну цель - развитие хоббийного радиолюбительства.

Клапауций
Offline
Зарегистрирован: 10.02.2013

rastamanoff пишет:

Всем привет.Я всего-лишь хотел показать,как я "приручил" мегу32 под Arduino.Преследуя только одну цель - развитие хоббийного радиолюбительства.

Т.е., ты считаешь, что "приручил" 32-ю под Ардуино, а ребята из AVR-Net-IO - так... мимо проходили?

https://code.google.com/p/avr-netino/wiki/GettingStarted

sp34
Offline
Зарегистрирован: 05.03.2013

Поддержу rastamanoff как радиолюбитель !

Зная ENG на 3-   мне например на примере от rastamanoff все понятние !

sp34
Offline
Зарегистрирован: 05.03.2013

Что бы прописать тактовую частоту 8 Мгц с внутреннего генератора я прописал low_fuses=0xF4 - и прописал его в камень через программатор на дуне , но не хватает ног и я хотелбы использовать 4-е вывода JTEG - и для этого нужно поправить high_fuse=???? - здесь боюсь дать промашку и прошу помощи гуру , что прописать ?

MaksMS
Offline
Зарегистрирован: 11.03.2013

Недавно пробовал внутренний генератор,когда испытывал http://arduino.ru/forum/obshchii/konstruktor-bootloadera-dlya-arduino



a32_8MHz.name=atmega32 (8 MHz) 
a32_8MHz.upload.protocol=arduino 
a32_8MHz.upload.maximum_size=32256 
a32_8MHz.upload.speed=115200 
a32_8MHz.bootloader.low_fuses=0xa4 
a32_8MHz.bootloader.high_fuses=0xde 
a32_8MHz.bootloader.path=optiboot 
a32_8MHz.bootloader.file=a32_8MHz_a4_de.hex 
a32_8MHz.build.mcu=atmega32 
a32_8MHz.build.f_cpu=8000000L 
a32_8MHz.build.core=avrnetio 
a32_8MHz.build.variant=avrnetio

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

low_fuses=0xF4 - такого не бывает

JTAG по умолчанию включен

как добавить ноги фьюзами - не знаю

sp34
Offline
Зарегистрирован: 05.03.2013

http://homes-smart.ru/fusecalc/?prog=avrstudio&part=ATmega32

рискнул и все получилось !

low_fuses=0xE4 - здесь малость очИпятался извеняюсь.

high_fuses=0xD9 -заработали еще 4-е порта 18,19,20,21 - вместо JTAG

Всем спасибо !

Клапауций
Offline
Зарегистрирован: 10.02.2013

.

rastamanoff
rastamanoff аватар
Offline
Зарегистрирован: 22.10.2013

Привет Ув.Сообщество.Мои так сказать - эксперементы с Мега32 вперлись в прерывания.Пока что ничего не получается.

Началось все с того .что захотелось подключить библиотеку IRremote к Мега32.Скетчи не компилируюся,выбрасывает ошибки,судя по которым Arduino IDE не видит файл IRremote.ccp.В библиотеке имеется файл IRremoteInt.h,там прописаны контролеры с которыми работает библиотека.

// Arduino Mega
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  //#define IR_USE_TIMER1   // tx = pin 11
  #define IR_USE_TIMER2     // tx = pin 9
  //#define IR_USE_TIMER3   // tx = pin 5
  //#define IR_USE_TIMER4   // tx = pin 6
  //#define IR_USE_TIMER5   // tx = pin 46

// Teensy 1.0
#elif defined(__AVR_AT90USB162__)
  #define IR_USE_TIMER1     // tx = pin 17

// Teensy 2.0
#elif defined(__AVR_ATmega32U4__)
  //#define IR_USE_TIMER1   // tx = pin 14
  //#define IR_USE_TIMER3   // tx = pin 9
  #define IR_USE_TIMER4_HS  // tx = pin 10

// Teensy++ 1.0 & 2.0
#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
  //#define IR_USE_TIMER1   // tx = pin 25
  #define IR_USE_TIMER2     // tx = pin 1
  //#define IR_USE_TIMER3   // tx = pin 16

// Sanguino
#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__)
  //#define IR_USE_TIMER1   // tx = pin 13
  #define IR_USE_TIMER2     // tx = pin 14

// Atmega8
#elif defined(__AVR_ATmega8P__) || defined(__AVR_ATmega8__)
  #define IR_USE_TIMER1   // tx = pin 9

#elif defined( __AVR_ATtinyX4__ )
  #define IR_USE_TIMER1   // tx = pin 6

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
#else
  //#define IR_USE_TIMER1   // tx = pin 9
  #define IR_USE_TIMER2     // tx = pin 3
#endif

Попробовал править,типа

#elif defined(__AVR_ATmega32__)
  #define IR_USE_TIMER1   // tx = pin 14
  //#define IR_USE_TIMER3   // tx = pin 9
  //#define IR_USE_TIMER4_HS  // tx = pin 10
  // #define IR_USE_TIMER2 // tx = pin 23

и далее в timer1

#if defined(CORE_OC1A_PIN)
#define TIMER_PWM_PIN        CORE_OC1A_PIN  /* Teensy */
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define TIMER_PWM_PIN        11  /* Arduino Mega */
#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__)
#define TIMER_PWM_PIN        13 /* Sanguino */
#elif defined(__AVR_ATtinyX4__)
#define TIMER_PWM_PIN        6 /* ATTiny84 */
#elif defined(__AVR_ATmega32__)
#define TIMER_PWM_PIN        19 /* mega32 */
#else
#define TIMER_PWM_PIN        9  /* Arduino Duemilanove, Diecimila, LilyPad, etc */
#endif

никаких результатов.Далее более, поробовал самый заурядный скетч без библиотек связаных с прерыванием,но использующий прерывания,естественно "подкрутив" под свой пины.В основном цикле программы на экран выводятся нули, но когда на входе прерывания сигнал LOW (кнопка отпущена), на экран выводятся единицы.Т.е. Нажатие на кнопку останавливает повторяющиеся прерывания и запускает основной цикл программы.(http://compblog.vlukyanov.com/?p=435)

#include <LiquidCrystal.h>
int buttonInt = 24;            
int screenLed = 4;        
LiquidCrystal lcd(11, 10, 9, 8, 7, 6);

void setup()
{
  attachInterrupt(buttonInt, screenon, LOW);
  pinMode(screenLed, OUTPUT);
  lcd.begin(16, 2);
  digitalWrite(screenLed,HIGH);
}
void screenon()
{
  lcd.print("11111111111111111");
}

void loop()
{
  lcd.print("00000000000000000");
  delay(100);

}

Реакции на INTO (D24 - avr net io) нету.В чем дело непойму?

Также не идет библиотека TimerOne,использующая прерывания по таймерах.

100% на Arduino-Atmega32 идут библиотеки DallasTemperature, DS1307, MenuBackend, OneWire - проверенно.

Клапауций
Offline
Зарегистрирован: 10.02.2013

я добавил

#elif defined(__AVR_ATmega8P__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__)
 
в IRremoteInt.h
 
есть сомнения, что  #define IR_USE_TIMER1   // tx = pin 9
 
но оно с моими задачами справлялось - проверьте, если можете на предмет тараканов
 

 

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Да, был у меня гемор с IRremote и ATm32, Я не увидел с каим контроллером вы ассоциируете А32, вроде ближе всего 664, (я просто не помню, но заработало когда правельно прописал таймер. Но когда включил другую бибу, получилось что то вроде невозможности использования одного и того таймера. Так что даже если поотдельности бибы работать будут, вместе - не факт.

rastamanoff
rastamanoff аватар
Offline
Зарегистрирован: 22.10.2013

Спасибо за ответы,будем пробовать.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

С либой IRremote, для ATmega16 доработано недавно и проверено. Сейчас работает как с Таймером 1, так и с таймером 2.

Там небольшие доработки.

Если нужно, то качайте отсюда. По умолчанию настроено на таймер 2.

https://www.dropbox.com/s/vg5tezrnotok228/IRremote_ATmega16_Timer2.7z

Ищите __AVR_ATmega16__ и меняйте на ATmega32 или что там у вас.

 

rastamanoff
rastamanoff аватар
Offline
Зарегистрирован: 22.10.2013

Большое спасибо.Действительно работает.Поменял в этом куске кода :__AVR_ATmega16__  на __AVR_ATmega32__ 

// defines for timer2 (8 bits)
#if defined(IR_USE_TIMER2)
#define TIMER_RESET

#if defined(__AVR_ATmega32__)

#define TIMER_ENABLE_INTR    (TIMSK |= _BV(OCIE2))
#define TIMER_DISABLE_INTR   (TIMSK &= _BV(OCIE2))
#define TIMER_INTR_NAME      TIMER2_COMP_vect

TSOP подключал к D23(avr net io).Скетч заливал стандартный с библиотеки IRremote - IRrecvDemo.Поменяв int RECV_PIN с 11 пина на 23.В мониторе порта видны коды кнопок,тестил с RC5.

Еще раз большое спасибо.Будем тестировать....

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Спасибо за ответ. Вы уже третий, кто тестит, если что, отпишитесь, если найдете лажу, я у себя тоже поправлю. К сожалению всё протестить не всегда получается.