We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello, I am trying to check if addresses bus and data bus are well configured in my external RAM memory. I have done this algorithm
#include <XC164.h> #define low_adress 0x400000; #define high_adress 0x410000; #define high_data 0xFF; #define low_data 0x00; void main (void) { static double idata j,i,k; int xhuge *DIR; DIR = 0x400000; /* DATA BUS TEST */ for (j = low_adress; j <= high_adress; j++) { *DIR = 0x55; // I write 0101 0101 if (*DIR != 0x55) P3^3 = 1; // If what I have read is diferent to what I have written, I switch on an alarm *DIR = 0xAA; // I write 1010 1010 if (*DIR != 0xAA) P3^3 = 1; // If what I have read is diferent to what I have written, I switch on an alarm DIR++; } /* ADRESSES BUS TEST */ DIR = 0x400000; for (i = low_adress; i < high_adress; i = i + 0xFF;) { for (k = low_data; k < high_data ; k++) { *DIR = k; DIR++; } }
but the compiler throws errors. My RAM memory is mapped from 0x400000 to 0x410000 (64kB). Why does the compiler throw this errors?
Build target 'Target 1' assembling START_V2.A66... compiling PruebaRA.c... PRUEBARA.C(17): error C25: syntax error near '=' PRUEBARA.C(17): error C25: syntax error near ';' PRUEBARA.C(17): error C25: syntax error near ')' PRUEBARA.C(20): error C25: syntax error near 'if' PRUEBARA.C(20): error C25: syntax error near 'P3' PRUEBARA.C(20): error C25: syntax error near '=' PRUEBARA.C(22): error C25: syntax error near 'if' PRUEBARA.C(22): error C25: syntax error near 'P3' PRUEBARA.C(22): error C25: syntax error near '=' PRUEBARA.C(24): error C25: syntax error near '}' PRUEBARA.C(29): error C25: syntax error near 'for' PRUEBARA.C(29): error C7: compilation aborted Target not created
ASC0_TBUF = memTestDataBus(pointer);
Will send the result without the use of a variable.
The datasheet (and possibly your external connections) should tell you where the memory is and how large it is - if your project doesn't know where the memory is, the compiler + linker will not be able to produce a project that makes use of the memory as expected.
But I want you to once more think about one important issue: If you let the memtest function test a memory cell that is used for stack or for storing any of your variables, you will not get the expected result. The function call may not even return.
John,
Don't try this stuff at home, or in your product! :-)
ASC0_TBUF = memTestDataBus(&memTestDataBus);
Here is my Memory mapping: img160.imagevenue.com/img.php
And here the indicated adresses y my project img133.imagevenue.com/img.php