pointery C

Miroslav Draxal evik na volny.cz
Středa Květen 22 11:28:10 CEST 2013


Pánové, vy co děláte v MPLABx 1.80, tak pozor, v předchozích verzích bylo
správně, teď je tam bug u práce s FSR2L, FSR2H, INDF2 ( nenačítá se korektní
hodnota do INDF2 podle adresy FSR2) to byla další věc s tím pointerem,
protože jsem to ladil v sw simulátoru, a stále to házelo nesmysly. V ICD(3)
to načíta hodnyty OK. Míra 

-----Original Message-----
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Luboš Melichar
Sent: Wednesday, May 22, 2013 10:39 AM
To: HW-news
Subject: Re: pointery C

Asi už to tu padlo ale.. keep it simple, místo tohoto..

(*((_ProgramEEprom*) pTest)).Mesic

je přece hezčí a čitelnější toto..

((_ProgramEEprom*) pTest)->Mesic


2013/5/22 Miroslav Draxal <evik na volny.cz>

> Doufám, že nevadí kousek kódu.****
>
> Nejprve si jednou nastavím začátek bufferu adresu do ukazatele, a pak
> jí pouze inkrementuji. Nemůže být problém v tomhle? Jakmile to přeteče
> adresování 255, tak to neskočí do další stránky. Míra     ****
>
> ** **
>
> for (Program = 0; Program <= 2; Program++)****
>
>     {****
>
>                pTest = (char*)
> &ProgramRAM[Program][RAM_AutoMesic];****
>
>                if ((*((_ProgramEEprom*) pTest)).Mesic == 0 ||
> (*((_ProgramEEprom*) pTest)).Mesic > 12)//kontrola mezí****
>
>                    (*((_ProgramEEprom*) pTest)).Mesic = 1;****
>
>                tmp = (*((_ProgramEEprom*) pTest)).Mesic;****
>
> ** **
>
>                pTest++; //RAM_Den****
>
>                if (*pTest == 0)****
>
>                    *pTest = 1;****
>
>                else if (*pTest > MesicDnu [tmp])****
>
>                    * pTest = MesicDnu [tmp];****
>
> ** **
>
>                pTest++; //RAM_Hodin****
>
>                if (*pTest > 23)****
>
>                    *pTest = 0;****
>
> ** **
>
>                pTest++; //RAM_Minut****
>
>                if (*pTest > 59)****
>
>                    *pTest = 0;****
>
> ** **
>
>                pTest++; //RAM_ZaDnu****
>
>                if (*pTest > RAM_ZaDnuMaxSet)****
>
>                    *pTest = 0;****
>
> ** **
>
>                pTest++; //RAM_CyklProgram****
>
>                if (*pTest > RAM_CyklProgMaxSet)****
>
>                    *pTest = 0;****
>
> ** **
>
>                for (ProgPolSekce = 0; ProgPolSekce <= MaxProgPolSekce;
> ProgPolSekce++)****
>
>                {****
>
>                    pTest++; //RAM_CisloSekce****
>
>                    if (*pTest > PocetSekci)//test číslo sekce****
>
>                               *pTest = 1;****
>
> ** **
>
>                    pTest++; //test čas sekce****
>
>                    if (*pTest > CasSekceMax)****
>
>                               *pTest = 1;****
>
>                    tmp = *pTest;****
>
> ** **
>
>                    pTest++; //test čas čerpadla sekce****
>
>                    if (*pTest > tmp)****
>
>                               *pTest = tmp;****
>
> ** **
>
>                    pTest++; //test čas prolnutí pauza****
>
>                    if ((*((_ProgramEEprom*) pTest)).ProlnutiPauza.cas
> >
> CasSekceMax)****
>
>                               *pTest = 0; //neber v úvahu
> prolnutí/pauza - nastav natvrdo na pauza OFF****
>
>                    tmp = (*((_ProgramEEprom*)
> pTest)).ProlnutiPauza.cas;**
> **
>
> ** **
>
>                    pTest++; //test čerpadlo prolnutí****
>
>                    if (*pTest > tmp)****
>
>                               *pTest = tmp;****
>
>                }****
>
>     }****
>
> }****
>
> ** **
>
> *From:* hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz]
> *On Behalf Of *Ladislav Vaiz
> *Sent:* Wednesday, May 22, 2013 7:55 AM
>
> *To:* HW-news
> *Subject:* Re: pointery C****
>
> ** **
>
> Normu jsem nečetl, třeba k tomu Jano nebo Ced dodají něco zajímavého,
>
> ale v praxi to není pravda, viz Debian AMD64:
>
> checking size of char... 1
> checking size of short... 2
> checking size of int... 4
> checking size of long... 8
> checking size of long long... 8
> checking size of void *... 8
>
> L.
>
> Pavel Hudecek napsal(a):
> > To je nějaké divné. Pointer by měl být vždy int, ať už ukazuje na
> > cokoli. Int je právě tak definován: Typ určený k adresování na dané
> > platformě, akorát navíc se znaménkem. Proto má na různých
> > platformách různý počet bitů.
> >
> > Ale třeba je to v Hitecu jinak.
> >
> > PH
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> ****
>
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 8359
> (20130521) __________
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz****
>
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 8359
> (20130521) __________
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>


--
Vy závodíte, my měříme.
http://www.casomira-ewitis.cz/
https://www.facebook.com/casomira.ewitis


__________ Informace od ESET NOD32 Antivirus, verze databaze 8359 (20130521)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz






__________ Informace od ESET NOD32 Antivirus, verze databaze 8360 (20130522)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz




Další informace o konferenci Hw-list