Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Hi-tech PICC printf проблем
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=3658
Страница 1 от 1

Автор:  bkulev [ Сря Яну 31, 2007 10:42 am ]
Заглавие:  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-а, може би в някоя от следващите версии?!..

Автор:  VSU [ Сря Яну 31, 2007 3:47 pm ]
Заглавие: 

Регистриран или е кракнат компилатора ти ако е регистриран работи флоат ако е кракнат не :)

Автор:  bkulev [ Сря Яну 31, 2007 4:02 pm ]
Заглавие: 

Благодаря за отзива VSU, кракнат е.
Казваш, че ако е кракнат float не работи, а long-а?

Автор:  VSU [ Сря Яну 31, 2007 4:56 pm ]
Заглавие: 

Само integer ako e кракнат ето ли линк за компилатора и регистрацията само че е 9.05PL2 http://www.sendspace.com/file/gerh29

Автор:  bkulev [ Сря Яну 31, 2007 6:24 pm ]
Заглавие: 

VSU може би искаш да кажеш 8.05PL2.
И аз имам тази версия с keygen, но дали е същата ще видим. Сега я дърпам от твоя линк.
Благодаря!
Ще постна отзивите :)

Автор:  bkulev [ Чет Фев 01, 2007 10:31 am ]
Заглавие: 

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

Автор:  VSU [ Чет Фев 01, 2007 3:09 pm ]
Заглавие: 

НЕ знам ако искаш пусни парче от кода да пробвам при мене как се държи конкретно за кой тип проц нямал съм ядове досега но винаги има 1 път

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/