Sida 2 av 2
Re: Läsa 32 bit från EEprom
Postat: 18 september 2009, 17:00:42
av sodjan
Ja, det faktiska problemet som denna beräkning ska lösa vore
väldigt intressant. När det gäller koordinatberäkningar så hänger
det ju helt på vad som ska beräknas. Sen finns det metoder som
table-lookup och olika aproximationer och interpoleringar som
ofta kan användas för att uppnå ganska hög noggranhet utan allt
för komplexa beräkningar.
Re: Läsa 32 bit från EEprom
Postat: 21 september 2009, 11:17:54
av Borrmaskin
Vilken C-kompilator använder du?
Svar:
Kompilator: Hi-tech Pro v9,63
Mplab
Tanken är att man ska kunna spara positioner som modellbilen ska kunna köra till istället för att ta med sig en pic programmerare tänkte jag en USB sladd från datorn till pic . Ska jag använda mig av pic 18f2550 på kjell&co som man kan koppla in på usb och göra något mindre program som kan överföra koordinaterna till EEPROM minnet i pic. Innan jag tänker göra det måste jag hitta något sätt att läsa och skriva till och från EEPROM minnet med 32 bitar float tal annars är det ingen ide att använda USB om det inte går.
union
{
long TALnamn;
unsigned char byte[4];
} TAL;
double Lon;
TAL = TAL * 10; <- här klagar kompilatorn på ” type conflict ”
Har tittat på union men då har jag funderat på att skifta in TAL till Lon. För att kunna använda talet i en matematisk formel hur ska man annars göra om en union till 32 bitar?
Det tycker jag värkar vara lite onödigt krångligt finns det inget bättre sätt?
Re: Läsa 32 bit från EEprom
Postat: 21 september 2009, 11:19:48
av bos
> Kompilator: Hi-tech Pro v9,63
Titta då på datatypen "eeprom" i manualen.
Re: Läsa 32 bit från EEprom
Postat: 21 september 2009, 11:49:13
av sodjan
> hitta något sätt att läsa och skriva till och från EEPROM minnet med 32 bitar float tal
*Allt* i processorn är ju bara bytes. Oavsett om det i källkoden kallas/tolkas som
int, float eller något annat.
I din union, är det inte "TALnamn" du ska multipicera med 10 ?
Alltså TALnam = TALnamn * 10 ? Den 4 os char arrayen som du
gör en union med är ju bara för att läsa floaten byte-för-byte, eller
missar jag något ?
Det är också fortfarande lite oklart vad du vill göra i PIC processorn.
Re: Läsa 32 bit från EEprom
Postat: 21 september 2009, 12:04:39
av Icecap
En union betyder bara att de variabler som deklareras inne i den delar samma minnesplats.
För att definiera de olika element ska du skriva
TAL.TALnamn = TAL.TALnamn * 10;
Och i C kan det vara effektivare att skriva
TAL.TALnamn *= 10;
vilket gör exakt lika, fördelen är att kompilern kan veta att den inte behöver ladda om register fler gångar.