Дорогие коты подскажите вчем проблема...фигня какаято получается...
Пишу под LPC1768 но куски своих програм тестирую на виндовых компиляторах.... (для работы с SPI памятью)
Память устроена как 64 сектора в каждом секторе 1024 стр, и в каждой странице 256 байт...
В контроллере я создаю массив на 256 байт, и по 16 байт я его заполняю, постепенно... когда заполнится я его буду писать на флеш, чистить и заного заполнять
проблема в том что вывод DATABUF %s",&FlashDataBuf[0]); меня не радует, выплевывается почему-то только 16байт а не все 256...пробовал по разному никак
баян вот такой
Код: Выделить всё
#include <stdio.h>
#include <stdlib.h>
typedef unsigned long uint32_t;
typedef unsigned char uint8_t;
unsigned char FlashDataBuf[256];
unsigned char FlashPrepBuf[16];
typedef struct {
uint32_t RTC_Sec; /* Second value - [0,59] */
uint32_t RTC_Min; /* Minute value - [0,59] */
uint32_t RTC_Hour; /* Hour value - [0,23] */
uint32_t RTC_Mday; /* Day of the month value - [1,31] */
uint32_t RTC_Mon; /* Month value - [1,12] */
uint32_t RTC_Year; /* Year value - [0,4095] */
uint32_t RTC_Wday; /* Day of week value - [0,6] */
uint32_t RTC_Yday; /* Day of year value - [1,365] */
} RTCTime;
RTCTime local_time;
uint32_t GetFFlashADR(void)
{
uint32_t BAddr=0;
uint32_t TimeInSec=0;
TimeInSec=((uint32_t)((local_time.RTC_Mday-1)* 86400 + local_time.RTC_Hour * 3600 + local_time.RTC_Min * 60 + local_time.RTC_Sec)/5+16);
BAddr=TimeInSec*16;
return BAddr;
}
void FBTransfer(uint32_t FAddr,uint8_t* buff)
{
uint8_t num;
uint8_t i;
num=FAddr & 0xFF;
for (i=0; i<16;i++)
{
printf("i=%d num=%d\r\n",i, num);
FlashDataBuf[i+num] = *buff;
buff++;
if ((i+num)==255) { printf("DATABUF %s",&FlashDataBuf[0]); break; }
}
}
int main(void)
{
int i,Z;
local_time.RTC_Sec=0;
local_time.RTC_Min=0;
local_time.RTC_Mday=1;
for(Z=0; Z<15; Z++)
{
FlashPrepBuf[Z]=Z+45;
}
for (i=0; i<61; i=i+5)
{
local_time.RTC_Sec=i;
FBTransfer(GetFFlashADR(),&FlashPrepBuf[0]);
if (i==60) {local_time.RTC_Sec=0; local_time.RTC_Min++; i=0;}
if(local_time.RTC_Min==2){break;}
printf("0x%X %d \r\n",GetFFlashADR(),i);
}
FBTransfer(GetFFlashADR(),&FlashPrepBuf[0]);
return 0;
}
Код: Выделить всё
0x1E0 10
i=0 num=240
i=1 num=240
i=2 num=240
i=3 num=240
i=4 num=240
i=5 num=240
i=6 num=240
i=7 num=240
i=8 num=240
i=9 num=240
i=10 num=240
i=11 num=240
i=12 num=240
i=13 num=240
i=14 num=240
i=15 num=240
DATABUF -./0123456789:;0x1F0 15