Спасибо за помощь, doublekey, xemul!
Цитата(xemul @ Dec 21 2012, 17:41)

CODE(page) и RAM(bank) в пиках непосредственно никак не пересекаются. Под программу у Вас используется только 23% наличной памяти.
В программе действительно нужны (89-23)=(64+1) байтов под глобальные переменные? (+1 - это как раз тот байт, под который не хватает памяти в bank0 _этого_ контроллера)
С глобальными переменными у компиляторов под пики проблемы - они размещаются только в bank0.
В программе есть буфер на прием и буфер на передачу по usart, с ними работаю из прерываний, а программа разбирает этот массив в бесконечном цикле, к сожалению пакет данных длинный, поэтому столько места в памяти выделил под глобальные переменные, остальные глобальные переменные (16) - флаги состояния, но сейчас подумал что лучше сделаю через битовые поля их, тогда это будет всего два байта
Цитата(doublekey @ Dec 21 2012, 19:02)

xemul, не соглашусь с вами, в моём примере переменные как раз глобальные и размещаются в банках 1 и 2, кусок из работающего кода.
а то что память данных разделена на банки, это связано с особенностями архитектуры процессора? какая для компилятора разница, bank1 это или bank2?
Сообщение отредактировал Mikron - Dec 21 2012, 23:20