Crumbuino-128 своими руками

Smit7ua
Offline
Зарегистрирован: 08.03.2017

Подскажите пож можно такое ардуино из атмеги 64 сделать?

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Обучаю пользованию гуглом:

1) Открываете гугл

2) Пишете туда atmega64 arduino

3) Смотрите первые ссылки:

https://forum.arduino.cc/index.php?topic=386733.0

https://github.com/MCUdude/MegaCore

4) PROFIT!

Smit7ua
Offline
Зарегистрирован: 08.03.2017

Спс большое))) я писал в гугле ардуино из атмега 64 и ничего толком не нашел)
Еще раз спс, только вникаю в мк, много ещё не понимаю(

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

Smit7ua пишет:

я писал в гугле ардуино из атмега 64 и ничего толком не нашел)

не ври https://www.google.com/search?q=arduino+ATmega64

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Smit7ua пишет:

я писал в гугле ардуино из атмега 64 и ничего толком не нашел)

Не нужно писать осмысленные фразы как для человека, нужно писать ключевые слова. И желательно на языке оригинала - на английском.

Smit7ua
Offline
Зарегистрирован: 08.03.2017

все получилось за 5 мин) 
а что за параметры: BOD 2.7v? BOD 4v? и Compiler LTO?
это появилось в меню инструменты под выбором платы.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Smit7ua пишет:

а что за параметры: BOD 2.7v? BOD 4v? и Compiler LTO?

Снова открываешь вторую ссылку из сообщения #53 и внимательно смотришь список "Table of contents". Там есть и про BOD, и про LTO.

UPD: Более подробно про BOD тут - http://fusecalc.mirmk.net/help/help04.htm

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Попробовал залить загрузчик как тут описано в посте №50 через Ардуино Нано - фиг-то там. avrdude выдает такое:

Arduino: 1.6.5 (Linux), Плата"ATmega128, Disabled, Disabled (default), 8 MHz internal"

avrdude: Version 6.0.1, compiled on Apr 14 2015 at 19:04:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/home/arhat109/.arduino15/packages/MegaCore/hardware/avr/1.0.6/avrdude.conf"
         User configuration file is "/home/arhat109/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB0
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x15
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x15
         AVR Part                      : ATmega128
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom         4    12    64    0 no       4096    8      0  9000  9000 0xff 0xff
           flash         33     6   128    0 yes    131072  256    512  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x02

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x10
         Hardware Version: 4238024
         Firmware Version: 533354624.32523
         Topcard         : STK502
         Vtarget         : 1.8 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: stk500_initialize(): (b) protocol error, expect=0x10, resp=0x01
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x10

avrdude done.  Thank you.

Проблема загрузки на плату. Для достижения дзен, курить http://www.arduino.cc/en/Guide/Troubleshooting#upload .

Что с этим делать? И можно ли как-то понять что плата и камень запаяны верно?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

а mosi , miso правильно подключили к PDO, PDI? вывод PEN и RST через 10К резистор  на VCC подтянуты?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да, все сделал как описано в посту №50: скачал мега-коре, установил набор плат, все появилось как надо. Ардуино ИДЕ 1.6.5 rev 5.0. Прошил пример Arduino ISP в Нано, переключил тип платы на Мега128, запретил BOD, LTO .. пробовал устанавливать частоту 16Мгц, как на кварце и внутреннюю 8 и 1Мгц - бесполезно. Ресет подтянут через 10кОм на питание, есть кнопка на землю и параллельно её стоял конденсатор 100нФ. Отпаял кондер - результат тот же.

Подключение (Нано -> Мега128):

v1: +5в -> +5в, gnd -> gnd, Reset -> Reset, D11 -> Rx0 (2pin), D12 -> Tx0 (3pin), D13 -> SCK (11pin), Pen - болтается в воздухе (на Мега128А должна быть вн. подтяжка к +5в)

Итог - "Я сделал 10 попыток связаться, все 10 попыток ушли в таймаут"..

v2: все тоже самое, только D10 наны подключаю на Reset программируемой меги как написано в комменте примера. Вылезает эта ошибка при любой установке кварца.

P.S. Перепрозванил ещё раз все соединения, нашел 2 ошибки монтажа, но они не имеют отношения к этим сигналам. Потребление питания от Нано показывает 67мА.. как-бы в норме, не знаю. Камень после десятка попыток прошить его стал слегнка теплый, но и только... типа рабочий .. х.з. как проверить.

