Отговори на тема  [ 7 мнения ] 
Hi-tech PICC printf проблем 
Автор Съобщение
Ранг: Популярен
Ранг: Популярен

Регистриран на: Сря Яну 25, 2006 12:47 pm
Мнения: 305
Местоположение: Varna
Мнение Hi-tech PICC printf проблем
Здравейте,

Пиша програма за PIC16F876A и използвам Hi-Tech PICC в средата на MPLAB.
Използвам серийния интерфейс за контролиране на някои от параметрите и най - общо за debug на софта.
Проблема възникна когато реших да изпратя long число - числото, което получих не беше това което очаквах
и започнах да изследвам проблема.
Естественно, че грешката беше моя :) бях задал %u вместо %l, оправих го и тук беше голямата изненада - при компилацията получих следното: "Warning[000] D:\.....: error in format string", викам си - сигурно не е %l, (макар че в manual-а изрично си го пише %l) a %L - същия ефект. При това в Build Options съм избрал "Integer & long", пробвах и с "integer, long & float" - няма ефект. Проконтролирах ключа който MPLAB-а включва в командния ред на линкера и видях, че съвпада, а именно -LL или -LF. Викам си сигурно процесора ми е в "Baseline" според тяхната класификация а за тях се поддържа само integer printf, отворих \lib\picinfo.ini и видях че проца е в highend, т.е. printf-а поддържа long и float.
После за да съм сигурен, че числото, което подавам на printf-а е наистина това което очаквам, го преобразувах в char-ове и ги изпратих последователно с putch - числото е вярно а printf-а изкарва само една част от него.
Викам си - както и да е, ама чакай да си подредя малко числата на екрана. Имам едно число, което се изменя от 1 до 999 и му слагам %3.3u и
следва страхотна изненада - получавам следното 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, 10, 11 и т.н. като това се повтаря на всяка 10-ца. Гледам и не вярвам на очите си :) . Сменям форматиращия параметър на %3.2u и сега поредицата стига до 'C', което означава че с числото след точката се сменя основата на бройната система - старшен ефект :). А инъче числото преди точката наистина отделя необходимия брой позиции.
Та такива ми ти работи с Hi-tech PICC.

Някой знае ли нещо по въпроса?

P.S. Между другото бях с 9.5 и върнах 8.05 обаче все едно и също...
Истината е, че при 9.5 ми даваше че използвам стари ключове в командния ред, ама не ми се играеше да ги оправям.
Интересно защо от майкрочип не са сложили съответното управление в MPLAB-а, може би в някоя от следващите версии?!..


Сря Яну 31, 2007 10:42 am
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
Регистриран или е кракнат компилатора ти ако е регистриран работи флоат ако е кракнат не :)


Сря Яну 31, 2007 3:47 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен

Регистриран на: Сря Яну 25, 2006 12:47 pm
Мнения: 305
Местоположение: Varna
Мнение 
Благодаря за отзива VSU, кракнат е.
Казваш, че ако е кракнат float не работи, а long-а?


Сря Яну 31, 2007 4:02 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
Само integer ako e кракнат ето ли линк за компилатора и регистрацията само че е 9.05PL2 http://www.sendspace.com/file/gerh29


Сря Яну 31, 2007 4:56 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен

Регистриран на: Сря Яну 25, 2006 12:47 pm
Мнения: 305
Местоположение: Varna
Мнение 
VSU може би искаш да кажеш 8.05PL2.
И аз имам тази версия с keygen, но дали е същата ще видим. Сега я дърпам от твоя линк.
Благодаря!
Ще постна отзивите :)


Сря Яну 31, 2007 6:24 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Сря Яну 25, 2006 12:47 pm
Мнения: 305
Местоположение: Varna
Мнение 
VSU със същия компилатор съм и съм ползвал същия keygen.
Имам съмнение, че проблема е в използваните библиотеки.
Според конвенцията за именуване на библиотеките фиг.5-1 на стр. 136
при зададена long в моя случай би трябвало в моя случай да зареди
pic444-L.lib или pic744-L.lib и при зададени float 'L' се сменя с 'F', вместо това
линкера ме свързва с pic42c-L.lib, pic42c-F.lib респективно. И интересното е, че
в lib папката изобщо липсват тези библиотеки(444 и 744). Втората цифра показва
броя на ROM банките, a третата на RAM банките. А той ми дава библиотеки само за
две банки. ?!?
Какво да се прави. Обаче се замислям дали като го купим ще имаме същите проблеми?!? :-k


Чет Фев 01, 2007 10:31 am
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
НЕ знам ако искаш пусни парче от кода да пробвам при мене как се държи конкретно за кой тип проц нямал съм ядове досега но винаги има 1 път


Чет Фев 01, 2007 3:09 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 7 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни