http://freeduino.ru/arduino/spec.html
У меня как раз 168PA. Как бы проверить, сколько на самом деле?
Так и осталось.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 сек к примеру) и микросхема накрылась?
Код: Выделить всё
ldi tmp,0b00000100 ;0b00000100 ;0.125мкс*256=32мкс
out tccr0,tmp
ldi tmp,(1<<toie0)|(1<<ocie2)
out timsk,tmp ;Enable Timer/Counter0, timer2
ldi tmp,(1<<wgm21)|(1<<CS22)|(1<<CS21)|(1<<CS20) ;/1024
out TCCR2,tmp
ldi tmp,32
out ocr2,tmp
sei
Код: Выделить всё
ldi tmp,0b00000100 ;0b00000100 ;0.125мкс*256=32мкс
out tccr0,tmp
ldi tmp,(1<<toie0)|(1<<ocie2)
out timsk,tmp ;Enable Timer/Counter0, timer2
ldi tmp,(1<<wgm21)|(1<<CS22)|(1<<CS21)|(0<<CS20) ;110/256
out TCCR2,tmp
ldi tmp,128;128*256=32768
out ocr2,tmp
ldi tmp,(1<<as2)
out assr,tmp