#ifndef __RAM_FUNCTIONS_C
#define __RAM_FUNCTIONS_C
#include "opora.h"
#include "RamFunctions.h"
void CallRAM(uint32_t address)
{
//unsigned char * ptr;
//ptr=(uint32_t*)address;
PORTE->CLRTX=0x40;
((void(*)(void))(address))();
PORTE->SETTX=0x40;
}
//╘єэъЎш фы чряшёш юфэюую срщЄр фрээ√ї т ╬╟╙
//╧рЁрьхЄЁ√ address - рфЁхё, ё ъюЄюЁюую эхюсїюфшью чряшё√трЄ№ фрээ√х т ╬╟╙
//┬ючтЁр∙рхь√ї чэрўхэшщ эхЄ
void WriteByteToRAM(uint32_t address, unsigned char b)
{
unsigned char * ptr = (unsigned char *)address;
PORTE->CLRTX=0x40;
*ptr = b;
PORTE->SETTX=0x40;
}
//╘єэъЎш фы чряшёш фрээ√ї юЄ 0 фю 0x3FFFF т ╬╟╙
//╧рЁрьхЄЁ√ address - рфЁхё, ё ъюЄюЁюую эхюсїюфшью чряшё√трЄ№ фрээ√х т ╬╟╙
// inv - Їыру чряшёш шэтхЁёэюую чэрўхэш т ярь Є№ ╬╟╙
//┬ючтЁр∙рхь√ї чэрўхэшщ эхЄ
void WriteDataToRAM(uint32_t address, uint32_t inv)
{
uint32_t* ptr;
uint32_t tmp;
ptr=(uint32_t*)address;
PORTE->CLRTX=0x40;
if(!inv)
for(tmp=0;tmp<0x40000;tmp++) {
*ptr++ =tmp;
}
else
for(tmp=0;tmp<0x40000;tmp++) {
*ptr++ =(~tmp);
}
PORTE->SETTX=0x40;
}
//╘єэъЎш фы яЁютхЁъш чряшёрээ√ї фрээ√ї т ╬╟╙
//╧рЁрьхЄЁ√ address - рфЁхё, ё ъюЄюЁюую эхюсїюфшью ЄхёЄшЁютрЄ№ фрээ√х т ╬╟╙
// inv - Їыру яЁютхЁъш шэтхЁёэ√ї чэрўхэшщ т ярь Єш ╬╟╙
//┬ючтЁр∙рхьюх чэрўхэшх: 0 - фрээ√х т ярь Єш юЄышўр■Єё юЄ чряшёрээ√ї
// 1 - тёх фрээ√х т ярь Єш ёютярфр■Є ё чряшёрээ√ьш
uint32_t TestData(uint32_t address, uint32_t inv)
{
uint32_t *ptr, tmp, data, res;
ptr=(uint32_t*)address;
PORTE->CLRTX=0x40;
res=1;
if(!inv)
{
for(tmp=0;tmp<0x40000;tmp++)
{
data=*ptr++;
if(data!=tmp)
{
res=0;
break;
}
}
}
else
{
for(tmp=0;tmp<0x40000;tmp++)
{
data=*ptr++;
if(data!=(~tmp))
{
res=0;
break;
}
}
}
PORTE->SETTX=0x40;
return res;
}
#endif //__RAM_FUNCTIONS_C