Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Уроки СИ для AVR микроконроллеров

Непрочитано 25.08.2012, 17:12  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от papa_n Посмотреть сообщение
вот тут проблема при index=6 берет 0x71
Я что-то не вижу в приведенном массиве элемента со значением 0х71. Просил же - приведите достаточный фрагмент кода, раз уж боитесь весь исходник архивом выложить.
_________________________________________________
Сообщение от nonamedov Посмотреть сообщение
ясно, что len0=len/3.
И даже ещё меньше. Кстати, papa_n, а нафига вычитать единицу? Вы так до конца массива не доберетесь. Хотя, до этого ещё дожить надо.
Реклама:
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 25.08.2012 в 17:17.
tempora вне форума  
Непрочитано 25.08.2012, 17:19  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

putchar3, что это такое?

Это стандартная функция CVAVR[HTML]#pragma used+
void putchar3(char c)
{
while ((UCSR3A & DATA_REGISTER_EMPTY)==0);
UDR3=c;
}
#pragma used-[/HTML]
она вставлена только для отладки, что бы терминалом подсмотреть что происходит.... все результаты, это реальный эксперимент на 2560 меге

символов в массиве 31

Вот архив с проектом, буду очень признателен
Вложения:
Тип файла: rar Project_CV_encode.rar (38.9 Кб, 36 просмотров)

Последний раз редактировалось papa_n; 25.08.2012 в 17:22.
papa_n вне форума  
Непрочитано 25.08.2012, 17:24  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

А зачем не использовать строки, там и функция strlen есть и код будет короче и более читабельным, напр.:
Цитата:
char stroka[] = "your line";
i=0;
while (stroka[i])
{
putchar(stroka[i]);
++i;
}

Последний раз редактировалось nonamedov; 25.08.2012 в 17:27.
nonamedov вне форума  
Непрочитано 25.08.2012, 17:25  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от papa_n Посмотреть сообщение
символов в массиве 31
Это в корне меняет дело.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 25.08.2012, 17:35  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Функцию отправки строки в UART3 я написал.
Вопрос в том что если взять строку которую я объявил как
PHP код:
stroka[] 
то на выходе с функции EncodeData, должна быть вот такая последовательность
PHP код:
gZouaTWqgHT‹d‹HmK0001000JpG20000‹4000000t3 
а имею вот такую:
PHP код:
gZouaTWqgIT‹DgCmW=DKGk3A;MjJi4j›=YVB 
вот то что выводится на терминал с проэкта
Цитата:
B1
00
0A
9A // символ
01 // его номер в масиве
0A
FF //символ
02 //его номер
0A
2B // символ
03 // номер
0A
79
04
0A
EE
05
0A
71 //символ Откуда он его берет?????
06 //его номер
0A
46
07
0A
32
08
0A

Последний раз редактировалось papa_n; 25.08.2012 в 17:41.
papa_n вне форума  
Непрочитано 25.08.2012, 17:57  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

papa_n, попробуйте изменить 6-й элемент на другое число, отличное от 0х31, возможно, проблема в терминале, т.е. он каким-то образом изменяет принимаемый символ, хотя, это и не понятно, ведь, ASCII(0x31)='1'.
nonamedov вне форума  
Непрочитано 25.08.2012, 18:00  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от nonamedov Посмотреть сообщение
papa_n, попробуйте изменить 6-й элемент на другое число, отличное от 0х31, возможно, проблема в терминале, т.е. он каким-то образом изменяет принимаемый символ, хотя, это и не понятно, ведь, ASCII(0x31)='1'.
Пробовал изменять!! все равно читает 0х71, и не пойму откуда он его берет(((
papa_n вне форума  
Непрочитано 25.08.2012, 18:11  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Все элементы перебираются в правильном порядке, т.е., эта часть кода правильная. Скорее всего, что-то с выводом не так. Попробуйте выводить не сами символы, а их читабельное представление - каждый преобразуйте в строку, скажем, так, и уже эту строку шлите на терминал. А если есть дисплей, то м.б. проще вывести эту строку на него, тогда будет известно, что не вмешиваются ошибки последовательного канала (кстати, проверьте, что там со скоростями передачи и приема).
Да, забыл сказать - преобразования с битовыми масками и таблицей перекодировки я, разумеется, исключил из рассмотрения.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 25.08.2012, 18:18  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

У Вас массивы sms и stroka перекрываются. Когда пишите в sms - затираете stroka...
Yurkin2007 вне форума  
Непрочитано 25.08.2012, 18:25  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Точно, дело, скорее всего, в этом. Интересно, кодевижн это съел без замечаний? BCPP отказался это делать.
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 25.08.2012 в 18:31.
tempora вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видео уроки dosikus Микроконтроллеры, АЦП, память и т.д 61 23.01.2012 21:06
Видео уроки (flash) Proteus 7.1 fmssp Proteus 5 13.08.2007 03:56
AVR уроки Рюмика chipic128 Proteus, KiCAD и другие ECAD 9 07.03.2007 21:46
уроки от LABCENTRE(PIC12F675+C) dosikus Микроконтроллеры, АЦП, память и т.д 22 09.10.2006 10:16


Часовой пояс GMT +4, время: 11:33.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.