Further work, but DO NOT USE HDMI else does not Working

This commit is contained in:
F5OEO 2019-01-03 12:06:15 +00:00
parent bb613f90ab
commit 1a1f4999ff
2 changed files with 53 additions and 17 deletions

View file

@ -634,6 +634,7 @@ void SimpleTestBurstFsk(uint64_t Freq)
void SimpleTestAtv(uint64_t Freq) void SimpleTestAtv(uint64_t Freq)
{ {
//int SR = 1000000;
int SR = 1000000; int SR = 1000000;
int FifoSize = 625 * 52; int FifoSize = 625 * 52;
unsigned char samples[FifoSize]; unsigned char samples[FifoSize];
@ -641,26 +642,60 @@ void SimpleTestAtv(uint64_t Freq)
atv atvtest(Freq, SR, 14, 625); atv atvtest(Freq, SR, 14, 625);
atvtest.start(); atvtest.start();
enum {patern_grey,patern_square,patern_move,patern_point};
int Mode=patern_move;
bool random_patern=true;
for(int frame=0;running;frame++) for(int frame=0;running;frame++)
{ {
int x,y;
y=rand()%625;
x=rand()%52;
if((frame%50==0)&&(random_patern))
Mode=rand()%(patern_point+1);
for(int i=0;i<625;i++) for(int i=0;i<625;i++)
{ {
for (int j = 0; j < 52; j++) for (int j = 0; j < 52; j++)
{ {
if(i%2==0) switch(Mode)
samples[i/2*52+j]=((i+j*frame)%255); {
case patern_grey:
{
samples[i*52+j]=255*(j/52.0);
}
break;
case patern_square:
{
if(i%64<(frame%64))
samples[i*52+j]=(j%16<8)?255*(j/52.0):255*(1-(j/52.0));
else else
samples[i/2*52+j+52*312]=((i+j*frame)%255); samples[i*52+j]=(j%16<8)?255:0;
/*if(i%16<8) }
samples[i*52+j]=(j%8<4)?0:255; break;
case patern_move:
{
samples[i*52+j]=((i+j*frame)%255);
}
break;
case patern_point:
{
if((i==y)&&(j==x))
samples[i*52+j]=255;
else else
samples[i*52+j]=(j%8<4)?255:0;*/ samples[i*52+j]=0;
}
break;
}
} }
} }
//atvtest.SetTvSamples(samples,FifoSize/4); //atvtest.SetTvSamples(samples,FifoSize/4);
atvtest.SetFrame(samples,625); atvtest.SetFrame(samples,625);
usleep(40000); usleep(40000);
} }

View file

@ -25,7 +25,7 @@ This program is free software: you can redistribute it and/or modify
#include <stdlib.h> #include <stdlib.h>
//#define CB_ATV (6 * 4 + 5 * 4 + 5 * 4 + (304 + 305) * (4 + 52 * 2)) //#define CB_ATV (6 * 4 + 5 * 4 + 5 * 4 + (304 + 305) * (4 + 52 * 2))
#define CB_ATV 68000 #define CB_ATV 70000
atv::atv(uint64_t TuneFrequency, uint32_t SR, int Channel, uint32_t Lines) : dma(Channel, CB_ATV, Lines * 52 + 3) atv::atv(uint64_t TuneFrequency, uint32_t SR, int Channel, uint32_t Lines) : dma(Channel, CB_ATV, Lines * 52 + 3)
// Need 2 more bytes for 0 and 1 // Need 2 more bytes for 0 and 1
@ -38,7 +38,7 @@ atv::atv(uint64_t TuneFrequency, uint32_t SR, int Channel, uint32_t Lines) : dma
clkgpio::SetCenterFrequency(TuneFrequency, SampleRate); clkgpio::SetCenterFrequency(TuneFrequency, SampleRate);
clkgpio::SetFrequency(0); clkgpio::SetFrequency(0);
clkgpio::enableclk(4); // GPIO 4 CLK by default clkgpio::enableclk(4); // GPIO 4 CLK by default
syncwithpwm = false; syncwithpwm = true;
if (syncwithpwm) if (syncwithpwm)
{ {
@ -91,7 +91,7 @@ void atv::SetDmaAlgo()
for (int frame = 0; frame < 2; frame++) for (int frame = 0; frame < 2; frame++)
{ {
//Preegalisation //6*4*2FrameCB //Preegalisation //6*4*2FrameCB
for (int i = 0; i < 6 /*-frame*/; i++) for (int i = 0; i < 5 + frame; i++)
{ {
//2us 0,30us 1 //2us 0,30us 1
//@0 //@0
@ -247,7 +247,7 @@ void atv::SetDmaAlgo()
cbp++; cbp++;
} }
//(304+305)*(4+52*2+2)CB //(304+305)*(4+52*2+2)CB
for (int line = 0; line < /*305*/ 304 + frame; line++) for (int line = 0; line < 305/* 317 + frame*/; line++)
{ {
//@0 //@0
@ -370,11 +370,12 @@ void atv::SetFrame(unsigned char *Luminance, size_t Lines)
{ {
for (size_t x = 0; x < 52; x++) for (size_t x = 0; x < 52; x++)
{ {
int AmplitudePAD = (Luminance[i * 52 + x]/255.0) * 6 + 1; //1 to 7 int AmplitudePAD = (Luminance[i * 52 + x]/255.0) * 6.0 + 1; //1 to 7
// usermem[i* 52 + x] = (0x5A << 24) + (AmplitudePAD & 0x7) + (1 << 4) + (0 << 3); // Amplitude PAD
if (i % 2 == 0) // First field if (i % 2 == 0) // First field
usermem[i * 52 + x] = (0x5A << 24) + (AmplitudePAD & 0x7) + (1 << 4) + (0 << 3); // Amplitude PAD usermem[i* 52 /2 + x] = (0x5A << 24) + (AmplitudePAD & 0x7) + (1 << 4) + (0 << 3); // Amplitude PAD
else else
usermem[i * 52 + x] = (0x5A << 24) + (AmplitudePAD & 0x7) + (1 << 4) + (0 << 3); // Amplitude PAD usermem[(i-1)* 52/2 + x+52*312] = (0x5A << 24) + (AmplitudePAD & 0x7) + (1 << 4) + (0 << 3); // Amplitude PAD
} }
/*for (size_t x = 0; x < 52; x++) /*for (size_t x = 0; x < 52; x++)