slider
Offline
Зарегистрирован: 17.06.2014

Arhat109-2 пишет:

.....

P.S. Перепрозванил ещё раз все соединения, нашел 2 ошибки монтажа, но они не имеют отношения к этим сигналам. Потребление питания от Нано показывает 67мА.. как-бы в норме, не знаю. Камень после десятка попыток прошить его стал слегнка теплый, но и только... типа рабочий .. х.з. как проверить.

программатор USBASP есть? проверить ччтение запись.
можно прогой ponyprog и подключить к LPT порт (надо несколько резисторов) , или СОМ порт (надо немного рассыпухи) , просто прочесть конфигурацию, прочесть - записать . Вот и проверка.

атмега128 откуда? новая? или где юзанная (если там напортачено с фьюзами , то спасет только реаниматор (восстановление фьюзов параллельным программированием) 

Arhat109-2 пишет:

......

есть кнопка на землю и параллельно её стоял конденсатор 100нФ. Отпаял кондер - результат тот же.

....

это как? соберите обвязку по схеме ! кондер нельзя цеплять параллельно , ардуина что должна упираться разряжать/заряжать его когда ей надо посать импульс reset?     ( он цепляется последовательно с DTR  для заливки скетчей.) 

Arhat109-2 пишет:

... P.S. Перепрозванил ещё раз все соединения, нашел 2 ошибки монтажа, но они не имеют отношения к этим сигналам. Потребление питания от Нано показывает 67мА.. .... Камень после десятка попыток прошить его стал слегнка теплый, .....

возможно всеже имеют отношение

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Программатора нет, и вообще ни разу не прошивал камни. Поэтому и использовал в качестве программатора Нанку.

ATmega128A - новая. Получена коллегой с Али в партии 5шт. Одну выменял у него на микросхему памяти HM628512BLP-7 (512kbx8 70us). Оно примерно одинаково по деньгам, что та что друггая взяты рублей по 40/шт.

Обвязка сейчас как раз "по схеме": reset подтянут 10к к питанию, подключена кнопка на землю и  припаян кварц 16Мгц (в нормальном, а не SMD корпусе) с 2-я кондерами на 22пф, снятыми с платы Ардуино Мега2560. По сути и все. Дополнительно на плате есть стабилизатор питания от внешнего источника на AMS1117 + вх. диод + 2 электролита по 47.0х25в (все снято с той же Меги) + 2 кондера по питанию по сторонам платы по 100нф + кондер с Aref на землю 100нф + RC фильтр с переключателем на питание AVcc АЦП блока. Переключатель позволяет питать АЦП или с фильтра от всего питания платы или просто с внешнего входа напрямую. Собственно это вообще все "навесные" детальки, кроме разъемов по типу расширительного шилда, которые ещё и не запаяны даже.

Ошибки монтажа, выявленные на сейчас: 1. не запаян кусок штырьков "питание +5в" линейки интерфейсов на общую шину питания платы, из-за чего подача внешнего питания напрямую от Наны на UART0 - не доходила до камня и платы в целом; 2. КЗ между ресет и землей - выявлено до начала попыток программирования. 3. КЗ между ножками переключателя питания AVcc АЦП блока - из-за чего питание с фильтра уходило на выходной штырек и только. Ни на что не влияет.

Не устранил пока, потому что не вижу надобности: выход Pen висит в воздухе, оказался не подпаян к дорожке, которая никуда не идет кроме как на штирек "Pen" .. можно подтянуть к питанию через 10к, но по даташиту он и так уже подянут внутренней подтяжкой. Все остальное - это выводы камня идут на штырьки расширительных разъемов .. все в норме КЗ- не обнаружено, соединение с гнездами есть, сами штырьки ещё не паялись кроме UART0 и SPI интерфейсов.

.. не знаю. 67мА мне кажется нормальным потреблением схемы, учитывая наличие на плате AMS1117, хотя как он ведет себя при наличии на его выходе внешних 5в при отсутствующем питании на входе? Я - ХЗ..

bwn
Offline
Зарегистрирован: 25.08.2014

Arhat109-2, флюс нормально отмыли? 67мА мне кажется большой величиной. Для Ардуины на 1280 декларируют максимальный ток в 50мА, и это со всем дополнительным обвесом. У Вас же кроме камня и нет ничего.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Флюс ещё не отмывал вовсе. Плата залита канифолью "по уши". Снял все лишнее с платы: стабилизатор, кнопку, кондеры стаба .. ток потребления упал до около 50мА. Согласно рисунков 162,169 даташита, типичное потребление на 5в и 16Мгц надо ожидать в районе 32мА в активном и 17мА в режиме idle и для вн. 8Мгц там же 19 и 9мА соответственно, что сильно смущает моими 50мА явно в режиме idle и внутренним генератором по умолчанию ..

Коллега выделил ещё одну из запаса 5шт на попробовать .. Попробовал подпаяться к 21,22 выводам ещё одной Меги и замерять потребление .. то, что есть "в руках" - китайская Ц-шка только с 10А шкалой, не показала ничего вовсе .. то есть потребление меньше 10мА. В общем, похоже что-то не так запаял или где-то коротит ..

bwn
Offline
Зарегистрирован: 25.08.2014

Хотел Вам предложить, развести макетку с пинами питания, кварца и программирования и на ней попробовать прошить, да и токи померить. А потом уже с большим творением разбираться. ИМХО.

UPD, хотя по канифоли не должно лезть ничего. На активном, да, нагорал. Он при разогреве эл.проводным становился.))))

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

В общем, с криками снял мегу с платы .. подпаялся к 21,22 пинам и .. потребление камня в воздухе всего 2.2мА (дома есть чем измерять) .. похоже что были таки коротыши на плате, возможно ПОД микросхемой. Пока снимал, оторвал ещё 4 дороги от платы .. в общем, отбой. Буду переразводить плату и делать новую. Эта разводка никуда не годится.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

В общем, что-то я явно делаю не так. Не прошивается мега128а через Нанку ни в какую. Более того, попробовал прошить одну Нано через другую - ваще фигня полная. Поставил ИДЕ 1.8.2 - результат тот же.

Вот так подключаю плату к Нано:

10-й пин Нано (зеленый провод) идет на Reset меги(20пин), 11-й (синий) Нано - на Rx0 Меги(2пин), 12-й (красный) от Нано - на Tx0 (3) Меги, и 13-й от Нано (желтый) идет на SCK(11) 128-й меги. Белый - +5в, черный - земля.

В итоге, что на 1.6.4, 1.6.5 и 1.8.2 результат ровно тот же, что и приведен выше. Пайка платы прозвонена уже раз на 500 .. потребление микроконтроллера - 8-9мА - "в норме", пытаюсь прошить загрузчик с выбранным параметров "Clock: 8Mhz internal" поскольку кварц на плату ещё не установлен.

----------------------------

Аналогично, попробовал прошить загрузчик через Нано в другую Нано:

Вывод MOSI от "главной" отправил на MISO прошиваемой Нано, и наоборот MISO главной ушел на MOSI прошиваемой Нано. Остальное согласно описанию. В итоге на ИДЕ 1.8.2 получил такой результат:

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x15
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x15

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): unknown response=0x12
Ошибка при записи загрузчика.

Очевидно, что что-то делаю не так, и дело не в камнях или плате..

Что я делаю не так?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Arhat109-2 пишет:

Вывод MOSI от "главной" отправил на MISO прошиваемой Нано, и наоборот MISO главной ушел на MOSI прошиваемой Нано. 

SPI это не UART, не надо его перекрещивать... MOSI - MOSI, MISO - MISO, SCK - SCK.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Хоть так, хоть эдак - результат тот же. ИДЕ 1.8.2., в меню стоит: "плата - Arduino Nano, процессор, atmega328, порт - /dev/ttyUSB0, программатор - Arduino as ISP" Нажимаю "Записать загрузчик" и получаю вот такую ошибку. Попробовал соединить MISO-MISO, MOSI-MOSI текст (найдите 2 отличия):

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x15
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x15

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): unknown response=0x12
Ошибка при записи загрузчика.
 

.. щас вот подумалось .. может это потому что у меня Нано китайские на базе CH340G?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

В ИДЕ 1.8.2 обнаружил опцию "получить информацию о плате", нажал:

BN: Неизвестная плата
VID: 1A86
PID: 7523
SN: Загрузить любой скетч, для использования

.. это как? Подключена китайская Ардуино Нано .. программируется вполне нормально.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

Jeka_M пишет:

Arhat109-2 пишет:

Вывод MOSI от "главной" отправил на MISO прошиваемой Нано, и наоборот MISO главной ушел на MOSI прошиваемой Нано. 

SPI это не UART, не надо его перекрещивать... MOSI - MOSI, MISO - MISO, SCK - SCK.

на 128 надо MOSI MISO на PDO PDI

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

На фото подключения 128-й меги: слева от питания - интерфейс SPI, в нем использована только 11 нога (желтый провод). Идет на 13-ю ногу Нано, которая за программатор. Справа от питания: Reset, Rx0(PDI), Tx0(PDO) .. они и подключены: Reset зеленым проводом на 10 ногу Нано, Rx0 синим проводом на 11 ногу и Tx0 красным на 120ю ногу.

Сейчас попробовал тупо вовсе отключить от Нано-программатора устройство, которое она программирует вовсе. Результат точно такой же как и при попытках прошить другую Нано (привел сегодня выше) .. то есть получается, что Нано вообще не видит вторую себя!

А вот при попытке прошить 128-ю мегу пишет то, писал раньше при первой попытке прошить, могу выложить ещё раз от ИДЕ 1.8.2:

avrdude: Version 6.3, compiled on Jan 17 2017 at 11:00:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/home/arhat109/.arduino15/packages/MegaCore/hardware/avr/1.0.6/avrdude.conf"
         User configuration file is "/home/arhat109/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB0
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x15
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x15
         AVR Part                      : ATmega128
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom         4    12    64    0 no       4096    8      0  9000  9000 0xff 0xff
           flash         33     6   128    0 yes    131072  256    512  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x02

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x10
         Hardware Version: 4238238
         Firmware Version: 0.0
         Topcard         : STK502
         Vtarget         : 1.8 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: stk500_initialize(): (b) protocol error, expect=0x10, resp=0x01
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x10

avrdude done.  Thank you.

Ошибка при записи загрузчика.
 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

или плохой контакт, или другой юсб кабель попробуй, потолще, или комп с виндой возьми

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Взял кабель потолще - результат тот же. За это время обчитался уже интеренету у всех шьется нормально, у меня стабильно выдает ошибку даже при попытке прошить одну Нано через другую.

Попробовал изменить скорость BAUDRATE в скетче ArduinoISP .. на 9600 - выдает 0х60, 0х66, 0х6е по очереди в разных попытках; выше 19200 выдает только 0хfa и далее 0xff

Решил что возможны накладки из-за наличия нескольких версий ИДЕ одновременно. Снес (переименовал) все папки для ИДЕ, распаковал заново 1.8.2 .. результат тотже.

Для UNO было в нескольких местах что прошивальщик должен иметь доп. кондер на 10мкф на своем ресете на землю. Попробовал от 10мкф до 100нф: выдает ошибку идентификации платы.

Внезапно, забыв поменять программатор с "Arduino as ISP" залил блинк в первую Нану (прошивальщик) .. скетч залился совершенно нормально, несмотря на то что стоял "кривой" программатор .. как это?

В общем, такое ощущение что что-то не так в линуксовой версии ИДЕ. Пошел искать винду..

bwn
Offline
Зарегистрирован: 25.08.2014

Конденсатор не нужен точно. А вот отсутствие кварца у 1280 наводит на подозрения (по аналогии с 328, большие камни не шил, но правила думаю те же).

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Я пока что пытаюсь прошить одну полностью рабочую Нано через другую. До 128-й дело ещё не дошло даже.

nevkon
Offline
Зарегистрирован: 20.01.2015

Там для прямой заливки скетча через программатор нужно выбирать Скетч -> Загрузить через программатор, простым способом, да, зальете в первую дуню. Кстати скорости программатора правильные стоят в настройке прошивки и в драйвере? А то может в драйвере стоит другая скорость.

Кстати тоже чертыхался с 128 камнем, в итоге победил, но шьется все равно не каждый раз.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

А что за драйвер требуется? Ни разу никаким не пользовался на своем Линуксе, все заливается на ура. Просто указываю порт /dev/ttyUSB0 .. 1,2,3 .. куда подключен кабель с Ардуинкой и все. В самом начале, при установке достаточно добавить себя в группу dialout, чтобы Линукс разрешил запись в usb порты и всё.

Может как тут проблема, что для прошивки, кроме дудки ещё и какой-то драйвер нужен?

