Страница 35 из 421
Добавлено: Пн мар 23, 2009 02:03:48
Alexeus
Ну так топика по Си нет, приходится в топике про компилятор, который Си переваривает писать...
/Проверить я хотел, установлены ли все три первых бита.
need help!
Добавлено: Вт мар 24, 2009 13:37:00
ARMag
Здравствуйте, Уважаемые. Возникла проблема, не знаю как решить:
Пользуюсь 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-ом, к сожалению, не владею).
Re: need help!
Добавлено: Вт мар 24, 2009 13:42:47
ARV
ARMag писал(а):Знаю в простом С есть ещё пару вариантов (типа cout<<endl;)
это из "простого С++"

Re: need help!
Добавлено: Вт мар 24, 2009 13:46:31
ikarab
ARMag писал(а):Кто подскажет выход?
Выход ОЧЕВИДЕН имхо.
Проверьте какие реально символы передаются.
Программы для мониторинга COM порта и для отладки программы в микроконтроллере через COM порт ПК есть в задаче 4 , и прекрасно переходит на новую строку в терминале код из CVAVR в примере на заглавной страничке
http://www.radiokot.ru/forum/viewtopic. ... 0878#90878
Да и в PROTEUS есть пример ONE-WIRE сделан на CVAVR и тоже номера 1-wire устройств с новых строк выводит.
ИЗУЧАЙТЕ !
ARMag писал(а): где библиотеку подправить
Не надо лезть в то что ПРАВИЛЬНО работает !
Добавлено: Вт мар 24, 2009 14:17:59
ARMag
2 ARV:
я и имел в виду С++

2 ikarab:
я же написал, что систему налаживаю двумя способами, в протеус и на реальном устройстве (mega8 + max232 + Advanced Serial Port Monitor), и оба выдают один и тот же результат. я нашел символ переноса ASCII в WinAVR для перехода на н.с. - 10 (0х0А).
Кидаю его в патчар - никакого результата, хотя другие символы выводит без проблем. Ошибка в какой-то с библиотек, имхо. У кого-то стоит эта версия (последняя, если я не ошибаюсь). Проверте, пожалуйста!
Добавлено: Вт мар 24, 2009 14:57:30
ikarab
ARMag писал(а): У кого-то стоит эта версия (последняя, если я не ошибаюсь). Проверте, пожалуйста!
Проекты прицепите в архиве - проверят.
Выкинте из них все что к выводу не относится.
Я рекомендую использовать CVAVR 1.25.9 - код компактней чем у CVAVR2 получается.
И ! вы ж можете листинг АСМа позыриь
.lst - что там выводить быдет.
Добавлено: Вт мар 24, 2009 19:50:12
ARMag
я прям не знаю, что делать, только что 2 часа пытался устранить ошибку эту, поставил старую версию CVAVR-a (1.25.9) - никакого результата, удалил всё, что было связвно с С++, BDE 5.02, CVAVR, WinAVR... Удалил все папки, всё что было.... Поставил заново CVAVR - опять тоже самое! Уже и проект создал новый, и так, и сяк его - ну не хочет он упорно переносить на новую строку, хоть убей его. Наверное, что-то у винды слетело

Добавлено: Вт мар 24, 2009 20:35:08
ikarab
Дак символы то переноса приходят на COM порт ? Можете просто символ в UDR (проверить название регистра USART по даташиту) скопировать.
Код: Выделить всё
while (1){
пауза для передачи
UDR = 0x0A;
пауза для передачи
UDR = 0x55;
};
Прицепите проект.
Добавлено: Вт мар 24, 2009 20:42:31
ikarab
ARMag писал(а): Наверное, что-то у винды слетело

выход COM со входом соедините резистором 1 кОм (2 и 3 вывод в 9 штырьковом) и шлите из терминала или прог данные - они обратно должны возвращаться.
Добавлено: Вт мар 24, 2009 22:44:11
ARMag
та с портом всё нормально. с компилятором что-то не то. он просто в прошивку не хочет шить ни перехода, ни табуляцию

