Програмирование микросхем ATmega 32
- Войдите на сайт для отправки комментариев
Пнд, 19/12/2011 - 20:23
Здраствуите форумчане, у меня такой вапрос, у меня есть ATmega 32 можно ли её програмировать ПО Ардуино если да то как.
Заранее спасибо за ответы.
юзай поиск: "программатор из arduino"
http://arduino.ru/forum/apparatnye-voprosy/moi-arduino-nachalo
Суть вопроса была не построение Arduini на ATMega32, а как программировать ATMega32 с помощью Arduino. Я присоединяюсь к вопросу. На сколько я знаю этот вопрос решён, но самого решения найти не могу.
а стоит ли из ардуино прорамматор делать, можно спокойно через исп или 5 проводков заливать прграмму, да и usb программаторы есть нормальные
Прогамматор USB asp. Какой прогой можно загрузить скетч?
Прогамматор USB asp. Какой прогой можно загрузить скетч?
В Arduino IDE выбираете программатор "USBasp" жмёте "Загрузить с помощью программатора".
Да еслиб всё так просто было, я бы и не писал. Тогда опять становится актуальным вопрос как запрограммировать Atmega32. IDE то его не знает
Да еслиб всё так просто было, я бы и не писал. Тогда опять становится актуальным вопрос как запрограммировать Atmega32. IDE то его не знает
Так же как и в случае с ATmega16 нужно произвести изменения в ядре Arduino IDE, но уже для ATmega32.
Попроси kisoft - пусть напишет и для 32-й по горячему следу.
Или скачай ядро здесь - обещают * supported MCUs: ATmega 16/32/164p/324p/644(p)/1284p, я для ATmega16 пользую.
В некоторые библиотеки придётся ручками 32-ю прописать.
Простые примеры и логику пробовал - вроде работает.
Изменения в ядре пытался сделать как раз по аналогии atmega16, вроде что то получилось но не до конца. Просить сделать за меня не стал, да кому это надо.
Да, действительно, работает, по крайней мере простой скетч залил. Чтоб идти дальше, надо с пинами разобраться.
Интересно вот, пин 6, это вроде как ножка 20, он же D6, он же PD6. Загрузил
Замигал на ножке 28 он же D22, он же PC6. На какие пины теперь библиотеку glcd прописывать?
Походу придётся начиная с pin1, загрудать по очереди и записывать, так же и ШИМ - ы искать
P.S. А я не понял, что номера пинов и ШИМ-ов программн озадаются, везде про разному с вети? Один нашёл как на Атмеге 16, другой вобще нумерация с 40-ой ножки идёт, у меня ка то не понятно...
Походу придётся начиная с pin1, загрудать по очереди и записывать, так же и ШИМ - ы искать
P.S. А я не понял, что номера пинов и ШИМ-ов программн озадаются, везде про разному с вети? Один нашёл как на Атмеге 16, другой вобще нумерация с 40-ой ножки идёт, у меня ка то не понятно...
http://aquaticus.info/pwm-configuration
Докладываю! " Чтоб не было пи__ежу, делал всё по чертежу")) Поменял в файле конфиге библиотеки glcd, прописал там мегу32, делов нет. Я думаю все беды от того что пины в 32-й через _опу наизнанку.
если программирую на "блинк" - нормально, ШИМ-ы - нормально, добавляю библиотеку glcd - нормально, но только пишу "отчистить экран" - всё, висяк, если блинк в начале кода, отмигает и всё, и наоборот.
План такой: найти файл в котором прописаны номера пинов к портам на мегу32 и на ардуину, сравнить и переписать как на ардуине.
План Б: в файле конфигурашке библиотеки прописать не 0, 1, ....., 31, а PA1,......, PB1,......., PD1, ......;
P.S. по последней ссылке описывается как конфигурировать пины ШИМ, там без 100 грам конечно не разберёшься, но суть я уловил. меня больше интересует как определяют номера пинов портов.
Да, не сказал, работает от внешнего осцеллятора 16.000.
Скетч для термометра на ЖКИ сделать оказалось легче чем я думал, но загрузить в МК, вот никогда бы не подумал, ПИПЕЕЕЕЦ - невозможно.
Да, не сказал, работает от внешнего осцеллятора 16.000.
Скетч для термометра на ЖКИ сделать оказалось легче чем я думал, но загрузить в МК, вот никогда бы не подумал, ПИПЕЕЕЕЦ - невозможно.
Кварца... внешнего кварца. Внешнй осциллятор - это то, что тебе в две меги фьюзы невтуда прошило.
Пускай будет кварца, мне не легче
Вобще с ЖКИ ничего. Походу из за того что пины через жопу получились, план А и Б естесссно не прокатил. А вобще кроме того как прошивать фьюзы на меге32 ещё для чего нибудь эти чипы можно юзать. После двухдневных поисков и иннете я думаю что они созданы как раз для прошивки фьюзов ну и светиками поблинькать. Какой вобще крендель додумался нумеровать пины с порта "С"!? Как у людей нельзя было делать!? Если ещё ссылки для ядра в IDE?
Если ещё ссылки для ядра в IDE?
Я же тебе давал - у тебя, как минимум два ядра должно быть(одно с этого форума).
Какая разница, как пины нумерованы?
я уже раз 150 проверял подключение МК с ЖКИ, отсоединял ЖК, загружал скетч, перепробовал всё, на Ардуине2560 отлично работает, на меге32, все порты рабочие -проверил блинком каждый, ШИМ тоже работают - проверил каждый, а ЖКИ даже букву "А" вывести не может, переподключаю к дуине, всё отлично, меняю пины в конфигурашке библиотеки glcd, загружаю, подключаю ЖКИ и нихрена, всё перепробовал. Неужели это так невозможно? Что никто подсказать не может ничего?
На 32-й меге через фьюзы JTAG нужно отключить, иначе PC2-PC5 у тебя будут заблокированы для программирования.
зы
Разберись с фьюзами наконец-то!
зы...
подключил ЖКИ 8х2, загрузил в Atmega32 подобный термомерт (точнее с него я написал для 128х64) библиотека LiquidCrystal, в скетче даже пины не менял, так вот там как раз PC2-PC5 используются(5, 4, 3, 2 - эти пины на портах "с"). Так вот на этом ЖКИ работает.
P.S. JTAG отключил давно.
Ну, и как думаешь - проблема в контроллере или библиотеке?
да понял уже что в библиотеке(((
Посоветуй другую для 128х64. Что т я не могу найти ничё.
Докладываю:
Попробовал план "А", т.е. - нашёл файл, определяющий номера пинов, прописал в нормальном порядке - PD,PB,PC,PA. Проверил порты... не помогло.
А вот план "В" сработал. В файле конфигурашке библиотеки переписал вмесно:
и т.д.
подправил на:
В библиотеке glcd есть детальное описание как с ней воевать, к каким портам подключать дисплеи, как настраивать ну и всё такое.
P.S. Всех с праздником 9 МАЯ.
Суть вопроса была не построение Arduini на ATMega32, а как программировать ATMega32 с помощью Arduino. Я присоединяюсь к вопросу. На сколько я знаю этот вопрос решён, но самого решения найти не могу.
Ребята !!! Если кто юзает ATmega32 как голый камень - раскажите по подробнее что и куда ( вобщем-то пользуясь инфой и ссылками данной темы я прошил ее через дуню , но с пинами неразбериха и частота стадартного проверочного blink (10 сек горит- 10 нет , а не 1Hz х 1Hz ) - на любых частотах кварца !!!
Понимаю надо отключить делитель но........ дуб дубом.
А с pin вообще засада - .......... просто дуб.
Если нет распиновки к контролеру, её нужно либо искать в софте, либо у меня для таких случаЁв есть скетчь
тупо меняю переменную и диодом ищу пин. заодно и частоту видно (1 сек, цикл). Достаточно начинать с нулевых портов: PB0, PC0, PD0, PA0. дальше вероятность 99,9% по порядку. Расположение, точнее номера пинов на любых AVR можно менять, но думаю теде это не понадобится.
с частотой это тоже не сложно. Если битфьюзы не трогал, то по умолчанию все atmega тактируются от внутреннего осцелятора на 1,000.(не путать с attiny? они на максимальные 8,000 и делится на 8) найди текстовый документ board, открой и найди мегу32 . там поменяй 16000000 на 1000000, сохрани изменения. Если прошиваешь через IDE то софт уже скачал и разместил где надо. что скачал?
А вобще новичкам не рекомендую связываться с atmega 16, 32. я с ними нагемороился. Лучше работать с 168/328. на них базируются дуины и софт готовый.
С частотой разобрался спасибо - перед этим сам менял там 160000000 на 10000000 результат не наблюдал , поменял на 1000000 и о чудо получил на blinc 1Hz - вопрос : я так понимаю камень сейчас работает на 1MHz а как его на 16 вывести (или я чего непонимаю ? )
в board.txt я прописал вот это и тут тоже вопрос :
1.кадькулятор фьюзов на ATmega32A выдает Low = 0xF1 High = 0x99 - почему не те значения как wiki Ж Low = 0xFF и High=0xDA
2.если я небуду использовать boot сколько надо прописать свободной памяти 32256 ?
С пинами получилось не так как на картинке выше , а так:
PD0 - PD7 = D0 - D7
PB0 - PB7 = D8 - D15
PC0 - PC7 = D16 - D23
PA0 - PA7 = D24 - D31
PWM - еще непроверял
Почему так и критичноли это ? , если да , то где это поменять ?
И вот еще хотел спросить :
какие функции поддерживает или может наоборот не поддерживает ATmega32 ( вопрос по аналогии с ATtiny2313 , ATtiny13 итд там все очень урезано в этом плане )
>> 2.если я небуду использовать boot сколько надо прописать свободной памяти 32256 ?
atmega32.upload.maximum_size=32768
перед этим сам менял там 160000000 на 10000000 результат не наблюдал , поменял на 1000000 и о чудо получил на blinc 1Hz - вопрос : я так понимаю камень сейчас работает на 1MHz а как его на 16 вывести (или я чего непонимаю ? )
ну я ж сказал, по умолчаниу (новые, не тронутые, с конвеера, с завода - как угодно) 1 Мгц (LB 0xE1 HB 0x99 кажется так)
ты выставлял частоту 10,000 вот он и работал в 10 раз медленее...
в board.txt я прописал вот это и тут тоже вопрос :
1.кадькулятор фьюзов на ATmega32A выдает Low = 0xF1 High = 0x99 - почему не те значения как wiki Ж Low = 0xFF и High=0xDA
в тхт я фьюзы вобще не трогаю, не влияет на скорость. Лучше прошить их чероез програматор, а выдаёт Low = 0xF1 High = 0x99 потаму что как я сказал эта конфиг по умолчанию
2.если я небуду использовать boot сколько надо прописать свободной памяти 32256 ?
уже ответили но зачум туза вобще лезть? места для кода хватит и ладно. Вобще лишний раз лазить не надо, надёжней будет. Иначе полезут лаги и не будешь знать откуда.
С пинами получилось не так как на картинке выше , а так:
PD0 - PD7 = D0 - D7
PB0 - PB7 = D8 - D15
PC0 - PC7 = D16 - D23
PA0 - PA7 = D24 - D31
PWM - еще непроверял
Почему так и критичноли это ? , если да , то где это поменять ?
а конфигуратор выглядит вот так (у меня в той же папке):
какие функции поддерживает или может наоборот не поддерживает ATmega32 ( вопрос по аналогии с ATtiny2313 , ATtiny13 итд там все очень урезано в этом плане )
где там???
У них немного отличается структора, у тинек выше максимальная тактовая частота (можно разогнать до 20,000) и всё зависит от того, что тебе надо от МК (память, кол-во пинов, иногда кол-во портов с таймером (ШИМ) и т.п) Поэтому я и говорил что лучше возиться с Atm328, Там и пинов достаточно и буты "ровные"
У меня вот так в pin_arduino.h по пути hardware/ATmega32A/cores/core32 , поменять на ваше ?
И по поводу частоты 16MHz как насчет запустить на этой частоте камень ?
с <PWM.h> библиотекой - кстати тоже не компилируется , вываливаются ошибки !
Не, менять не надо, пусть так и будет, просто если будешь копировать чьи-то скетчи, имей ввиду что пины могут, а скорей всего не могут совпадать. Нужно будет перепрописывать все (в самом коде, не более)
На сколько я понял калькулятор фьюзов у тебя есть и с ним ты разобрался. каким именно способом прошивать решать тоже тебе. Для Атмеги 32А на внешний кварц 16,000 это 0хFF 0x99 но я в НЕХ - е не прошиваю, мало понятно. При такой конфигурации выставляются CKSEL = 1111 SUT 11. если можешь через командную строку, тогда НЕХ твой. Я бы для начала рекомендовал бы USBASP_AVRDUDE_PROG Наглядно видно что и как выставляешь. Если совсем не знаешь что делать и как, погугли "прошивака бит фьюзов"
Если хочешь побаловаться с ШИМ загрузи простой код также меняя номер пина
Только PD7 - работает как PWM ! , а PC2,PC3,PC4,PC5 - вообще молчат даже на Blink
Может есть готовый архив для прошивки голой ATmega32A скетчем ?
Спалить ещё не успел?
пины правельно указывал?
pin = 4;
pin = 5;
pin = 7;
pin = 11;
Спалить ещё не успел?
пины правельно указывал?
pin = 4;
pin = 5;
pin = 7;
pin = 11;
Не неуспел, у меня их три штуки , все три так и прошиваются ! все pin кроме pin 7(PWM - все ОК) просто моргают как Blink
покажи код
p.s. у 32 -й их 4
Может есть готовый архив для прошивки голой ATmega32A скетчем ?
есть кое что. Что именно надо?
покажи код
p.s. у 32 -й их 4
О каком коде речь ?
есть кое что. Что именно надо?
правильный board.txt и cores/core32 - со всей начинкой ! может конечно еще что надо , я просто рассуждаю по аналогии с ATtiny2313 и 13A - мне этих папок было достаточно и все ок прошивалось , а тут засада , я уже желею что их купил ( Уже форточку открыл .......)
1. код, которым ты тестишь порты (скетч), в частности ШИМ.
2. кто тебе сказал что у тебя неправельный софт!? С Атмега 32 так и будет. Я начал с ними (32А, 16А) работать т.к. они были доступны. Но при этом за неимением достаточных навыков постоянно вылаЗЯТ бока. Например недавний мой опыт показал что нельзя включать в скетч одновременно библиотеку ИК приёмника и сервы т.к. получается накладка с таймерами и все мои усилия переключить одну из биб на другой таймер были четны. Но при этомпрекрасно работает одновременно с бибами для LCD, servo, датчиком температуры и часами реального времени + напихал туда шрифтов. Вобщем в основном задумку на 32 - ом реализовал. Изначально определись что тебе от МК надо. Разберись с пинами и заодно с фьюзами, а потом иди дальше. Выкидывать ничего не надо.
Вот надосуге посмотри пару моих проэктов на ATmega32A
http://www.youtube.com/watch?v=Vze6BfuwC6c Это термотетр
http://www.youtube.com/watch?v=KOk0yA-wkGY Это кондишин БК
Кстати с подключением lcd под термометр на 32А тоже была проблемка. На дуине всё было норм а на 32 не захотел. Менял карту пинов как сейчас у тебя, тож не помогло. по другому решал.
А, так тут же выше и описывается))) и в №8 есть ссылка откуда я качал...
дай ссылку откуда качал софт для 32.
1. код, которым ты тестишь порты (скетч), в частности ШИМ.
дай ссылку откуда качал софт для 32.
http://wiki.edwindertien.nl/doku.php?id=software:bootloaders
Пробовал скечи заливать какие идут какие нет - ну это ничего подкорректируем , но непонятен момент с ногами ШИМ и с выводами 24,25,26 и 27 я о них писал выше на них тишина вообще на всех трех контроллерах.
А по выбору 32 была задача - програмировать с простой панельки DIN , количество PWM не меенее 4-х , аналоговые входы и цыфровые выходы по максимуму , память 30 метров .
Код вроде рабочий.
замени в нём
на
И в начале введи переменную pin как я показывал (№30), может просто забываешь менять номер пина в двух местах
По ссылке что дал, там не готовый boot для 32, корректировать надо, делал? иначе мега 32 может попадать под else.
Я boot вообще не заливаю - я делал все по аналогии с ATtiny13A создал папку hardware в том месте где у меня скетчи лежат в ней ATmega32 в которой board.txt и cores/core32 а в эту папку все что пологается с корректировками из выше упомянутой ссылки. - дальше через MEGA2560( в качестве программатора) все в камень ATmega32A так делал и с другими камнями было все ок.
И по поводу пины забыл поменять - это не про меня ( хоть и дуб , но ветки прорастают )
Что есть у тебя ? для использования голого камня уже откорректированное под ATmega32 ?
я так думаю вся проблема в файле pins_arduino.h - вот что мне нужно.
Как JTAG отключить ? - ведь четыре выхода PC из за него неработают !
Только PD7 - работает как PWM ! , а PC2,PC3,PC4,PC5 - вообще молчат даже на Blink
Может есть готовый архив для прошивки голой ATmega32A скетчем ?
у 32-й PWM расположены так
у 32-й PWM расположены так !
Да , я так и проверяю , но таймер "TIMER0" - PB3 незнаю как правильно прописать ( пробовал , вываливаются ошибки при компиляции ) , а с PD4 и PD5 разобрался , заработали , в pins_arduino.h PD4 был TIMER1A ,а PD5 - TIMER1B - поменял их местами и все получилось с PWM
Остается отккрытый вопрос по PB3(TIMER0) и как отключить JTAG ( пробовал фьюз High - D9 - без изменений)
Как пробовал?
Фьюзы поправил в board и пробовал скечи загонять.
PS кстати PD7(TIMER2) - когда отрабатывает ШИМ имеет что то вроде ( мерцания 30-50Hz , не равномерного возростания яркости ) по сравнения с этимже проверочным скетчем на выводах с TIMER1A и TIMER1B - может какой предделитель поправить ?
Фьюзы поправил в board и пробовал скечи загонять.
PS кстати PD7(TIMER2) - когда отрабатывает ШИМ имеет что то вроде ( мерцания 30-50Hz , не равномерного возростания яркости ) по сравнения с этимже проверочным скетчем на выводах с TIMER1A и TIMER1B - может какой предделитель поправить ?
шаг приращения яркости ставьте 1.
зачем все эти проверки работоспособности контроллера?
шаг приращения яркости ставьте 1.
Шаг 1 так и стоит - эффект как будто с частотой 30-50Hz - гаснет на микросекунды при увеличении или уменьшении ( дрожит как лампа дневного сведа на дроселе ) на других двух пинах PWM все плавно с этимже скетчем !
зачем все эти проверки работоспособности контроллера?
У друга их штук 15-20 - хотим максимально одоптировать для заливки скетчей от 328
У друга их штук 15-20 - хотим максимально одоптировать для заливки скетчей от 328
все 20-ть штук?
по аналогии М16 обсуждаемого в http://arduino.ru/forum/proekty/arduinoide-i-atmega16-korrektiruem-yadro
смотрите здесь https://sites.google.com/site/kisoft63/pinboardii/pinboardii ядро для M16
там походу AVR_ATmega16 нужно заменить на AVR_ATmega32 или сравнить ядро для 16-й и оригинальное пофайлово для полной уверенности.
не прокатывает, пробовал. sp34 не внимательно читает ответы. Я указывал на твою ссылку этом топике. Всё работает (почти всё). А 32А под 328 полностью всё-равно не подогнать. Зависит от того что именно требуется от МК.
Клапауций, поправь меня если я ошибаюсь но таким мокаром
через дуньку фьюзы не прошиваются
Клапауций, поправь меня если я ошибаюсь но таким мокаром
через дуньку фьюзы не прошиваются
Если через опцию "Записать загрузчик", то прошьются подключенным программатором... вместе с загрузчиком, потом можно перезаписать загрузчик блинком или другой ерундой.
можно логи посмотреть, после нажатия "Записать загрузчик"