mplab C30 printf
Jozef Kajan
svk421@zoznam.sk
Úterý Duben 1 17:24:57 CEST 2008
Vdaka za vsetky reakcie, skusim ich spojit do jednej odpovede:
> Lukas Grepl
> Rozhodne je divna ta inkrementace void * buffer, videl bych to spis takto:
Ano, toto naozaj nebolo korektne. Vychadzal som zo zdroja
http://support2.microchip.com/KBSearch/KB_StdProb.aspx?ID=SQ6UJ9A009MTU
write(int handle, void *buffer, unsigned int len)
{
...
*writereg++ = *(char*)buffer++;
...
}
Ale kedze nemam rad konstrukcie, kde sa v jednom riadku robi aj
inkrement smernika, hodil som to do dalsieho riadku, nevsimnuc si ten void.
Ani po oprave to zatial nechodi.
> Petr Simek
> Debug-ujte funci ktera ten retezec vytvari, jestli se pak opravdu v pameti
> objevi. Taky kde se bere to 'len' jestli treba neni natvrdo nastavene na 1
> pri volani te funkce write...
Je problem to debugovat nizsie, lebo parametre pre write vytvara priamo
printf, a ta nie je k dispozicii v C zdrojakoch (je to stdlib). Mozem to
sice na urovni asm, ale to az ked zlyha vsetko ostatne.
> andrej jancura
> Ale ja osobne by som to riesil funkciou sprintf do RAM a z RAM by som si
to poslal
> vlastnou rutinou na display alebo seriovy port.
sprintf sice funguje (to som vyskusal hned, ked zacali problemy), ale robit
to takto je hlupost. Musi to fungovat aj priamo. Pre nizsie rady PIC to
pouzivam uz roky bez problemov (s hitech kompilatorom)
Tam sa uzivatelsky nadefinuje len putch(), a printf ten putch sam vola.
> Osobne tipujem na chybu v tomto riadku:
> putch(*(char*)buffer);
> Preco si to nenapises normalne cez Buffer[], a neprepises to potom na
> adresy?! Ved tej funkcii putch() je jedno, co jej posielas, ci adresu prvku
> pola alebo to iste cez pomocny pointer...
Ta konstrukcia je v poriadku, ale ani iny zapis zmenu nepriniesol. Problem
zostava v tom, ze printf spravne nepripravi cely retazec, ale jeden len
prvy znak. Ako som pisal prvykrat, ked to brejknem vo vnutri funkcie write,
retazec v ramke ma naozaj len jeden znak. Este je moznost, ze je to normalne
a printf vola write() pre kazdy znak samostatne, len z nejakeho dovodu sa
viackrat nezavola.
--- reklama -----------------------------------------------------
500.000 slovákov si píše cez Zoznam ICQ
http://icq.zoznam.sk/
Další informace o konferenci Hw-list