В programmers.txt для Arduino as ISP указана скорость 19200, и есть доп.параметр -b, который при заливке программ из ИДЕ почему-то указывается на 57600, а при записи загрузчика -b 19200 как надо .. в скетче примера ArduinoISP.ino тоже стоит 19200 и на другой оно не фурычит, проверял ..

Щас вот обратил внимание на строку запуска дудки по кнопке "Записать загрузчик":

.../avrdude -C/home/.../arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -P/dev/ttyUSB0 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m

.. а какой hex-файл заливаем-то?!? И почему через программатор stk500v1, а не через arduino as isp?
 

nevkon
Offline
Зарегистрирован: 20.01.2015

Вы все верно описали. Драйвер - то как общаться с устройством и в данном случае это несколько строчек в programmers.txt. Именно скорость указанная в скетче ArduinoISP и скорость обмена в programmers.txt для загрузчика должны совпадать.

Кстати в первый раз 128 удачно прошил без кварца и скорость вроде была понижена до 2400бод. После сменил фьюзы на нормальные. Где-то в даташите вроде указывется это, по умолчанию 128 затактована от внутреннего генератора на 1МГц если правильно помню.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Так я сейчас тренируюсь на прошивке Ардуино НАНО через такую же НАНО .. 128-ю отложил, пока не пойму в чем проблема.

nevkon
Offline
Зарегистрирован: 20.01.2015

Будет время - соберу на чистой макетке так чтобы провода все видно было, покажу как должно быть.

slider
Offline
Зарегистрирован: 17.06.2014

Arhat109-2 пишет:

А что за драйвер требуется? Ни разу никаким не пользовался на своем Линуксе, все заливается на ура. .....

Arhat109-2   у вас затык счто ардуиной ардуину прошить не получается. с этим разберитесь сначала, а потом с  мегой128 само собой получится. Ничего мудрить там не надо. Все уже обсасоно в соответствующих темах и в инете . (восстановление ардуины,...) .

 Самое простое - заливать загрузчик через ардуину , пользуя ее как программатор ( со скетчем  arduino isp ) , потому как она и фьюзы шьет как надо.           Если есть USBASP в наличии , то им тоже можно.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Так вот это обсосанное на 100раз и НЕ получается ..

взял Ардуино Нано, залил в неё скетч из примера Arduino as ISP, соединил контакты проводками (у меня комплект по 20см .. может слишком длинные?) 10 -> reset, 11->11, 12->12, 13->13, 5v->5v, GND->GND, тут выше пост №69 - третье фото, но на нем поменяны местами 11 и 12 контакты, исправился (уже подсказали в №70). Даже поставил на 9,8 и 7 ногу 3-х цветный светодиод для диагностики.. сердечком мерцает как положено. Выбрал плату "Ардуино Нано", проц "328", и загрузчик "Arduino as ISP", нажимаю "Записать Загрузчик" и .. получаю ошибку поста №71 или №74 в зависимости от того, включен у меня детальный вывод или нет.

в №75 посоветовали поменять кабель или перейти на винду .. кабель поменял - результат тот же. Винду доустанавливаю, как только, так сразу скачаю ИДЕ и буду пробовать .. но, в чем дело - так и не понял до сих пор.

Пробовал подавать на прошиваемую Нану 5в от отдельного БП, думал что 4.75в от USB недостаточно, пофиг. Результат - тот же.

Что ещё и куда рыть - пока не понимаю от слова "совсем". У меня этих Нано - 10шт, все работают и скетчи заливаются "на ура", а вот загрузчик не шьется ни в одну. ИДЕ 1.8.2.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Поднял 4-й пенек, поставил хрюшу, поставил ИДЕ 1.8.2. и драйвер CH340G с сайта производителя. Нано прошилась с первого пинка. Проблема в Линукс. Все, пошел переливать на него ПО для заливки 128-й меги..

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

Arhat109-2 пишет:

Проблема в Линукс.

вот сейчас было обидно.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да, всё нормально. Прошил ATmega128A на своей плате со второй попытки. Прозвон показал что сигнал от входа reset до ноги камня идет с сопротивлением 32 ома .. непропай.

УР-ра! Всем спасибо за участие и помощь... п-а-л-у-ч-и-л-а-с-с-я .. :)

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

Arhat109-2 пишет:

Да, всё нормально. Прошил ATmega128A на своей плате со второй попытки. Прозвон показал что сигнал от входа reset до ноги камня идет с сопротивлением 32 ома .. непропай.

УР-ра! Всем спасибо за участие и помощь... п-а-л-у-ч-и-л-а-с-с-я .. :)

купи USBasp

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Перепрошил загрузчик на частоту 20Мгц .. прошилось с первого раза. Потребление платы выросло до 34мА, всё строго согласно даташита. Смущает что заливка прошла как-то слишком шустро .. согласно отчету avrdude за 0.05сек. на скорости 19200.

AndreyE
Offline
Зарегистрирован: 02.05.2017

Здравствуйте. А кто-нибудь добивался работы Atmega128 и дисплея tft 2.4 на ili9341?  Библиотека "SPFD5408-master" c гит хаба. https://github.com/JoaoLopesF/SPFD5408 ( Кстати, на 328 атмеге все чудесно работает с этой библиотекой, но свободных пинов почти не остается.). Ковырял ее долго. Но опыта маловато. Исправлял файлы библиотеки и "pin_magic.h"   и "SPFD5408_Adafruit_TFTLCD.cpp". Не помогло. Может кто подскажет как Atmega128 с TFT 2.4 на ili9341 поженить. На данный момент при загрузке график теста из примеров экран мерцает и видно, что процесс идет. Но, похоже, не происходит инициализации дисплея и картинки нет, только мерцание. В Atmega128 загрузчик MegaCore с гит хаба (https://github.com/MCUdude/MegaCore). Исправленная мной библиотека здесь https://yadi.sk/d/HlwgoRtS3HYgNZ .

slider
Offline
Зарегистрирован: 17.06.2014

  AndreyE , в чем именно у вас затык ?  и какой именно дисплей?  tft 2.4 на ili9341 м.б. аж 3-х разновидностей. продаются с шинами SPI и 8бит, еще м.б.  16бит, библиотеки у них разные. подходы разны, вереницу всю  времени нет выкладывать.      попробуйте с либой UTFT (там если по быстрому - к меге2560 приписать мегу128 , а упоминание портов H закоментить). c adafruit вроде еще проще было. 

Подключал все разновидности шин диспов , на разных библиотеках. всё работает. править либы пришлось неприлично мало.  где-то в форуме выкладывал, набегом пока не нашел где.

// на меге128 както немножко пошустрее вывод инфы на дисп получился, в отличии от atmega328 . 

slider
Offline
Зарегистрирован: 17.06.2014

AndreyE ,

вариант1. если по быстрому как говорил , то в  UTFT.cpp  дописать в

#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#include "hardware/avr/HW_ATmega1280.h" 
про атмегу128 , чтоб либа лезла в файл  hardware/avr/HW_ATmega1280.h
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega128__)
#include "hardware/avr/HW_ATmega1280.h" 
 
потом в hardware/avr/HW_ATmega1280.h и убрать про порт PORTH и его настройку DDRH
 
вариант2. сделать по нормальному , если эту либу будете пользовать и на atmega2560, тогда
дописываем в это условие ссылку на новый файл
#elif defined(__AVR_ATmega128__)
#include "hardware/avr/HW_ATmega128.h"
создаете его по этому адресу , скопировав содержимое с atmega1280.h и удалив ненужное.
HW_ATmega128.h :
// *** Hardwarespecific functions ***
void UTFT::_hw_special_init()
{
}

void UTFT::LCD_Writ_Bus(char VH,char VL, byte mode)
{   
	switch (mode)
	{
	case 1:
		if (display_serial_mode==SERIAL_4PIN)
		{
		if (VH==1)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);
		pulse_low(P_SCL, B_SCL);
		}
		else
		{
		if (VH==1)
			sbi(P_RS, B_RS);
		else
			cbi(P_RS, B_RS);
		}

		if (VL & 0x80)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);
		pulse_low(P_SCL, B_SCL);
		if (VL & 0x40)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);
		pulse_low(P_SCL, B_SCL);
		if (VL & 0x20)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);
		pulse_low(P_SCL, B_SCL);
		if (VL & 0x10)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);
		pulse_low(P_SCL, B_SCL);
		if (VL & 0x08)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);
		pulse_low(P_SCL, B_SCL);
		if (VL & 0x04)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);
		pulse_low(P_SCL, B_SCL);
		if (VL & 0x02)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);
		pulse_low(P_SCL, B_SCL);
		if (VL & 0x01)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);
		pulse_low(P_SCL, B_SCL);
		break;
	case 8:

		PORTA = VH;
		pulse_low(P_WR, B_WR);
		PORTA = VL;
		pulse_low(P_WR, B_WR);

		break;
	case 16:
		PORTA = VH;
		PORTC = VL;
		pulse_low(P_WR, B_WR);
		break;
	case LATCHED_16:

		break;
	}
}

