[PIC] Räkna ut ACQT & ADCS på 18F4221

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av Pajn »

Att mäta tempen är bara en del av programmet. Efter att jag är klar med det gör jag

Kod: Markera allt

tmp = 0;
tmp är som hörs på namnet temporär så jag ser till att tömma den efter att jag har
använt den.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av sodjan »

Det där "tömmer" ingenting!
Det "fyller" tmp med värdet "noll"...

0 är absolut inte detsamma som "tom"!

Det var det jag var lite rädd för att du menade.
Det är en allvarlig felsyn på variabler, värden o.s.v.

Om du har andra rutiner som använder tmp och som förutsätter
att tmp innehåller 0 från början, så är det en allvarlig bugg.
Du bör tänka igenom det hela ordentligt för att undvika underliga
problem/buggar i framtiden. Du tänker helgalet kring just det där...
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av Pajn »

Fyller med värdet noll eller tömmer, vad är skillnaden?
tmp blir lika med 0 och jag kan använda den i en loop
eller som ovan eller något annat. Resultatet är exakt
samma som när jag initierar variabeln med värdet 0.

Om jag tömmer/fyller tmp med 0 efter att jag är klar
med den eller när jag ska använda den spelar heller
ingen roll.

Självklart kan man inte göra så i en interrupt om man
också använder variabeln utanför interrupten, men det
är en annan sak.
Batman
Inlägg: 97
Blev medlem: 11 december 2010, 15:05:42
Ort: Umeå

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av Batman »

För att få en disassembly listing kan du titta i Window Menyn, Output > Disassembly Listing File. Där finns den för mig i MPLAB X 1.10, fast jag använder inte C18 i det projektet jag tittade på.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av Pajn »

@Batman
Sedär, tackar!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av sodjan »

> Fyller med värdet noll eller tömmer, vad är skillnaden?

Det är en helt fundamental skillnad! :-)
En variablel *kan* inte vara tom, den har alltid ett värde.

Man kan ha en separat flagga som signalerar att tmp är "tom",
men tmp i sig kan ju ju då innehålla vad som helst. Och "tom"
betyder mer korrekt "för tillfället oanvänd", vilket är viktigare.

Nej, det är sättet att se på det hela, att du faktiskt "tömmer"
någonting, som är fel. :-)

> tmp blir lika med 0 och jag kan använda den i en loop...

Du menar att du någon annarstans i programmet *förutsätter*
att tmp = 0 ? Helgalet och "a bug waiting to happen"... :-)
*Självklart* ska loopen självt initiera tmp till 0 och det ska inte
spela någon som helst roll vilket värde som finns kvar från någon
annan rutin som också använder tmp.

> eller som ovan eller något annat. Resultatet är exakt
> samma som när jag initierar variabeln med värdet 0.

Ja, slutresultatet, när det fungerar, och med lite tur, kanske
blir detsamma, men det gör det inte mindre fel i grunden.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av Pajn »

>En variablel *kan* inte vara tom, den har alltid ett värde.
Just därför går det att använda ordet tömmer när man sätter
en primitiv datatyp till 0.

>Du menar att du någon annarstans i programmet *förutsätter*
>att tmp = 0 ? Helgalet och "a bug waiting to happen"... :-)
>*Självklart* ska loopen självt initiera tmp till 0 och det ska inte
>spela någon som helst roll vilket värde som finns kvar från någon
>annan rutin som också använder tmp.
Visst kan jag ändra så att den börjar med att tömma :P tmp, inte
så jobbigt.
Men det är lite intressant att veta vad felet är. tmp kommer inte
att börja "sväva iväg" och helt plötsligt innehålla något annat.

När vi ändå fortsätter i den här tråden passar jag på att fråga om
jag vinner någon noggrannhet på att använda en RTC vs. att ha
koll på klockan i PICen. Personligen tycker jag att jag lika gärna
skulle kunna använda samma kristall som ska driva RTCn till att
driva TMR1 och få samma noggrannhet.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av sodjan »

> > En variablel *kan* inte vara tom, den har alltid ett värde.

> Just därför går det att använda ordet tömmer när man sätter
> en primitiv datatyp till 0.

Trollar du bara eller fattar du inte vad du skriver för dumheter?

> Men det är lite intressant att veta vad felet är.

Det är inte ett tekniskt fel, det är du som har problem med
din metodik. Men välj själv om du vill fortsätta med dumheterna.

> tmp kommer inte att börja "sväva iväg" och helt plötsligt innehålla något annat.

Felet är att du tror att det över huvudtaget spelar någon roll. All kod måste
förutsätta att tmp kan vara vad som helst innan den används. Jävligt
märkligt att det ska behöva sägas över huvudtaget !!

När det gäller RTC så finns det ju mer en noggranhet att ta hänsyn till.
En RTC gör mer än att bara "räkna sekunder". Vissa PICs har inbyggd RTC
som även har dessa funktioner, hantering av skottår o.s.v.
Skriv svar