CodeVision AVR в вопросах и ответах
-
ARMag
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вт июн 05, 2007 10:00:46
- Откуда: Киев
- Контактная информация:
need help!
Здравствуйте, Уважаемые. Возникла проблема, не знаю как решить:
Пользуюсь CVARV 2.03.9, Proteus 7.4 SP3 + отладка на реальной плате.
Mega8 связуется по USART с компом, надо сделать переход на новую строчку.
printf("Start. \n");
printf("%s\n","Start.");
printf("%p\n","Start.");
ни один с вышеперечисленых вариантов не работает. Так же не работает и табуляция \t, потому есть предположение того, что повреждена библиотека (или просто недописана). Знаю в простом С есть ещё пару вариантов (типа cout<<endl;), но они не работают в CVARV.
Кто подскажет выход? может есть аццкий символ перехода? или где библиотеку подправить (ASM-ом, к сожалению, не владею).
Пользуюсь CVARV 2.03.9, Proteus 7.4 SP3 + отладка на реальной плате.
Mega8 связуется по USART с компом, надо сделать переход на новую строчку.
printf("Start. \n");
printf("%s\n","Start.");
printf("%p\n","Start.");
ни один с вышеперечисленых вариантов не работает. Так же не работает и табуляция \t, потому есть предположение того, что повреждена библиотека (или просто недописана). Знаю в простом С есть ещё пару вариантов (типа cout<<endl;), но они не работают в CVARV.
Кто подскажет выход? может есть аццкий символ перехода? или где библиотеку подправить (ASM-ом, к сожалению, не владею).
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: need help!
это из "простого С++"ARMag писал(а):Знаю в простом С есть ещё пару вариантов (типа cout<<endl;)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: need help!
ARMag писал(а):Кто подскажет выход?
Выход ОЧЕВИДЕН имхо. Проверьте какие реально символы передаются.
Программы для мониторинга COM порта и для отладки программы в микроконтроллере через COM порт ПК есть в задаче 4 , и прекрасно переходит на новую строку в терминале код из CVAVR в примере на заглавной страничке
http://www.radiokot.ru/forum/viewtopic. ... 0878#90878
Да и в PROTEUS есть пример ONE-WIRE сделан на CVAVR и тоже номера 1-wire устройств с новых строк выводит.
ИЗУЧАЙТЕ !
ARMag писал(а): где библиотеку подправить
Не надо лезть в то что ПРАВИЛЬНО работает !
-
ARMag
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вт июн 05, 2007 10:00:46
- Откуда: Киев
- Контактная информация:
2 ARV:
я и имел в виду С++
2 ikarab:
я же написал, что систему налаживаю двумя способами, в протеус и на реальном устройстве (mega8 + max232 + Advanced Serial Port Monitor), и оба выдают один и тот же результат. я нашел символ переноса ASCII в WinAVR для перехода на н.с. - 10 (0х0А).
Кидаю его в патчар - никакого результата, хотя другие символы выводит без проблем. Ошибка в какой-то с библиотек, имхо. У кого-то стоит эта версия (последняя, если я не ошибаюсь). Проверте, пожалуйста!
я и имел в виду С++
2 ikarab:
я же написал, что систему налаживаю двумя способами, в протеус и на реальном устройстве (mega8 + max232 + Advanced Serial Port Monitor), и оба выдают один и тот же результат. я нашел символ переноса ASCII в WinAVR для перехода на н.с. - 10 (0х0А).
Кидаю его в патчар - никакого результата, хотя другие символы выводит без проблем. Ошибка в какой-то с библиотек, имхо. У кого-то стоит эта версия (последняя, если я не ошибаюсь). Проверте, пожалуйста!
ARMag писал(а): У кого-то стоит эта версия (последняя, если я не ошибаюсь). Проверте, пожалуйста!
Проекты прицепите в архиве - проверят.
Выкинте из них все что к выводу не относится.
Я рекомендую использовать CVAVR 1.25.9 - код компактней чем у CVAVR2 получается.
И ! вы ж можете листинг АСМа позыриь .lst - что там выводить быдет.
-
ARMag
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вт июн 05, 2007 10:00:46
- Откуда: Киев
- Контактная информация:
я прям не знаю, что делать, только что 2 часа пытался устранить ошибку эту, поставил старую версию CVAVR-a (1.25.9) - никакого результата, удалил всё, что было связвно с С++, BDE 5.02, CVAVR, WinAVR... Удалил все папки, всё что было.... Поставил заново CVAVR - опять тоже самое! Уже и проект создал новый, и так, и сяк его - ну не хочет он упорно переносить на новую строку, хоть убей его. Наверное, что-то у винды слетело 
Дак символы то переноса приходят на COM порт ? Можете просто символ в UDR (проверить название регистра USART по даташиту) скопировать.
Прицепите проект.
Код: Выделить всё
while (1){
пауза для передачи
UDR = 0x0A;
пауза для передачи
UDR = 0x55;
};Прицепите проект.
Последний раз редактировалось ikarab Вт мар 24, 2009 20:44:43, всего редактировалось 1 раз.
-
ARMag
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вт июн 05, 2007 10:00:46
- Откуда: Киев
- Контактная информация:
та с портом всё нормально. с компилятором что-то не то. он просто в прошивку не хочет шить ни перехода, ни табуляцию
. в Протеусе то тоже не работает, если бы что-то с портом было, в Протеусе симулировалось бы ништяк... А винду я имел в виду, то, что библиотека виндовская накрылась, которую использует компилятор, т.к. переустановка квавра не помогла...
2 ikarab: мож пришли мне в лс аську, что б быстрее было?
2 ikarab: мож пришли мне в лс аську, что б быстрее было?
-
ARMag
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вт июн 05, 2007 10:00:46
- Откуда: Киев
- Контактная информация:
я писал выше, что в асме я не силён, потому листинг мне, что радио слушать....
смотрел в библиотеке ф-цию патс, там тоже переход явно задается строкой рutchar(10);
сам патчап написан на асме и для меня не понятен
вот кусок проги:
printf("\t Test \n");
putchar(10);
printf("%p\t\n","Test");
putchar(0x0A);
printf("%s\t\n","Test");
смотрел в библиотеке ф-цию патс, там тоже переход явно задается строкой рutchar(10);
сам патчап написан на асме и для меня не понятен
вот кусок проги:
printf("\t Test \n");
putchar(10);
printf("%p\t\n","Test");
putchar(0x0A);
printf("%s\t\n","Test");
может надо \r
я не могу помочь вам без вашего проекта. Чем я вам помогу то ?
Будет ваш проект я его откомпиля у себя в CVAVR и сообщк результат. Я ж не телепат.
Выше я дал вам прямой код загрузки в USART - его и попробуйте.
Или вот попробуйте проект из прицепа - это пример набор готовых проектов для CVAVR VMLAB PROTEUS с работающими PWM USART с различными способами вывода и приемом информации - можно использовать для проверки и быстрого теста кусков кода.
я не могу помочь вам без вашего проекта. Чем я вам помогу то ?
Будет ваш проект я его откомпиля у себя в CVAVR и сообщк результат. Я ж не телепат.
Выше я дал вам прямой код загрузки в USART - его и попробуйте.
Или вот попробуйте проект из прицепа - это пример набор готовых проектов для CVAVR VMLAB PROTEUS с работающими PWM USART с различными способами вывода и приемом информации - можно использовать для проверки и быстрого теста кусков кода.
- Вложения
-
- avr.rar
- (80.95 КБ) 264 скачивания
Последний раз редактировалось ikarab Ср мар 25, 2009 11:10:33, всего редактировалось 2 раза.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
скорее всего проблема в том, как по умолчанию терминал интерпретирует символы "перевод строки" \n и "возврат каретки" \r. Например, для Windows и MS DOS характерно обязательное наличие обоих символов, т.е. \n\r, для UNIX-подобных систем хватает и одного (какого именно - я не в курсе).
Для WinAVR специально оговорено в документации, что для корректного вывода строк на Windows-терминал необходимо вручную дополнять каждый символ \n символом \r, в то время как реализации Си и С++ для Windows делают это автоматически.
Для WinAVR специально оговорено в документации, что для корректного вывода строк на Windows-терминал необходимо вручную дополнять каждый символ \n символом \r, в то время как реализации Си и С++ для Windows делают это автоматически.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
ExtaZy писал(а):Подскажите пожалуйста как в CVAVR перекодировать русский текст чтоб он на дисплее выводился потом?
Есть разные способы и их надо проверять. Кто пишет что в CVAVR pragma +rl работает, кто пишет что нет.
на руссифицированой hd-ке по русски так:
Код: Выделить всё
#pragma rl+ //перевод экрана на русскоязычное отображение
lcd_gotoxy(4,0); //местоположение курсора
lcd_putsf("Здраствуйте"); //вывод текста
#pragma rl- //Перевод экрана на английское отображение Кто-то таблицы перекодирования в прогу вставляет, ктот использует проги перекодировщики.