|
|
  |
есть вопрос, может кто с таким сталкивался |
|
|
|
Aug 4 2011, 08:34
|
Группа: Новичок
Сообщений: 6
Регистрация: 24-11-10
Пользователь №: 61 136

|
Есть код, но причина в его куске, причина следующая, прогоняю его в симуляторе avrstudio 4, отдельно написал програмку тестить только его, слетает на 0 и в основной и в тестовой, только в тестовой проходов больше.
i=list_left_x; nline0=0; while(i<(list_left_x+80)) { tmp&=nlineb; wr_to_tmp(tmp,0x02,i>>1); nlineb>>=1; if(nlineb==0) { nlineb=0x80; nline0++; tmp=fonts_8x8[(list_left[nline0]<<3)+nline1]; } i++; }
код писался под iar, но аналогичный есть и под gcc, fonts_8x8 и list_left во флеше, функция только формирует буфер после 2-3х проходов симулятор делает сброс, память проверял, стек тоже, переполнения нет, вдт включен но сбрасывается как надо, пробовал и отключать, прерывание только по таймеру. если кто сталкивался с таким помогите)
|
|
|
|
|
Aug 4 2011, 09:42
|
Группа: Новичок
Сообщений: 6
Регистрация: 24-11-10
Пользователь №: 61 136

|
специально расписал) только 2 прерывания, других нет и по битам нет, и написал, что пробовал запрещать, тоже самое еще одно, если ставить оптимизацию, то проходов больше, вот что не понятно
|
|
|
|
|
Aug 4 2011, 09:51
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Berny @ Aug 4 2011, 12:34)  вдт включен но сбрасывается как надо Цитата(Berny @ Aug 4 2011, 13:42)  если ставить оптимизацию, то проходов больше запретите WDT или добавьте его сброс перед while(i<(list_left_x+80)) {...} или лампочкой на него помигайте или измерьте время выполнения while(i<(list_left_x+80)) {...} или ... ЗЫЖ в следующий раз, когда будете расписывать, постарайтесь придумать осмысленное название темы и научиться пользоваться тэгами code /code.
|
|
|
|
|
Aug 4 2011, 09:57
|
Группа: Новичок
Сообщений: 6
Регистрация: 24-11-10
Пользователь №: 61 136

|
проще asm("cli"); повторяю пробовал, дизасемблером слетает на call'е, я 10 лет контроллеры програмлю, что я такие вещи не знаю а вот с симулятором в данном случае проблема возникла, тут не в прерываниях дело
|
|
|
|
|
Aug 4 2011, 10:54
|
Группа: Новичок
Сообщений: 6
Регистрация: 24-11-10
Пользователь №: 61 136

|
еще хуже упростил до безумия Код int main(void) { unsigned int i=0; unsigned char tmp=0; asm("cli") while(1) { i=0; while(i<640) { tmp=pgm_read_byte(%fonts_8x8[0]); i++; } } } слетает после 9го прохода тема закрыта, так и не понял из-за чего, но после перезагрузке компа норм проходит
Сообщение отредактировал Berny - Aug 4 2011, 10:12
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|