Ср сен 13, 2017 17:16:48
Сб сен 16, 2017 10:37:09
Сб сен 16, 2017 18:59:48
Вс окт 15, 2017 16:11:04
Вс окт 15, 2017 20:03:44
//формируем паузу
int delay=200;
if (BlockSize>0x13) delay=500;//передавался файл
for(unsigned short n=0;n<delay;n++)
{
_delay_ms(10);
if (BUTTON_SELECT_PIN&(1<<BUTTON_SELECT))//выход
{
TAPE_OUT_PORT&=0xff^(1<<TAPE_OUT);
return;
}
if (BUTTON_CENTER_PIN&(1<<BUTTON_CENTER))//пауза
{
_delay_ms(200);
while(1)
{
if (BUTTON_CENTER_PIN&(1<<BUTTON_CENTER)) break;
}
_delay_ms(200);
}
if (BUTTON_UP_PIN&(1<<BUTTON_UP))//на блок вперёд
{
_delay_ms(200);
new_block=block+1;
break;
}
if (BUTTON_DOWN_PIN&(1<<BUTTON_DOWN))//на блок назад
{
_delay_ms(200);
if (block>0) new_block=block-1;
break;
}
}
block=new_block;
break;
}
Пн окт 16, 2017 15:23:57
/**
* @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
*/
void TIM6_DAC_IRQHandler(void)
{
/* USER CODE BEGIN TIM6_DAC_IRQn 0 */
/* USER CODE END TIM6_DAC_IRQn 0 */
HAL_TIM_IRQHandler(&htim6);
/* USER CODE BEGIN TIM6_DAC_IRQn 1 */
if (TapeOutMode==TAPE_OUT_STOP)
{
index16=16;//первоначальное значение бита
byte =0;//первоначальное значение байта
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET);//установка в ноль
//HAL_GPIO_TogglePin(GPIOD, LD6_Pin);
return;
}
if (TapeOutVolume==true)
{
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_SET);
TapeOutVolume=false;
}
else
{
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET);
TapeOutVolume=true;
}
//выводим пилот-тон
if (TapeOutMode==TAPE_OUT_LEAD)
{
TIM6->PSC = 13011;//начальное значение таймера
if (tim6_countersec > 0) tim6_countersec--;
else
{
tim6_countersec = 3223;
TapeOutMode=TAPE_OUT_SYNCHRO_1;
return;
}
}
//выводим синхросигнал 1
if (TapeOutMode==TAPE_OUT_SYNCHRO_1)
{
TIM6->PSC =4700;//начальное значение таймера
TapeOutMode=TAPE_OUT_SYNCHRO_2;
return;
}
//выводим синхросигнал 2
if (TapeOutMode==TAPE_OUT_SYNCHRO_2)
{
TIM6->PSC = 4300;//начальное значение таймера
TapeOutMode=TAPE_OUT_DATA;
index16=16;
byte=0;
BytesCount=0;//обнуляем счетчик байт
return;
}
//передаём данные
if (TapeOutMode==TAPE_OUT_DATA)
{
if (index16>=16)
{
if (BytesCount>=sz)
{
TapeOutMode=TAPE_OUT_STOP;
//TapeOutMode=TAPE_OUT_PAUSE;//ставим паузу по оканчанию процесса
//sz=FioNextHead();//читаем размер блока
BytesCount = 0;
return;
}
byte=FioNextByte();//читаем байт из буфера
byte_temp = byte;
index16=0;//первоначальное значение бита
BytesCount++;//общий счетчик байт файла
}
printf("byte_temp %X\r\n", byte_temp);
//выдаём бит
if (byte&128) {
TIM6->PSC = 10265;//начальное значение таймера
printf("bit%u =1 byte %u\r\n", index16,BytesCount);
}
else {
TIM6->PSC = 5132;//начальное значение таймера
printf("bit%u =0 byte %u\r\n", index16,BytesCount);
}
if ((index16%2)==1) byte<<=1;
index16++;
return;
}
/*---------- файла tap-------------------------------------------------------*/
void read_tap(uint16_t id)
{
f_open(&file_tap, fm_curfiles[id]->text, FA_OPEN_EXISTING | FA_READ);
printf("Open tap\r\n");
sz=FioNextHead();
TapeOutMode=TAPE_OUT_LEAD;
//TapeOutVolume=0;
//printf("Read 0x13 bite tap\r\n");
while(1)
{
if (TapeOutMode==TAPE_OUT_STOP)
{
sz=FioNextHead();
HAL_Delay(500);
TapeOutMode=TAPE_OUT_LEAD;
//TapeOutVolume=0;
}
keyboard_update();
gui_draw();
//sys_start_threads();//опрос экрана и клавиатуры
}
}
if (TapeOutVolume==true)
{
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_SET);
TapeOutVolume=false;
}
else
{
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET);
TapeOutVolume=true;
}
Пн окт 16, 2017 20:01:32
У меня синхроимпульсы инверсные
то загрузка пойдет но на последнем блоке окончится ошибкой. Не хватит последнего бита
if (TapeOutMode==TAPE_OUT_STOP)
{
TAPE_OUT_PORT&=0xff^(1<<TAPE_OUT);
return;
}
Вт окт 17, 2017 05:54:51
if (TapeOutMode==TAPE_OUT_STOP)
{
TAPE_OUT_PORT&=0xff^(1<<TAPE_OUT);
return;
}
if (TapeOutVolume==true)
{
TAPE_OUT_PORT|=1<<TAPE_OUT;
TapeOutVolume=false;
}
else
{
TAPE_OUT_PORT&=0xff^(1<<TAPE_OUT);
TapeOutVolume=true;
}
if (TapeOutMode==TAPE_OUT_STOP)
{
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET);//установка выхода в ноль
return;
}
if (TapeOutVolume==1)
{
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET);//установка выхода в ноль
TapeOutVolume=0;
}
else
{
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_SET);//установка выхода в еденицу
TapeOutVolume=1;
}
if (TapeOutMode==TAPE_OUT_STOP)
{
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_SET);//установка выхода в еденицу
return;
}
if (TapeOutVolume==1)
{
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_SET);//установка выхода в еденицу
TapeOutVolume=0;
}
else
{
HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET);//установка выхода в ноль
TapeOutVolume=1;
}
Вт окт 17, 2017 06:51:11
Вт окт 17, 2017 06:59:41
Вт окт 17, 2017 08:17:02
Может нужна какая ни какая развязка?
Вт окт 17, 2017 09:34:38
Вт окт 17, 2017 12:56:41
Грузится и музыку играет в игре виснет.
Вт окт 17, 2017 13:04:25
Вт окт 17, 2017 14:36:50
Еще такой момент, данные я постоянно с карты считываю. То есть не буферизирую. За каждым байтом на карту
Вт окт 17, 2017 15:02:17
Вт окт 17, 2017 15:21:53
не могу выловить в чем проблема. вроде проц мощный F407 168 мегагерц. SD CARD по SDIO
Вт окт 17, 2017 17:53:04
Вт окт 17, 2017 18:06:26
я только в качестве отладки на таком процессоре пока. потом хочу поменьше поставить.
Отловил анализатором глюк.
Вт окт 17, 2017 18:45:03