Отговори на тема  [ 22 мнения ]  Отиди на страница Предишна  1, 2
XC8 достъп до статична променлива 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: XC8 достъп до статична променлива
Е, покажи и малко изпълним код - който присвоява и който чете.


Чет Май 19, 2016 3:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Re: XC8 достъп до статична променлива
Ето, Стефчо:
main.c
Код:
extern unsigned int UARTIncomeBuffer[UARTBufferSize];

void main(void) {
    UART_init(BAUDRATE);
    UARTIncomeBufferClear();
while(1)
    {
        if(strstr(UARTIncomeBuffer,searchedText))
        {
            funcCall();
        }
    }


UART.c
Код:
volatile unsigned int UARTIncomeBuffer[UARTBufferSize];
void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt()
{
        if(UARTIncomeBufferPointer<UARTBufferSize)
        {
            UARTIncomeBuffer[UARTIncomeBufferPointer]=U1RXREG;
            UARTIncomeBufferPointer++;
        }
        IFS0bits.U1RXIF=0;
}

Данните за буфера се получават точно и прекъсването пълни, ОБАЧЕ като погледна променливата (буфера) в дебъгера е празна! Даже не ми дава \0 вътре...
Благодаря!

ПП: Извинявам се! Това го компилирам с XC16! Все пак не вярвам да има разлика...

_________________
www.elkran.com


Чет Май 19, 2016 4:28 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение Re: XC8 достъп до статична променлива
Код:
extern volatile unsigned int incomeBuffer[BufferSize];
?


Чет Май 19, 2016 4:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: XC8 достъп до статична променлива
tolstolob написа:
?


+1, декларацията и дефиницията са на различни неща ;-)


Чет Май 19, 2016 5:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Re: XC8 достъп до статична променлива
Боже! Искам да гръмна някого! Всичко е наред! Просто, когато даден масив е от тип int, MPlab X не показва цялото му съдържание, когато кликнеш на отметката. Когато е char, всичко е 6!
Това е уникално тъпо!

_________________
www.elkran.com


Чет Май 19, 2016 5:35 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: XC8 достъп до статична променлива
когато се прави декларация на нещо в хедър само се добавя "еxtern" и всичко останало трябва да е 1:1 с дефиниция изключая само инициализаиция и евентуално някои компилаторно зависими атрибути.

В случая ти имаш дефиниция на volatile променлива, а експорта ти не е на volatile променлива... Не познавам изобщо конкретния компилатор и дебъгер, обаче поне единия от двата с основания може да смята че двете променливи са различни неща ;-)


Чет Май 19, 2016 5:45 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Re: XC8 достъп до статична променлива
Един въпрос! Имам хедър, в който съм си дефинирам някакви променливи! Когато опитам да include-на този хедър на няколко места, ми дава multiple definition. Опитах да преодолея това с #ifndef, но не става. Трябва да сложа променливата в .c! Трябва ли да си сложа в .h extern на променливата, която е в .c или трябва това да е във файла, където ще се използва?! Говорим за самия стил на писане!

ПП: Миро, това беше полезно уточнение!

_________________
www.elkran.com


Чет Май 19, 2016 6:23 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 22 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни