/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
embedded funktionspointer
Fra : Troels Thomsen


Dato : 11-12-03 19:34


Jeg har brug for at hoppe frem og tilbage mellem en applikation og en
bootloader i en atmel mega128

void (*app_funcptr)( void ) = 0x0000; // function pointer to
application
Accepteres af compileren og virker

void (*boot_funcptr)( void ) = 0xf800; // function pointer to
boot-loader
Dette vil compileren (iar ewb 2.28) ikke fordi den ikke kan konvertere fra
unsigned int
til
void(* _near)()

Jeg kan ikke finde ud af at caste rigtigt, måske findes en pragma. ?

mvh Troels




 
 
Troels Thomsen (11-12-2003)
Kommentar
Fra : Troels Thomsen


Dato : 11-12-03 19:55

>
> void (*boot_funcptr)( void ) = 0xf800;
>
> Jeg kan ikke finde ud af at caste rigtigt, måske findes en pragma. ?
>

typedef void (*myType)(void);
myTypeapp_funcptr = 0x0000;
myTypeboot_funcptr = (myType)0xf800;

.... endelig




Byrial Jensen (11-12-2003)
Kommentar
Fra : Byrial Jensen


Dato : 11-12-03 21:18

Troels Thomsen wrote:
> Jeg har brug for at hoppe frem og tilbage mellem en applikation og en
> bootloader i en atmel mega128
>
> void (*app_funcptr)( void ) = 0x0000; // function pointer to
> application
> Accepteres af compileren og virker

Ja, det er en NULL-pointer. Der er ingen garanti for at den
repræsenteres som tallet 0.

> void (*boot_funcptr)( void ) = 0xf800; // function pointer to
> boot-loader
> Dette vil compileren (iar ewb 2.28) ikke fordi den ikke kan konvertere fra
> unsigned int
> til
> void(* _near)()

Det er nødvendigt med et cast.

> Jeg kan ikke finde ud af at caste rigtigt, måske findes en pragma. ?

void (*boot_funcptr)(void) = (void (*)(void)) 0xf800;

Funktionspointere bliver tit nemmere at arbejde med hvis man laver en
typedef:

typedef void(*fptr)(void);
fptr boot_funcptr2 = (fptr) 0xf900;


Søg
Reklame
Statistik
Spørgsmål : 177549
Tips : 31968
Nyheder : 719565
Indlæg : 6408820
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste