Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: перезапись переменных dsPIC30F
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
pipka
Здравствуйте. Микроконтроллер принимает данные через UART в кольцевой буфер, буфер представляет собой массив из 128 значений. Проблема заключается в том, что иногда значения из приемного буфера присваются к совершенно другим уже инициализированнвм переменным, то есть происходит их перезапись. Программа разбита на несколько файлов, переменные глобальные. Компилятор MPLAB C30. Может кто сталкивался, помогите разобраться в чем дело.
gena_p1
если играть в угадайку, то косяк в программе.
конец буфера не отловлен и продолжается запись в ОЗУ на переменные идущие следом.
попробуйте посмотреть при пошаговой трассировке состояние памяти.
Хотя, если переменные после буфера, то и так все понятно.
pipka
Поясните, если не сложно, что значит отловить конец буфера. У меня при приеме байта инкрементируется указатель на элемент массива, после превышения количества элементов массива, указатель обнуляется и запись начинается с нулевого элемента.
gena_p1
указатель на адрес в ОЗУ, я так понимаю, а не индекс элемента массива? тогда его не обнулять надо, а присваивать ему первоначальное значение, которое заранее запомнить еще до приема нулевого элемента.
pipka
У меня приемный буфер организован так:

CODE
receive_buffer[RX_byte_write_count++]=U1RXREG;
RX_byte_write_count&=Buf_Mask;


где Buf_Mask=128-1=127.

Danis
Цитата(pipka @ Jul 21 2011, 10:41) *
Проблема заключается в том, что иногда значения из приемного буфера присваются к совершенно другим уже инициализированнвм переменным, то есть происходит их перезапись.


Привет, dsPIC30F тут совершенно не причем. Проблема в Вашем софте, скорее всего неправильно организованна кольцевая очередь. Тут нужно поститься в раздел программирование, будет больше просмотров и желающих помочь. Можете мне в личку написать, скину Вам рабочий код.
pipka
Написал в личку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.