Страница 1 из 3

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 12 фев 2019, 12:42
Grafsaxar
Добрый день знатоки а так же многоуважаемый автор программы.

Много тем создавалось о нехватки ресурсов на вселюбимый камень мега328.
При нехватки приходилось брать несколько мег328 и соединять по уарту или брать всякие микрухи для увеличения ног работающие по И2С. Но пару микрух , часы и дисплей по И2С и начинала мега глючить. приходилось брать могучий:)) мега 2560.
Очень много времени уходит на эксперименты без желаемого результата.
Я думаю многим не помешало бы иметь в штатном камне хотя бы пару Уартов и побольше входов/выходов.
Я лично все проекты делаю с прошивкой по воздуху и передачей по модбасу, а это уже 2 уарта.


В итоге в нашей среде нет контролёра для среднего класса:))

Стоимость 10 шт. мега328 12,5$
Стоимость 10 шт. мега64 10$
Стоимость 10 шт. мега128 9$
Стоимость 10 шт. мега2560 50$

Представте если бы у вас была возможность купить
либо ВАЗ за 10000$ либо Мерс за 50000$ ,в середине ничего:((

Если ошибаюсь поправте.....

Куря как-то буржуйский :)) форум наткнулся на интересный проект имеющий поддержку многих камней . Загрузчики И раскладка пинов прилагаются.



https://github.com/MCUdude/MegaCore

Так вот вопрос к Разработчику и знатокам:
Можно ли осуществить в среде Flprog поддержку этих камней????

Возможно это будет проще чем пилить поддержку STM32.

Готов создать и протестировать плату с поддержкой вышеупомянутых камней.

Давайте сделаем свой контролёр и назовём по своему....