void UTFT::_set_direction_registers(byte mode)
{

	if (mode!=LATCHED_16)
	{
		DDRA = 0xFF;
		if (mode==16)
			DDRC = 0xFF;
	}
	else
	{
		//DDRH = 0x18;
		DDRG = 0x20;
		DDRE = 0x3B;
	}

}

void UTFT::_fast_fill_16(int ch, int cl, long pix)
{

	long blocks;

	PORTA = ch;
	PORTC = cl;

	blocks = pix/16;
	for (int i=0; i<blocks; i++)
	{
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);
	}
	if ((pix % 16) != 0)
		for (int i=0; i<(pix % 16)+1; i++)
		{
			pulse_low(P_WR, B_WR);
		}

}

void UTFT::_fast_fill_8(int ch, long pix)
{
	long blocks;


	PORTA = ch;


	blocks = pix/16;
	for (int i=0; i<blocks; i++)
	{
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
	}
	if ((pix % 16) != 0)
		for (int i=0; i<(pix % 16)+1; i++)
		{
			pulse_low(P_WR, B_WR);pulse_low(P_WR, B_WR);
		}
}

 

Дисп 8бит - цеплять на портА , 16бит на порты АиС
// порты если желаете использовать можно какие желаете, менять в этом же файле , меняя PORT..  , и помня заменить DDR.. тоже (задается его конфигурация на выход)
вообще можно многие условия ненужные повырезать затачивая под свой камень, пошустрее будет шевелиться либа.
 
slider
Offline
Зарегистрирован: 17.06.2014

 AndreyE, значит гдето чтото еще упустили. На адафруите какой порт переназначали и где что меняли? киньте еще фоток. Т.к. портов полноценных (8ит свободны) много, то имеет смысл использовать весь порт целиком - это будет побыстрее вывод графики , чем в оригинальной либе адафруит. 

кликабельно:

(переходника с DTR под руку не попался, взял дешманский и вывел.  кондер для дифференцирующий лишний ибо на плате уже предусмотрел его) . Самое полезное в атмега128 для меня оказалось что она может работать на 3.3в на тех же 16МГц - очень удобно подключать напрямую шилды TFT LCD требующие согласование уровней  3.3-5в. Для этого поставил стаб ams1117-3.3 и предусмотрел переключение питания. надо еще на на разъем для "программатора" поставить на rx tx резисторы ом эдак на 220, чтоб 5в уровни от ch340 гасились, если atmega128 запитана от 3.3в. 

  

  

 

если что , фотки в получше качеством https://yadi.sk/d/w6sKbpsF3JLuUV

фотка с диспом на utft comment-270054

slider
Offline
Зарегистрирован: 17.06.2014

// (будет время, проверю ваш код для подобного шилда 8бит)

Добивайте все-же адафрут либу и подключение. а по UTFT в инете она везде расписана. к примеру первое попавшееся из яндекса https://geektimes.ru/post/258166/

и даж далеко ходить не надо,  в папке documents в этой либе лежат описания ее. 

и в ее примерах описано UTFT myGLCD(ITDB50,38,39,40,41);  - пины шины управления вы задаете сами куда пожелаете подключить.

// Arduino Uno / 2009:
// -------------------
// Standard Arduino Uno/2009 shield            : <display model>,A5,A4,A3,A2
// DisplayModule Arduino Uno TFT shield        : <display model>,A5,A4,A3,A2
//
// Arduino Mega:
// -------------------
// Standard Arduino Mega/Due shield            : <display model>,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Mega      : <display model>,38,39,40,41
//
// Remember to change the model parameter to suit your display module!

//           model RS  WR  CS  RST
//UTFT myGLCD(31,  38, 39, 40, 41);  
//UTFT myGLCD(31,  A5, A4, A3, A2); 

на оставшийся RD  подаете лог.1 , или с таким шилдом +5v (Vсс ) или +3.3в 

// код при размещении можно свернуть , на второй вкладке есть для этого галка. Сообщения свои можно подредактировать.

//// увы из вашего фото не видно правильно ли вы подключили. хрустальным шаром не владею. При подключении можно легко спутать пины самой микросхемы и пины ардуиновские . перепроверьте. 

 

 

AndreyE
Offline
Зарегистрирован: 02.05.2017

Всем спасибо за поддержку. Решил проблему подключения радикальным способом.:)))

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Мда.. правда  бывало и похуже :))

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Пасибки. Пришли 4шт, тоже хотел один раскурочить - посмотреть "что там внутрях" .. избавили от потери целого дисплея :)

U1 скорее всего стабилизатор напруги и его можно выпаять для каких-нить иных задачек..

alex_r61
Offline
Зарегистрирован: 20.06.2012

DetSimen пишет:

Псих?

Лишнее подтверждение, что зто занятие не для слабонервных. :)

AndreyE
Offline
Зарегистрирован: 02.05.2017

Arhat109-2,

Да, за дисплеем небыло никакого чипа. Пытаться посмотреть модель чипа за дисплеем для подбора соответствующей библиотеки, похоже, далеко не всегда помогает. Из этого аццкава дисплея с дурной кармой выпаивать ничего не буду...:))))) Заказал 2,8 со SPI. 

hrum4ik
Offline
Зарегистрирован: 30.07.2017

Всем привет. Хочу поделится тем что у меня получилось  с 128й атмегой.

Вот такую платку нарисовал на данный момент. 

Разводилась плата с учетом стандартных lcd шилдов для ардуино. Задача была - запустить графику. 

Запустил 2.4tft_8bit (uno) ili9325,  3.5tft_8bit (uno) ili9327, 3.9tft_8bit (uno)  ili9488, 3.0tft_16bit (mega)  hx8357, 3.2tft_16bit (mega)  ili9481, 4.3tft_16bit(через переходник меговский) ssd1963.

Использовал библиотеки Adafruit, UTFT  и  MCUFRIEND_kbv.  Остановился на последней. Она пошустрее будет)))

  

Библитотека само собой ковырялась. Все делалось по аналогии с 2560 атмегой.

По поводу прошивки загрузчика. Шил обычным китайским usb asp програматаром, причем первая прошивка без кварца. Все прошивки загрузчиков производил из среды ардуино.

и последняя фотка - сравнение двух плат  128й атмеги(зеленая - первая проба нанесения маски) с китайской mega2560.

 

Силно не пинайте))). Спасибо за внимание))

 

 

 

 

slider
Offline
Зарегистрирован: 17.06.2014

no bad ))))

круто, раз так основательно делали и много стабов и рассыпухи, то можно было и CH340 запихнуть. 

скорость от много зависит, хотя наверно сами уже разобрались. подикась для адафруитской распиновки 89 234567 подвели цельный порт , чтоб шилд подключался к 01234567 .

Увеличение скорости вывода графики для TFT LCD шилдов дисплеев ардуино :

1. на 320x240 само собой будет в 2 раза быстрее разрисовать весь экран чем 480x320.

2. 16бит немного побыстрее будет чем 8бит, особенно для определенных типов контроллеров.

3. выводить на цельный порт (особо как в UTFT шилдах), а не как в УНОвских шилдах для УНО(2 разных порта) иль того хуже Меги(3 разных порта). Хотя при разводке на меге128 можно было резвести цельный порт, и в либе изменить конфиг и вывод на него.

4. убрать в либе все лишние условия и разветвления (к примеру как пиленная UTFT 8bit turbo )

5. вырезать все лишние иниты. В UTFT это в раскоментирование в memorysaver.h . В адафруите в Adafruit_TFTLCD.cpp вырезать все лишние иниты и условия . 

6. использовать диспы у контроллеров которых минимальное количество команд для рисования пикселя. (подсмотреть можно в файлах setxy.h либы UTFT )

7. вырезать из либы лишний CS (ибо при каждой команде он используется дважды ) и замкнуть его на gnd , как в comment-192385.

8. для определенных контроллеров (setxy) , при не больших разрешених диспа =< 400x320 , можно вообще избавиться от половины команд !!!!!!!!  при рисовании каждого* пикселя (пример #comment-93736  )

9. повысить частоту проца

все это более в 2 раза увеличит скорость !