first commit
This commit is contained in:
175
RCA_TEST/RCA_TEST.ino
Executable file
175
RCA_TEST/RCA_TEST.ino
Executable file
@@ -0,0 +1,175 @@
|
||||
|
||||
|
||||
#define _SYNC 0x00
|
||||
#define _BLACK 0x01
|
||||
#define _GRAY 0x02
|
||||
#define _WHITE 0x03
|
||||
|
||||
#define _LONG_SYNC 19
|
||||
#define _SHORT_SYNC 2
|
||||
#define _LONG_SYNC_DELAI 2
|
||||
#define _SHORT_SYNC_DELAI 30
|
||||
|
||||
#define _NB_PIXELS 29
|
||||
#define _NB_LIGNES 19
|
||||
|
||||
#define _COMPENS_BOUCLE 7
|
||||
#define _COMPENS_IF_SERIAL 17
|
||||
|
||||
byte memVideo[_NB_PIXELS][_NB_LIGNES];
|
||||
byte index, index2;
|
||||
byte shift;
|
||||
|
||||
void SPI_MasterInit(void)
|
||||
{
|
||||
/* Set MOSI and SCK output, all others input */
|
||||
DDRD = (1<<DDB0)|(1<<DDB1);
|
||||
/* Enable SPI, Master, set clock rate fck/16 */
|
||||
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
|
||||
}
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
pinMode (8, OUTPUT);
|
||||
pinMode (9, OUTPUT);
|
||||
digitalWrite (8, HIGH);
|
||||
digitalWrite (9, HIGH);
|
||||
// SPI_MasterInit();
|
||||
Serial.begin(19200);
|
||||
Serial.print ("GO");
|
||||
Serial.print (13);
|
||||
|
||||
for (index2 = 0; index2 < _NB_LIGNES; index2++)
|
||||
for (index = 0; index < _NB_PIXELS; index++)
|
||||
memVideo[index][index2] = _BLACK;
|
||||
/*memVideo[index][index2] = (index + index2) % 3 + 1;*/
|
||||
|
||||
memVideo[0][0] = _WHITE;
|
||||
}
|
||||
|
||||
int ligne;
|
||||
char c;
|
||||
int cx=0, cy=0;
|
||||
byte couleur = _BLACK;
|
||||
|
||||
void loop()
|
||||
{
|
||||
// SYNC VERT A
|
||||
|
||||
// ligne 1 LONG SYNC
|
||||
PORTB = _SYNC; delayMicroseconds(_LONG_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_LONG_SYNC_DELAI);
|
||||
|
||||
PORTB = _SYNC; delayMicroseconds(_LONG_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_LONG_SYNC_DELAI);
|
||||
|
||||
// ligne 2 LONG SYNC
|
||||
PORTB = _SYNC; delayMicroseconds(_LONG_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_LONG_SYNC_DELAI);
|
||||
|
||||
PORTB = _SYNC; delayMicroseconds(_LONG_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_LONG_SYNC_DELAI);
|
||||
|
||||
// ligne 3 MIXTE SYNC
|
||||
PORTB = _SYNC; delayMicroseconds(_LONG_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_LONG_SYNC_DELAI);
|
||||
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI);
|
||||
|
||||
// ligne 4 SHORT SYNC
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI);
|
||||
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI);
|
||||
|
||||
// ligne 5 SHORT SYNC
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI);
|
||||
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI-_COMPENS_BOUCLE);
|
||||
|
||||
// IMAGE
|
||||
|
||||
for (ligne = 0; ligne < 304; ligne++)
|
||||
{
|
||||
//** synchro
|
||||
|
||||
// HSync
|
||||
PORTB = _SYNC;
|
||||
delayMicroseconds(4);
|
||||
|
||||
// Black
|
||||
PORTB = _BLACK;
|
||||
delayMicroseconds(4);
|
||||
|
||||
//** image ligne 52 uS
|
||||
|
||||
for (index = 0; index < _NB_PIXELS; index++)
|
||||
{
|
||||
PORTB = memVideo[index][ligne>>4];
|
||||
PORTB = PORTB;
|
||||
PORTB = PORTB;
|
||||
}
|
||||
|
||||
delayMicroseconds(2); // 4 uS
|
||||
|
||||
PORTB = _BLACK;
|
||||
PORTB = _BLACK;
|
||||
PORTB = _BLACK;
|
||||
PORTB = _BLACK;
|
||||
PORTB = _BLACK;
|
||||
|
||||
PORTB = _BLACK;
|
||||
PORTB = _BLACK;
|
||||
PORTB = _BLACK;
|
||||
PORTB = _BLACK;
|
||||
|
||||
}
|
||||
|
||||
// SYNC VERT B
|
||||
|
||||
// ligne 310 LONG SYNC
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI);
|
||||
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI);
|
||||
|
||||
// ligne 311 SHORT SYNC
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI);
|
||||
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI);
|
||||
|
||||
// ligne 312 SHORT SYNC
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI);
|
||||
|
||||
PORTB = _SYNC; delayMicroseconds(_SHORT_SYNC);
|
||||
PORTB = _BLACK; delayMicroseconds(_SHORT_SYNC_DELAI-_COMPENS_BOUCLE-_COMPENS_IF_SERIAL);
|
||||
|
||||
if (Serial.available())
|
||||
{
|
||||
c = Serial.read ();
|
||||
switch (c)
|
||||
{
|
||||
case '4' : if (cx>0) cx--; break;
|
||||
case '6' : if (cx<29) cx++; break;
|
||||
case '8' : if (cy>0) cy--; break;
|
||||
case '2' : if (cy<18) cy++; break;
|
||||
case '5' : memVideo[cx][cy] = couleur; break;
|
||||
case 'n' : couleur = _BLACK; break;
|
||||
case 'g' : couleur = _GRAY; break;
|
||||
case 'b' : couleur = _WHITE; break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user