Кто за???????????????????????????????????

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 12 фев 2019, 19:40
seri0shka
Всё создано до нас: Crumbuino
Я купил несколько Atmega128 и доволен, проекты создаю в Flprog ,но приходится в проекте ставить тип контроллера Atmega2560, а после компиляции ручками вносить изменения. Конечно, удобней было бы, если б в программе была поддержка Atmega644 и Atmega128 (а так же Atmega8, это отдельный разговор), тем более добавить их намного проще, чем всё, что делает уважаемый автор.
Grafsaxar писал(а): 12 фев 2019, 12:42Готов создать и протестировать плату с поддержкой вышеупомянутых камней.
Собственно, плата не особо нужна, достаточно голого контроллера, даже без кварца, это один из плюсов MegaCore и MiniCore. Это добавляет ещё 2 пина для Atmega8/168/328, их тоже неплохо было бы иметь возможность задействовать в проекте (для себя решил пользовательскими блоками).
Вобщем, я ЗА, если это что-то решает.

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 12 фев 2019, 20:19
Ingwar
seri0shka писал(а): 12 фев 2019, 19:40а после компиляции ручками вносить изменения.
Зачем лишние движения? Bobuino наше все :smile9:
viewtopic.php?t=3149&start=20
viewtopic.php?f=42&t=3815&p=58324&hilit=bobuino#p58324

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 12 фев 2019, 21:32
seri0shka
Ingwar писал(а): 12 фев 2019, 20:19Зачем лишние движения? Bobuino наше все
Bobuino, она же Atmega644 имеет 44 вывода, в проекте нет ни одной платы под 44-пиновый контроллер, так само как и под 64-пиновый (Atmega128). Так что выводы никак не могут соответствовать. Тем более не совпадают номера выводов I2C, SPI, и прочих. Так что после компиляции из FLprog в ArduinoIDE приходится править руками, и не дай бог где-то пропустить или перепутать.

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 12 фев 2019, 22:39
Ingwar
seri0shka писал(а): 12 фев 2019, 21:32Так что после компиляции из FLprog в ArduinoIDE приходится править руками, и не дай бог где-то пропустить или перепутать.
В проекте выбираю мегу. Пины меги согласно рисункам https://github.com/MCUdude/MightyCore
Компилировал в IDE и как под Bobuino, как и под Standart. Удобно под разную разводку. В корпусах TQFP44 и DIP.
[spoiler]
Безымянный.png
[/spoiler]

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 12 фев 2019, 23:13
seri0shka
Ingwar писал(а): 12 фев 2019, 22:39В проекте выбираю мегу
seri0shka писал(а): 12 фев 2019, 19:40...проекты создаю в Flprog ,но приходится в проекте ставить тип контроллера Atmega2560

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 12 фев 2019, 23:18
Ingwar
Да, но пины то выставляешь в проекте, а не в IDE. Какая разница - смотреть разводку меги или bobuino. Там только с прерываниями повнимательней, но и они указаны на рисунках. Допускаю трудности при использовании готовых скетчей/ПБ заточенных под мегу.

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 12 фев 2019, 23:31
seri0shka
Повторю: не совпадают номера выводов I2C, SPI, и прочих аппаратных интерфейсов, прерывания в том числе. Простейший пример из последних: часы реального времени по I2C отбирают в проекте 2 пина, которые должны управлять семисегментным индикатором, реально же для Atmega128 I2C работает по другим выводам и индикатору не мешают, вот и приходится в проекте вешать индикатор на "левые" пины, а потом вручную править в ИДЕ. Для более сложного проекта будет ещё больше коллизий. Всё можно решить, но речь об удобстве пользования программой.

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 13 фев 2019, 00:28
dekorator
Была тема так и заглохла, наверно не достаточно людей поддержало.

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 13 фев 2019, 10:59
Grafsaxar
seri0shka писал(а): 12 фев 2019, 19:40Я купил несколько Atmega128 и доволен, проекты создаю в Flprog ,но приходится в проекте ставить тип контроллера Atmega2560, а после компиляции ручками вносить изменения.
Это называется что то вроде онанизма. А что если через год надо что то переделать?
seri0shka писал(а): 12 фев 2019, 19:40Собственно, плата не особо нужна, достаточно голого контроллера, даже без кварца, это один из плюсов MegaCore и MiniCore. Это добавляет ещё 2 пина для Atmega8/168/328
Ну да провода сразу будете к процессору припаивать.
Мега 328 работает с внутренним кварцем на 8 мгц.
Из за 2 ног с 16мгц на 8 :(((
seri0shka писал(а): 12 фев 2019, 23:31Повторю: не совпадают номера выводов I2C, SPI, и прочих аппаратных интерфейсов, прерывания в том числе. Простейший пример из последних: часы реального времени по I2C отбирают в проекте 2 пина, которые должны управлять семисегментным индикатором, реально же для Atmega128 I2C работает по другим выводам и индикатору не мешают, вот и приходится в проекте вешать индикатор на "левые" пины, а потом вручную править в ИДЕ
В этом то и проблемма. Надо именно Flprog заточить под эти камни.
Создавать программу в Flprog да потом её ещё править в IDE и думать как то она криво работает задание не очень приятное, и требует не мало времени.
это извращение я пробовал несколько лет назад, когда Flprog была в версии 1.0 .
Даже статью об этом писал.
Не говорю что работать не будет, будет но не всегда.
Зависит от использования железа в камне. В основном таймеров.

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 13 фев 2019, 11:56
Ingwar
seri0shka писал(а): 12 фев 2019, 23:31Повторю: не совпадают номера выводов I2C, SPI, и прочих аппаратных интерфейсов, прерывания в том числе.
seri0shka писал(а): 12 фев 2019, 23:31для Atmega128 I2C работает по другим выводам
Мы наверно говорим про разные камни... Bobuino это ATmega8535/16/32/164/324/644/1284

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 13 фев 2019, 15:23
Grafsaxar
seri0shka писал(а): 12 фев 2019, 21:32в проекте нет ни одной платы под 44-пиновый контроллер, так само как и под 64-пиновый (Atmega128)
Ребята это разные камни.

Мега 1284 и мега 128 разные камни.

Мега1284 немного отличается от меги328

Мега1284:
• Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes
– Two 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture
Mode
– Real Time Counter with Separate Oscillator
– Six PWM Channels
– 8-channel, 10-bit ADC
Differential mode with selectable gain at 1x, 10x or 200x

Мега328
Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
– One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture
Mode
– Real Time Counter with Separate Oscillator
– Six PWM Channels
– 8-channel 10-bit ADC in TQFP and QFN/MLF package
Temperature Measurement
– 6-channel 10-bit ADC in PDIP Package

А вот мега128:
Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
– Four 16-bit Timer/Counter with Separate Prescaler, Compare- and Capture Mode
– Real Time Counter with Separate Oscillator
– Four 8-bit PWM Channels
– Six/Twelve PWM Channels with Programmable Resolution from 2 to 16 Bits
(ATmega1281/2561, ATmega640/1280/2560)
– Output Compare Modulator
– 8/16-channel, 10-bit ADC (ATmega1281/2561, ATmega640/1280/2560)
– Two/Four Programmable Serial USART (ATmega1281/2561, ATmega640/1280/2560)
– Master/Slave SPI Serial Interface

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 13 фев 2019, 20:45
seri0shka
Ingwar писал(а): 13 фев 2019, 11:56Мы наверно говорим про разные камни... Bobuino это ATmega8535/16/32/164/324/644/1284
Мы говорим о "поддержке камней Atmega64, Atmega128 и других..."
Но если Вам так понятнее, пусть будет Bobuino: пины I²C - 22,23, а для доступной в ФЛпрог ATmega2560 пины I²C - 20,21. Уже нестыковка. И так далее.
Grafsaxar писал(а): 13 фев 2019, 10:59Из за 2 ног с 16мгц на 8
Это одна из наименьших проблем. Если мне не нужно сверхбыстродействие, я вообще ставлю 1мгц.
Grafsaxar писал(а): 13 фев 2019, 10:59А что если через год надо что то переделать?
Если проект не сохранил, то через год будет проблематично переделать даже поддерживаемые платы. Если проект есть, то в проекте можно и нужно писать комментарии о том, что надо изменить руками в скетче. В любом случае, очень рекомендую все проекты хранить ещё и в виде скетчей, и с комментариями в тексте. Через год вы можете не вспомнить, в какой версии ФЛпрог делался проект, а открыть его в другой версии зачастую невозможно. Особенно с чужими проектами.

Отправлено спустя 3 минуты 25 секунд:
Хотя повторюсь: я двумя руками за поддержку дополнительных контроллеров!

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 13 фев 2019, 21:34
Ingwar
seri0shka писал(а): 13 фев 2019, 20:45Но если Вам так понятнее, пусть будет Bobuino: пины I²C - 22,23, а для доступной в ФЛпрог ATmega2560 пины I²C - 20,21. Уже нестыковка.
Если не секрет, из за каких блоков используемых в Flprog Вам приходится заморачиватся с корректировкой SDA SDL в IDE ? Сам использовал блоки Oled дисплеев на SSD и SH а так же MCP23017. Использовал IN0,1,2. Ничего не правил в IDE. При разводке платы смотришь на какой ноге нужный тебе функционал и все.

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 13 фев 2019, 23:41
seri0shka
Правил не из-за блоков, а из-за несоответствия контроллера в проекте (2560) и в реальности (128). Я в проекте не мог использовать по своему назначению выводы, которые "якобы" были заняты часами реального времени.

Отправлено спустя 5 минут 35 секунд:
Вот кусочек проекта.
[spoiler]
2222.png
[/spoiler]

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 14 фев 2019, 06:06
kulibinsvv
Ingwar писал(а): 13 фев 2019, 21:34из за каких блоков используемых в Flprog Вам приходится заморачиватся
"Заморачиваться" приходится, в первую очередь, с аналоговыми выходами (ШИМ). У каждого типа микроконтроллеров они находятся на разных портах (у Ардуино - логических выводах).
Надо отметить, что проблему представляет не физическая привязка функций микроконтроллера к его ногам, сколько логическое разбиение на порты. Поскольку в С/С++ приходится оперировать символическими именами портов, а не номерами выводов микросхемы.
Тот же TWI (I2C): у одних микроконтроллеров семейства AVR привязан к порту D, у других - к С, у третьих - к В. Дак ещё и у одного порта могут быть использованы разные разряды. Про другие семейства микроконтроллеров (не AVR) и говорить не чего.
Из-за этого и не удаётся создать единую систему логической нумерации выводов для всех микроконтроллеров.

Отправлено спустя 14 минут 38 секунд:
Для проекта Bobuino в FLProg однозначно надо выбирать Mega2560. Ни каких замарок с использованием штатных блоков не возникает. Единственный неприятный момент это выводы ШИМ, которые надо отслеживать самостоятельно и править ручками в Arduino IDE.

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 14 фев 2019, 12:09
Grafsaxar
seri0shka писал(а): 13 фев 2019, 20:45Grafsaxar писал(а): ↑Вчера{, 07:59}
Из за 2 ног с 16мгц на 8
Это одна из наименьших проблем. Если мне не нужно сверхбыстродействие, я вообще ставлю 1мгц.
Возможно для управления простой логики.......Вполне.
А вот для вещей посерьёзнее туговато.

Осебенно с выводом информации да дисплей и отслеживании короткого импульса.

Нашёл и заказал интересную платку.......
https://ru.aliexpress.com/item/ATMEL-AT ... 33edELfnen

Вот жду с нетерпением.....

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

Вот возмёт и заточит Flprog уже на 2 неделе вахты под ATmega128.

Отправлено спустя 1 минуту 48 секунд:
dekorator писал(а): 13 фев 2019, 00:28Была тема так и заглохла, наверно не достаточно людей поддержало.
Проспал видать я её:)))

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 23 фев 2019, 23:42
gafner2289
Попробуйте подкорректировал библиотеку выводов MegaCore. Пока не проверял.
arduino-mega.rar

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 24 фев 2019, 00:06
seri0shka
gafner2289 писал(а): 23 фев 2019, 23:42подкорректировал библиотеку выводов MegaCore
С какой целью? Вроде в старой нормально было?

Поддержка камней Atmega64, Atmega128 и других...........

Добавлено: 24 фев 2019, 12:58
gafner2289
чтобы пины попадали с Flprog atmega2560
[spoiler]
ПИН MEGA.jpg
[/spoiler]

Отправлено спустя 2 часа 56 минут 45 секунд:
Не могу понять с Atmega128 не компилируется, а Atmega1281 все окей.
[spoiler]unsigned long _SCT2 = 0UL;
unsigned long _SCT2IC = 0UL;
int _sCHCV = 0;
void setup()
{
pinMode(2, INPUT);
TCCR2A = (1<<WGM21);
TCCR2B = (1<<CS21);
OCR2A = 199;
TIMSK2 = (1<<OCIE2A);
sei ();
attachInterrupt(0, _SCT2coutFunction, FALLING);
}
void loop()
{

//Плата:1
analogWrite(12, _SCT2);

}
void _SCT2coutFunction()
{ _SCT2IC++;
}
ISR (TIMER2_COMPA_vect)
{if(_sCHCV==10000) {_sCHCV = 0;_SCT2 = _SCT2IC;
_SCT2IC = 0;
} else {_sCHCV++;}}[/spoiler]