AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
01.04.2015, 18:56
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Выдать структуры в usart и получить на приемнике
Сообщение от TechMike
|
отладчика для avr у меня нет в наличии.
|
У меня тоже никогда его не было, и ничего. Симулятор Студии за долги никто же не отбирал?
Когда я написал
Сообщение от TechMike
|
Уверен, всё будет работать как надо.
|
текст вашей проги уже был прогнан в симуляторе Студии. Скрины выкладывать или поверите на слово?
.
У меня в мапе RX_PACKAGE2 в наличии.
Код:
|
*(COMMON)
COMMON 0x00800186 0xce test.o
0x00800186 t
0x0080018a Ress
0x0080018e buf_test
0x00800195 freq
0x00800197 gg
0x0080019b i
0x0080019c buff2
0x0080021c stroka
0x0080024c nnn
0x0080024d RX_PACKAGE2
0x00800254 PROVIDE (__bss_end, .)
0x000007b4 __data_load_start = LOADADDR (.data)
0x000008d6 __data_load_end = (__data_load_start + SIZEOF (.data)) |
.
Попробуйте создать проект заново.
Последний раз редактировалось STM32F0; 01.04.2015 в 19:10.
|
|
|
|
01.04.2015, 19:48
|
|
Вид на жительство
Регистрация: 02.11.2008
Сообщений: 319
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Выдать структуры в usart и получить на приемнике
Сообщение от STM32F0
|
У меня тоже никогда его не было, и ничего. Симулятор Студии за долги никто же не отбирал?
Когда я написал
текст вашей проги уже был прогнан в симуляторе Студии. Скрины выкладывать или поверите на слово?
Попробуйте создать проект заново.
|
Убрал вывод отладки и отработало как полагается.
В чем могла быть причина такой ситуации?
Судя по отладке переменные лежат в памяти со следующих адресов:
RX_PACKAGE2 0x0444
stroka 0x0440
buf_test 0x044B
теоретически одна их функций могла вылезти за пределы stroka и подпортить данные?
|
|
|
|
01.04.2015, 19:51
|
|
Вид на жительство
Регистрация: 02.11.2008
Сообщений: 319
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Выдать структуры в usart и получить на приемнике
Вот функции отвечающие за отладку
Код:
|
//функция выдает в порт RS232 один символ
void USART_Send(unsigned char Txt )
{
while (!(UCSRA&(1‹‹UDRE))){};
UDR=Txt; //send number to USART
}
//функция выдает в порт RS232 строку из сомволов
void USART_Send_srt(char *pTxT)
{
//unsigned char i=0;
while( 1 )
{
if (! (*pTxT) )
{
//USART_Send(10);
//USART_Send(13);
break;
}
USART_Send((int)(*pTxT));
++pTxT;
}
}
} |
|
|
|
|
01.04.2015, 20:29
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Выдать структуры в usart и получить на приемнике
Сообщение от TechMike
|
Судя по отладке переменные лежат в памяти со следующих адресов:
RX_PACKAGE2 0x0444
stroka 0x0440
buf_test 0x044B
|
Тут странно. PACKAGE - 7 байт, 0x444+7=0x44B, buf_test
А stroka по адресу 0x440. А размер ее 60байт. Не стыкуется - 0x444 уже stroka!
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
01.04.2015, 20:37
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Выдать структуры в usart и получить на приемнике
Сообщение от nml
|
Тут странно. PACKAGE - 7 байт, 0x444+7=0x44B
|
Где? 0x444+6=0x44А. Всего PACKAGE - 7 байт !!!!!!!
А buf_test 0x044B, всё правильно.
|
|
|
|
01.04.2015, 20:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
|
Re: Выдать структуры в usart и получить на приемнике
Мб там указатели ? Или тс не туда смотрит.
TechMike, почитайте про приведение/преобразование типов в си. Может окажется что ничего никуда и не нужно копировать.
Последний раз редактировалось Wiza_; 01.04.2015 в 20:45.
|
|
|
|
01.04.2015, 20:46
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Выдать структуры в usart и получить на приемнике
Сообщение от STM32F0
|
Где? 0x444+6=0x44А. Всего PACKAGE - 7 байт !!!!!!!
А buf_test 0x044B, всё правильно.
|
Какой размер stroka имеет? Фигня там какая-то. 4 байта? Потому и "налезают" данные друг на друга
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
01.04.2015, 20:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
|
Re: Выдать структуры в usart и получить на приемнике
Сообщение от nml
|
Какой размер stroka имеет?
|
Мы даже не знаем как она обьявлена. Если это указатель - то имеет право на жизнь длинна в 4 байта
|
|
|
|
01.04.2015, 20:49
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Выдать структуры в usart и получить на приемнике
Сообщение от Wiza_
|
Мы даже не знаем как она обьявлена. Если это указатель - то имеет право на жизнь длинна в 4 байта
|
Да. Не подумал. Просто указатель там как бы ни к чему... Да и 4 байта многовато будет для указателя в АВРке - памяти-то там всего ничего.
Короче, надо хотя бы в симуляторе смотреть.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
01.04.2015, 20:52
|
|
Вид на жительство
Регистрация: 02.11.2008
Сообщений: 319
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Выдать структуры в usart и получить на приемнике
Сообщение от Wiza_
|
Мы даже не знаем как она обьявлена. Если это указатель - то имеет право на жизнь длинна в 4 байта
|
Это просто массив char:
Код:
|
char stroka[60]; //переменная для работы со sprintf |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:24.
|
|