To R9OFG.
Äîáðûé âå÷åð. Íó ÷òî ìîãó ñêàçàòü, íè÷åãî ïóòíåãî ïîêà íå ïîëó÷èëîñü ó ìåíÿ.
×èñòî âîò êàê âû íàïèñàëè, ñòóäèÿ ïèøåò äâà ïðåäóïðåæäåíèÿ. ÿ èõ ïåðåâåë
1 Ïðè ïåðåäà÷å àðãóìåíòà 1 'SSD1306_DrawString' ñîçäàåòñÿ óêàçàòåëü íà öåëîå ÷èñëî áåç ïðèâåäåíèÿ
2 Îæèäàåòñÿ ñîîáùåíèå "char *", íî àðãóìåíò èìååò òèï "void (*)()"
Õîòÿ êîìïèëÿöèÿ ïðîõîäèò ïðè ýòîì. Ñàì äèñïëåé ðàáîòàåò. Íî ÷àñòîòó íå âûâîäèò.
È íåõîðîøàÿ øòóêà ïîëó÷àåòñÿ, ïðè çàïóñêå âñåãî ýòîãî êîãäà ïîìåùàþ â áåñêîíå÷íûé öèêë - îòâàëèâàåòñÿ ýíêîäåð.
Íî âîò ÷òî èíòåðåñíî, ÿ ïûòàëñÿ ïîïðîáîâàòü Freq_PLL ÷åðåç óêàçàòåëü, íå ïîìíþ ÷òî è êàê äåëàë, íî ÷àñòîòó îí îòîáðàçèë,
è äàæå ïåðåñòðàèâàë à ïîòîì ïî÷åìó-òî îòâàëèëñÿ ýíêîäåð.
Ïðèøëîñü âñå çàòåðåòü â êîäå è ïåðåïèñàòü ÌÊ. âñå êàê è ðàíüøå çàðàáîòàëî. Òàê ÷òî íàâåðíîå åùå êàêèå-òî ìàíèïóëÿöèè íóæíû,
à íå íà ïðÿìóþ îáðàùàòüñÿ ê Freq_PLL. Íó ýòî ÿ òàê äóìàþ![]()
Íàøåë ÿ ïî÷åìó îòâàëèâàëñÿ âàëêîäåð. Ïðè êîïèðîâàíèè êîäà. â îñíîâíîå òåëî öèêëà çàòåñàëàñü çàäåðæêà èç ïðèìåðà.
Ñåé÷àñ ðàáîòàåò . ïðàâäà íå ïîéìó ïî÷åìó äâå ñòðîêè, íî ñåé÷àñ ýòî íå ñàìîå ãëàâíîå. Íó è áèáëèîòåêó íàâåðíîå íóæíî ñìåíèòü íà öèôðû ïîáîëüøå.
Ñïàñèáî.
Ïðî ýòî è ïèñàë, ìîæíî åùå ÷åðåç sprintf ïîïðîáîâàòü, íî òîãäà çíà÷èòåëüíî óâåëè÷èòñÿ ðàçìåð ïðîøèâêè
Âû ïîøëè ïðîñòûì ïóòåì, âçÿâ ãîòîâûå áèáëèîòåêè, îò òàêîãî ïîäõîäà ÿ äàâíî îòêàçàëñÿ, ëó÷øå ðàçîáðàòü ãîòîâûé ïðèìåð êàê îí ðàáîòàåò, è ñäåëàòü ñâîè íåîáõîäèìûå ôóíêöèè, òîãäà ïðîùå ïîíÿòü áóäåò ïî÷åìó ðàáîòàåò íå òàê êàê õî÷åòñÿ!Êîä:#include <stdio.h> void Display_Frequency() { char buffer[20]; sprintf(buffer, "%lu", Freq_PLL); // %lu — ñïåöèôèêàòîð äëÿ unsigned long SSD1306_DrawString(buffer); }
Äà, òàê è åñòü. Ïðîñòî î÷åíü õîòåëîñü ïîïðîáîâàòü, íó à íà ñ÷åò ÷òîáû âñåÂû ïîøëè ïðîñòûì ïóòåì,
ðàáîòàëî êàê õî÷åòñÿ ÿ ñ âàìè ïîëíîñòüþ ñîãëàñåí.
Ñïàñèáî çà ïîìîùü.
Ó ìåíÿ íàâåðíîå ïîñëåäíèé âîïðîñ. Ïðîñòî îòâåòà òàê æå íå íàøåë â èíåòå. Äîïóñòèì â êîäå çäåñü âñåãäà ìåëüêàåò Freq_PLL êàê öåëîå ÷èñëî. À êàêèìè ìåòîäàìè åãî âûâåñòè ÷åðåç çàïÿòóþ(òî÷êó). òåì áîëåå ÷òî òàì ñòðîêà óæå è âûâîäèòñÿ íå ïîñèìâîëüíî.
Äîïóñòèì 92500 ñäåëàòü 92,5 èëè 102,4 ê ïðèìåðó. Èëè ýòî èçíà÷àëüíî âñå äåëàåòñÿ íå òàê.
Êîä:int infocb_currlevel(char * b, size_t len, int * pstate) { int_fast16_t drainx = hamradio_get_pacurrent_value(); // Òîê â äåñÿòêàõ ìèëèàìïåð (äî 2.55 àìïåðà), ìîæåò áûòü îòðèöàòåëüíûì const int draina = drainx / 100; const int drains01a = drainx > 0 ? (drainx % 100) : (- drainx % 100); return local_snprintf_P(b, len, "%d.%dA", draina, drains01a); }
Ñïàñèáî îò R9OFG
Î êàê îêàçûâàåòñÿ, ìîæíî ïðîñòî ìèíóñ ïèñàòü, à íå èç íóëÿ âû÷èòàòü. Íàäî çàïîìíèòü.
Ñîáñòâåííî òóò ïðîèñõîäèò âû÷èñëåíèå äâóõ ÷àñòåé - òîãî ÷òî ñëåâà îò òî÷êè îòîáðàæàåòñÿ è ñïðàâà.  âàøåì ñëó÷àå, êîãäà îòîáðàæàåìîå ÷èñëî ïîëîæèòåëüíîå, óïðîùàåòñÿ äî:Êîä:int draina = drainx / 100; int drains01a = drainx > 0 ? (drainx % 100) : (- drainx % 100);
Êîä:int draina = drainx / 100; int drains01a = drainx % 100;
Ñïàñèáî îò SERGEY S.
Ýòó òåìó ïðîñìàòðèâàþò: 1 (ïîëüçîâàòåëåé: 0 , ãîñòåé: 1)