. в Протеусе то тоже не работает, если бы что-то с портом было, в Протеусе симулировалось бы ништяк... А винду я имел в виду, то, что библиотека виндовская накрылась, которую использует компилятор, т.к. переустановка квавра не помогла...
2 ikarab: мож пришли мне в лс аську, что б быстрее было?
Добавлено: Вт мар 24, 2009 23:18:16
ikarab
Выложите ваш проект ТОЛЬКО вывод символов ! я проверю у себя.
ARMag писал(а): с компилятором что-то не то. он просто в прошивку не хочет шить ни перехода, ни табуляцию
в очередно раз спрошу- вы в АСМ листинге то смотрели ? Есть эти символы если вы их явно в проге пишите ? Закидывает он их в UDR ?
Добавлено: Вт мар 24, 2009 23:32:37
ARMag
я писал выше, что в асме я не силён, потому листинг мне, что радио слушать....
смотрел в библиотеке ф-цию патс, там тоже переход явно задается строкой рutchar(10);
сам патчап написан на асме и для меня не понятен
вот кусок проги:
printf("\t Test \n");
putchar(10);
printf("%p\t\n","Test");
putchar(0x0A);
printf("%s\t\n","Test");
Добавлено: Вт мар 24, 2009 23:38:43
ikarab
может надо \r
я не могу помочь вам без вашего проекта. Чем я вам помогу то ?
Будет ваш проект я его откомпиля у себя в CVAVR и сообщк результат. Я ж не телепат.
Выше я дал вам прямой код загрузки в USART - его и попробуйте.
Или вот попробуйте проект из прицепа - это пример набор готовых проектов для CVAVR VMLAB PROTEUS с работающими PWM USART с различными способами вывода и приемом информации - можно использовать для проверки и быстрого теста кусков кода.
Добавлено: Вт мар 24, 2009 23:47:36
ARMag
О, аллилуя!!!!
\r ЗАРАБОТАЛ!!!
ikarab - ОГРОМНОЕ спасибо!!!!
зы: а когда это \n на \r сменилось?! что-то я пропустил...
Добавлено: Вт мар 24, 2009 23:50:32
ikarab
ARMag писал(а):О, аллилуя!!!! \r ЗАРАБОТАЛ!!! ikarab - ОГРОМНОЕ спасибо!!!!
Ну и слава богу.
ARMag писал(а):зы: а когда это \n на \r сменилось?!
что-то я пропустил...
Да вроде всегда и было. С незапамятных времен еще.
Добавлено: Ср мар 25, 2009 01:11:00
ARMag
просто странно, с 7 класса на С++ программирую и ниразу не видел (а может просто не обращал внимания по ненадобности) на \r. Сколько книжек перечитал, примеров и апноутов пересмотрел... странно.
Ладно, спасибо, совершенству нет предела

будем дальше учиться!
Ещё раз спасибо!
Добавлено: Ср мар 25, 2009 08:23:08
ARV
скорее всего проблема в том, как по умолчанию терминал интерпретирует символы "перевод строки" \n и "возврат каретки" \r. Например, для Windows и MS DOS характерно обязательное наличие обоих символов, т.е. \n\r, для UNIX-подобных систем хватает и одного (какого именно - я не в курсе).
Для WinAVR специально оговорено в документации, что для корректного вывода строк на Windows-терминал необходимо вручную дополнять каждый символ \n символом \r, в то время как реализации Си и С++ для Windows делают это автоматически.
Добавлено: Ср мар 25, 2009 20:09:51
ARMag
ARV писал(а):скорее всего проблема в том, как по умолчанию терминал интерпретирует символы "перевод строки" \n и "возврат каретки" \r. Например, для Windows и MS DOS характерно обязательное наличие обоих символов, т.е. \n\r
Ничего себе, как всё запущено... Буду знать.
Век живи - век учись!

Добавлено: Чт мар 26, 2009 19:28:26
ExtaZy
Подскажите пожалуйста как в CVAVR перекодировать русский текст чтоб он на дисплее выводился потом?
Добавлено: Чт мар 26, 2009 20:17:14
ikarab
ExtaZy писал(а):Подскажите пожалуйста как в CVAVR перекодировать русский текст чтоб он на дисплее выводился потом?
Есть разные способы и их надо проверять. Кто пишет что в CVAVR pragma +rl работает, кто пишет что нет.
на руссифицированой hd-ке по русски так:
Код: Выделить всё
#pragma rl+ //перевод экрана на русскоязычное отображение
lcd_gotoxy(4,0); //местоположение курсора
lcd_putsf("Здраствуйте"); //вывод текста
#pragma rl- //Перевод экрана на английское отображение
Кто-то таблицы перекодирования в прогу вставляет, ктот использует проги перекодировщики.