Форум myROBOT.ru » Лаборатория » Микроконтроллеры » совместимость МЕГи 8 и МЕГи 168

Страниц (1): [1]
 

1. Predator - 16 Марта, 2013 - 21:33:49 - перейти к сообщению
пришла и мне пора освоить (ну точнее слегка зацепить) AVRы.
подскажите новичку: насколько совместимы следующие контроллеры:
ATmega8, ATmega168, ATmega328.
главным образом можно-ли напрямик залить "прошивку" от ATmega8 в другие.
2. Dimka_18rus - 16 Марта, 2013 - 21:52:53 - перейти к сообщению
необходимо пересмотреть адреса регистров ввода вывода, которые используются в программе. Если они совпадают, есть шанс, что программа заработает.
3. Predator - 16 Марта, 2013 - 22:11:48 - перейти к сообщению
новая вводная: есть проект (чужой), нужно его повторить сейчас (разбираться и делать свой некогда), и "наворотить" со временем. Так вот для наворотов в 8 Меге места не осталось и есть желание заложить контроллер "пошире", но прямо так в лоб не пускает полное отсутствие исходников готовой прошивки.
4. mihail - 17 Марта, 2013 - 02:23:42 - перейти к сообщению
ATmega168 и ATmega328 отличаются размером FLASH, SRAM и EEPROM. У ATmega328 этого всего больше. А вообще, на ATmega48, ATmega88, ATmega168 и ATmega328 даже datasheet один. Программа на ассемблере или си полностью переносима с меньшего на больший. В AVR Studio нужно только используемый МК указать и все.

Назначение ножек всех ранее перечисленные МК совпадают с ATmega8. Но ATmega8 немного проще. У него нет того, что есть у ATmega168 и ATmega328. А у ATmega168 и ATmega328 есть все, что есть в ATmega8.

Прошивку для ATmega8 в ATmega168 я не загружал. Но адреса регистров у этих МК сильно различаются. Это относится и к "одинаковой" периферии. В теории, работать не должно. Еще fuse bits у ATmega8 и ATmega48/88/168/328 разные.

(Добавление)

По регистрам у ATmega8 много общего с ATmega16 и ATmega32. Если пытаться загрузить прошивку ATmega8, то в какой нибудь из этих. Но корпуса и функции конкретных ножек у ATmega8 и ATmega16/32 сильно разные.
5. Predator - 17 Марта, 2013 - 15:14:25 - перейти к сообщению
mihail, благодарю за разьяснения. Я хотел взять именно Pin-to-Pin совместимый с ATmega8 коноторллер, стало-быть ATmega168 или ATmega328, функции пинов ATmega8 полностью поддерживаются ATmega168 и ATmega328, датащит на ATmega48, ATmega88, ATmega168 и ATmega328 я мельком просмотрел и осознал, что они совместимы полносстью, но вот автор оригинального устройства, супостат, не захотел мне облегчить жизнь и сделал под ATmega8. Если адреса регистров различаются, то даже и пытаться нечего.
В общем резюме: делать на оригинальном ATmega8, а когда будут готовы "навороты" менять.
6. cjA - 17 Марта, 2013 - 16:59:15 - перейти к сообщению
есть мнение что они различаются не по _адресам_ , а по _названиям_. Это легко проверить. мега8 и мега88- полностью идентичны (кроме частоты и потребления тока), хотя это разные по конструкции МК. И появилось также мнение что ничего с таким заделом (отсутствием исходника) ничего не получится, хотя AvrStudio может дизассемблировать код, Зная назначение портов... вот уже пол программы, осталось токмо таймеры подключить Ухмылка
Прошивайте на мегу88 или выше, но как без исходников?
7. mihail - 17 Марта, 2013 - 20:28:50 - перейти к сообщению
cjA, Вам должно быть стыдно. Посмотрите раздел Register Summary в datasheet ATmega8 и ATmega168. Если это Вас не убедит, то

Фрагмент m8def.inc
.equ	PORTB	= 0x18
.equ DDRB = 0x17
.equ PINB = 0x16
.equ PORTC = 0x15
.equ DDRC = 0x14
.equ PINC = 0x13
.equ PORTD = 0x12
.equ DDRD = 0x11
.equ PIND = 0x10


Фрагмент m168def.inc
.equ	PORTD	= 0x0b
.equ DDRD = 0x0a
.equ PIND = 0x09
.equ PORTC = 0x08
.equ DDRC = 0x07
.equ PINC = 0x06
.equ PORTB = 0x05
.equ DDRB = 0x04
.equ PINB = 0x03


Можно прошивку дизассембировать и посмотреть как это все работает в симуляторе. AVR Studio это умеет. Но все зависит от размера и сложности программы.

Predator
Если ничего секретного в прошивке нет, можете прислать её мне. Могу попробовать, но без гарантий. Вечер у меня свободный Улыбка Планировал развлечься математикой на ассемблере, но дизассемблирование тоже ничего Улыбка
8. cjA - 17 Марта, 2013 - 20:44:41 - перейти к сообщению
cjA пишет:
Это легко проверить. мега8 и мега88- полностью идентичны

Где же мне стыдно должно быть? Это разве не так? Дальше уже у них не влезает 16ти адресная модель памяти в 8битную модель карты прерываний. Вот тут я не знаю. Но! если 48 и 88 просто 8 - одно и тоже. То чем отличается 168 и328? А впрочем что я спорю, кибербог на моей стороне. equ "PORT"тут не уместно ( номер восьмибитного первого счетчика какой?, а имя?, а в мега8?, а в мега88?, а у мега168?- одинаковые у них адреса векторов, даже проверять не буду)
(Добавление)
(
mihail пишет:
Планировал развлечься математико)
- Predator, ковыряться в чужих мазгах, особенно если это мазги программисто... Вы попробуйте сами. Прикольнее чем судоку на гексогональном поле Улыбка
(Добавление)
хм, толи я устал, толи и в правду так, от мега8 в мегу88 перешел только segreg. остальные регистры все перепутаны. Извиняюсь Смущение , рещается дефайнами. Подшучивать, дразнить
9. Predator - 17 Марта, 2013 - 22:19:20 - перейти к сообщению
mihail благодарю за предложение, но не стоит оно того (мне перепаять контроллер попозже проще, чем вам дизассемблировать и там дебажить). А мне потом всё равно практически с 0 всё сочинять.
P.S. проект не секретный- часы с радиокота.
10. mihail - 17 Марта, 2013 - 22:27:06 - перейти к сообщению
ОК. Если что, обращайтесь. Чем смогу помогу Улыбка
11. cjA - 17 Марта, 2013 - 23:13:42 - перейти к сообщению
Predator, выкладывай, посмотрим. (юсб чтоли, откуда >8Kb на часах? ) (но это наверное уже в болталочку Улыбка) )
12. cjA - 21 Марта, 2013 - 02:50:28 - перейти к сообщению
Вот тут часы, для 8 и 88.
http://radiokot.ru/forum/viewtop...8131d9c1dec38576
Код для обоих- одинаковый, различаются в размере хекса ... процентов 0.5. Только проекты разные. Нет, действительно был уверен что это почти одинаковые камни. Замешательство
13. Роботов - 21 Марта, 2013 - 08:01:03 - перейти к сообщению
cjA пишет:
Нет, действительно был уверен что это почти одинаковые камни

Век живи, век учись...