реклама на сайте
подробности

 
 
> xdata и Keil 3.3
Metallist64
сообщение Jan 16 2009, 08:00
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Уважаемые специалисты помогите в следующем:
при объявлении массива
unsigned char xdata DATA_BUFFER[7] ;

никак не могу изменить значения в этом массиве.
Он записывает код для отображения цифры в порт,
Фигня в том, что при объявлении в idata все пучком!
Такое ощущение будто нельзя записать в xdata.
Помогите, кто сталкивался !!!!
PS controller ADuC 848.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Metallist64
сообщение Jan 17 2009, 22:07
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Недолго я радовался. Возникла следующая проблема.
При работе с xdata в прерываниях возникают постоянные траблы.
Конструкции вида :
Код
void timer0 (void) interrupt 1        
{
    if(count_10_hz++ == 100)
    {
        count_10_hz = 0;                
        count_for_increment++;
    }
    return;
}

толи вешают МК толи, что. Но на индикаторе содержимое count_for_increment постоянно останавливается на разных значениях в рависимости от count_10_hz.
Процессор 848 AduC. Причем ступор полный.
Может кто сталкивался с этим??? От чего может зависеть такое поведение???

ПС У товарища стоит тот же Keil 3.30 Он работает с хdata не устанавливая XRAMEN EQU 1 смотрел
сам. Стоит XRAMEN EQU 0. и все работает.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 19 2009, 06:29
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Metallist64 @ Jan 18 2009, 01:07) *
От чего может зависеть такое поведение???
Конечно, причин тому может быть много, но, первое что приходит в голову: отсутствует спецификатор volatile у переменной count_for_increment.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Jan 19 2009, 06:53
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(Палыч @ Jan 19 2009, 09:29) *
Конечно, причин тому может быть много, но, первое что приходит в голову: отсутствует спецификатор volatile у переменной count_for_increment.

и count_10_hz также.
Нет ли еще прерываний более высокого приоритеота, чем таймер 0, где используется count_10_hz?
Чем черт не шутит, попробуйте count_10_hz++ вынести из if.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01375 секунд с 7
ELECTRONIX ©2004-2016