Chyba u PIC18STD?
Michal HW
michalgregor@centrum.cz
Sobota Listopad 8 10:14:37 CET 2008
Tak nevim co zase v Hitechu vyvadeli. Starsi verze neumely kopirovat
structury z externi pameti do vnitrni (nebo neopak nejsem si jist).
Takze jsem to chtel zkusit z novou verzi 9.51PL3:
//***********************************************************
/*
Test presunu structur
PIC 18F8723
External SRAM 128KB
--RAM=default,+40000-5FFFF --EMI=bytewrite
*/
//***********************************************************
#include <htc.h>
__CONFIG(1, HS & IESODIS & FCMDIS);
__CONFIG(2, PWRTDIS & WDTPS1 & WDTDIS & BORDIS & BORV46);
__CONFIG(3, WAITDIS & BW8 & ABW20 & XMCU & CCP2RC1 & ECCPRE & LPT1EN &
MCLREN);
__CONFIG(4, XINSTDIS & STVRDIS & LVPDIS & BBSIZ1K & DEBUGEN);
__CONFIG(5, UNPROTECT);
__CONFIG(6, WRTEN);
__CONFIG(7, TREN);
//***********************************************************
typedef struct {
unsigned char Count;
unsigned char Sum;
unsigned char Buffer[256];
}ANY_STRUCT;
static volatile far ANY_STRUCT xRAM_Struct;
static volatile ANY_STRUCT Basic_RAM_Struct;
//***********************************************************
void main(void) {
xRAM_Struct.Count = 5;
xRAM_Struct.Sum = 6;
do {
if ( 0 == ( PORTC & 1 ) ) {
Basic_RAM_Struct = xRAM_Struct;
++Basic_RAM_Struct.Count;
Basic_RAM_Struct.Sum = ( Basic_RAM_Struct.Sum + PORTB);
Basic_RAM_Struct.Buffer[Basic_RAM_Struct.Count] = PORTB;
xRAM_Struct = Basic_RAM_Struct;
}
} while(1);
}
Tohle skutecne zapisuje do xRAM:
xRAM_Struct.Count = 5;
xRAM_Struct.Sum = 6;
ale xRAM_Struct = Basic_RAM_Struct; kopiruje z interni do interni pameti.
Je to jednoduchy priklad, snad jsem tam neudelal chybu. Pokud je chyba na
strane Hitechu tak nevim co rici. Snad jedine zlaty asembler.
Jdu to zkusit z verzi PIC18PRO.
Michal Gregor
Další informace o konferenci Hw-list