Re: Mikro C PIC - string - problém

Jaromir Sukuba jarin.hw na gmail.com
Úterý Leden 14 16:30:33 CET 2014


Za tu cenu (zadarmo) mate XC8 kompilator, nie je obmedzeny na velkost kodu,
k tomu MPLAB (alebo MPLABX, podla chuti).
Mozete to pouzivat s PIC16 alebo PIC18, ja by som radil skor PIC18; alebo
aspon PIC16F1xxx, ale nie PIC16Fxxx.



2014/1/14 Jan Půhoný <konference na puhy.cz>

> Díky všem za vysvětlení.
>
> Koukám, že ty string operace docela žerou paměť procesoru. Asi ten Mikro C
> budu muset koupit... protože jsem na demo limitu :-( (max 2k HEX).
>
> Je to dobrá volba, nebo za ty peníze koupím na PICy něco lepšího?
>
> Nebo bude lepší spíš tam dát nějaký pinově kompatibilní 18F ... ty mají
> podporu C přímo v MPLABu zdarma, ne?
>
> Honza Půhoný
>
>
> Dne 14. ledna 2014 11:49 Martin Persich <persich na transcon.cz> napsal(a):
>
>  Přiznávám, možnosti knihoven v Mikro C vůbec neznám, PIC neprogramuji.
>> Délka bufferu lze sice zjistit pomocí "sizeof()", ale to si musíte "ručně"
>> pohlídat, tj. nejdříve zjistit velikost a pak případně provést další akci.
>> Nic automatizovaného a navíc obvykle je velikost bufefru v těchto případech
>> konstantní a postrádá to smysl.
>> Ale měl jsem na mysli vytvoření svých speciálních funkcí, které toto
>> budou zohledňovat a např. pro obsluhu LCD displeje známé velikosti vystačí
>> pouze s bufferem o délce tohoto displeje. Jinak standardně toto řeší
>> objekty CString (nebo tak nějak v "C++"), ale to je jiná kategorie a asi se
>> to nedá rozumně použít na malé MCU, osobně také zůstávám pouze u "C".
>> Martin. persich na transcon.cz
>>
>> ----- Original Message -----
>> *From:* Jan Půhoný <konference na puhy.cz>
>> *To:* HW-news <hw-list na list.hw.cz>
>> *Sent:* Tuesday, January 14, 2014 10:48 AM
>> *Subject:* Re: Mikro C PIC - string - problém
>>
>> A těmi nestandardními funkcemi, máte na mysli co? Je něco takového v
>> Mikro C PIC možné využít?
>>
>> H.
>>
>> Dne 14. ledna 2014 10:35 Martin Persich <persich na transcon.cz> napsal(a):
>>
>>>  Pokud používáte standardní funkce "str...()", tak si bohužel délku
>>> bufferů musíte v programu hlídat sám. A hodně důsledně! Stačí chvilka
>>> nepozornosti a i po několika letech se objevují v programu chyby... To je
>>> bohužel jeden z velkých nedostatků (a zárověň výhod .-) ) jazykä "C".
>>> Martin
>>>
>>>
>>>  ----- Original Message -----
>>> *From:* Jan Půhoný <konference na puhy.cz>
>>> *To:* HW-news <hw-list na list.hw.cz>
>>>   *Sent:* Tuesday, January 14, 2014 10:25 AM
>>> *Subject:* Re: Mikro C PIC - string - problém
>>>
>>> Díky moc - bylo to tou špatnou deklarací v druhém souboru, proto mi to
>>> rozhazovalo displej a občas se to i kouslo.
>>>
>>> Teď se to chová korektně.
>>>
>>> Je tedy potřeba hlídat, aby délka toho bufferu byla vždy 16+1 znaků?
>>> Není na to nějaká funkce která by to zajistila?
>>>
>>> Ještě jednou díky všem, nemohl jsem na to dlouho přijít.
>>>
>>> Honza Půhoný
>>>
>>>
>>> S pozdravem Ing. Jan Půhoný
>>>
>>> www.puhy.cz
>>> puhy na puhy.cz
>>>
>>> Navštivte nás na Facebooku:
>>> http://www.facebook.com/puhy.cz
>>>
>>> Následujte nás na Twitteru:
>>> https://twitter.com/puhycz
>>>
>>> Náš kanál na YouTube:
>>> http://www.youtube.com/user/puhyeu
>>>
>>>  Připojení k internetu a VoIP telefonování
>>> http://www.puhy.net
>>>
>>>
>>> Dne 14. ledna 2014 10:01 Martin Persich <persich na transcon.cz> napsal(a):
>>>
>>>>  V druhém souboru by měla být jen deklarace:
>>>> extern unsigned char prvni_r[];
>>>> extern unsigned char druhy_r[];
>>>>
>>>> Počet prvků (délku bufferu) si musí program v "C" bohužel hlídat sám,
>>>> není problém téměř cokoliv, kdekoliv přepsat mimo tento buffer ... :-(
>>>> Jinak ten uvedený zápis jednotlivých prvků do bufferu v druhém souboru
>>>> je dle mého v pořádku a v rámci možností (tj. jazyka "C") korektní.
>>>>
>>>> Martin. persich na transcon.cz
>>>>
>>>>
>>>> ----- Original Message -----
>>>> *From:* Jan Půhoný <konference na puhy.cz>
>>>> *To:* HW-news <hw-list na list.hw.cz>
>>>> *Sent:* Tuesday, January 14, 2014 9:37 AM
>>>> *Subject:* Re: Mikro C PIC - string - problém
>>>>
>>>> Díky všem za odpovědi.
>>>>
>>>> Zdá se, te strcpy funguje stejně jak s & tak bez &. Ještě to ale trochu
>>>> zlobí, když do prvni_r a druhy_r šahám přes takovýto zápis
>>>>
>>>>  extern unsigned char prvni_r[17]="                ";
>>>> extern unsigned char druhy_r[17]="                ";
>>>>
>>>>  prvni_r[8]=jednotky;
>>>> prvni_r[9]=desitky;
>>>> prvni_r[10]=':';
>>>>
>>>> z jiného c souboru stejného projektu.
>>>>
>>>> V hlavním c souboru s main void mám definici takto:
>>>>
>>>>  unsigned char prvni_r[17]="                ";
>>>> unsigned char druhy_r[17]="                ";
>>>>
>>>> Jak korektně přistupovat ke stejným proměnným z různých c souborů
>>>> projektu?
>>>>
>>>> Díky.
>>>>
>>>> Honza Půhoný
>>>>
>>>>
>>>>
>>>> Dne 13. ledna 2014 22:13 Martin Persich <persich na transcon.cz>napsal(a):
>>>>
>>>>>  A ještě jeden postřeh. Pokud se jedná o buffer pro 16-ti znakový LCD
>>>>> displej, tak pro použití funkce "strcpy()" je nezbytné, aby tento buffer
>>>>> měl délku 17 znaků (pro uložení ukončující "nuly" - '\0' ). Jinak dojde k
>>>>> nedefinovanému přepsání "následující" proměnné.
>>>>> Martin. persich na transcon.cz
>>>>>
>>>>>
>>>>>  ----- Original Message -----
>>>>> *From:* Aleš Novák <alesh.novak na email.cz>
>>>>> *To:* HW-news <hw-list na list.hw.cz>
>>>>> *Sent:* Monday, January 13, 2014 9:32 PM
>>>>> *Subject:* Re: Mikro C PIC - string - problém
>>>>>
>>>>> Nemelo by to byt spise takhle:
>>>>> stcrpy(prvni_r,"testovaci napis");
>>>>>
>>>>> Jmeno pole je samo o sobe pointer na jeho prvni polozku.
>>>>>
>>>>> Ales
>>>>>
>>>>>
>>>>> 13. ledna 2014, 20:31:59, napsal jste:
>>>>>
>>>>>
>>>>> Zkuste stcrpy(&prvni_r,"testovaci napis");
>>>>>
>>>>>
>>>>>
>>>>> LK
>>>>>
>>>>>
>>>>> Dne 13.1.2014 19:53, Jan Půhoný napsal(a):
>>>>> Zdravím konferenci,
>>>>>
>>>>> mám tady takový lama problém v C (Mikro C pro PIC řady 16).
>>>>>
>>>>> V proměnné prvni_r mám znaky pro první řádek LCD displeje (pak to
>>>>> vypisuji přes Lcd_Out(1,1prvni_r); - to funguje.
>>>>>
>>>>> //definice
>>>>>
>>>>> unsigned char prvni_r[16];
>>>>>
>>>>> //editace znaků
>>>>>
>>>>> prvni_r[5] = 223;
>>>>> prvni_r[6] = 'C';
>>>>> prvni_r[7] ='  ';
>>>>>
>>>>> Lcd_Out(1,1prvni_r); //na pozici 5,6,7 mi to vypíše °C
>>>>> to funguje ok
>>>>>
>>>>> Proč ale nefunguje toto:
>>>>>
>>>>> prvni_r="testovaci napis";
>>>>>
>>>>> na tomto řádku to hází error: Assigning to non-lvalue
>>>>>
>>>>> Co s tím, abych tam mohl dávat jak celé řetězce a zároveň editovat
>>>>> jednotlivé znaky?
>>>>>
>>>>> Díky,
>>>>>
>>>>> Honza Půhoný
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz
>>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> * -- S pozdravem, Aleš alesh.novak na email.cz <alesh.novak na email.cz>
>>>>> ------------------------------ *
>>>>>
>>>>>
>>>
>>  ------------------------------
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140114/afe5c976/attachment.html>


Další informace o konferenci Hw-list