Кстати, в ДШ тоже непонятная фигня с адресами SRAM:
Кстати, в ДШ тоже непонятная фигня с адресами SRAM:
Это у вас в симуляторе код закончился на 8-й команде. Чтобы такого не было, зацикливайте программу в конце командойbarok22 писал(а):AVR Simulator: Invalid opcode 0xffff at address 0x000008
Код: Выделить всё
rjmp PCНайти даташит без опечатокbarok22 писал(а):Как узнать, сколько же памяти в моей 168PA?
Да. В посл. ДШ исправлено.Engineer_Keen писал(а):Найти даташит без опечаток
Так и осталось.barok22 писал(а):память программ - 16 К (2 К заняты загрузчиком), ОЗУ - 1 Кбайт, EEPROM - 512 байт.
Это флэш память, она стирается постранично и у неё ресурс ограничен на уровне 10000 записей, у EEPROM побольше — 100000 стираний. А ОЗУ вообще можно перезаписывать побайтно бесконечно. Учите матчасть, как грится.barok22 писал(а):а 16к памяти это память с медленным доступом?
И добавьте к этому тот факт, что эти "памяти" находятся отдельно друг от друга, на разных шинах адреса.Gudd-Head писал(а):у МК 3 (ТРИ!!!) вида памяти:
— память программ (флэш) 16 к
— память данных (РОН, РОВ и SRAM (в которой стек)) — 1280 байт
— ЭСППЗУ — 1 килобайт.
Это возможно в архитектурах, где память программ и данных общая (тынц).barok22 писал(а):В книжках пишут, что стек может затереть программы
А вот попортить значение переменной стек может (и наоборот). Если граница стека пересечет границу, где располагаются переменные и массивы, то возможно 2 варианта:Kavka писал(а):Это возможно в архитектурах, где память программ и данных общая (тынц).
Это не пример. Запись в память программ может делать либо программатор при прошивке, либо сама программа (инструкцией SPM, как это делает например бутлодырь), но это сложная процедура с массой ограничений.barok22 писал(а):Значит не может случиться так, что программа сама изменяет данные во флеш памяти(та что большая, 16к), и может превысить лимит на перезапись в 10 000раз? Например:
.CSEG
const: .DW 2
Перезаписал значение 10 000раз, (за 1 сек к примеру) и микросхема накрылась?