Compare commits

...

2 Commits

Author SHA1 Message Date
d9e5a34567 Merge branch 'master' of https://code.jcktrue.dk/jct/MAX7456
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-19 18:53:07 +01:00
3fce356abf Code formatting. 2021-03-19 18:52:50 +01:00
5 changed files with 140 additions and 230 deletions

@ -1416,8 +1416,8 @@ void setup() {
Serial.print(number);
Serial.println(F(" of 255"));
MAX7456::getCARACFromProgMem(tableOfAllCharacters, i, currentChar); //Because the table is too big for ram memory
osd->sendCharacter(currentChar, i & 0xF0, i & 0xF0); //We send currentChar at address i.
MAX7456::printCharacterToSerial(tableOfAllCharacters[i], true);
osd->sendCharacter(currentChar, i); //We send currentChar at address i.
}
Serial.println(F("---------- DONE! ----------"));
Serial.println(F("please unplug your arduino."));

@ -74,7 +74,7 @@ void setup()
{
byte spi_junk;
int x;
Serial.begin(38400);
Serial.begin(115200);
Serial.flush();
digitalWrite(USBSELECT,HIGH); //disable USB chip

@ -2,7 +2,6 @@
#include <Arduino.h>
#include <SPI.h>
//-----------------------------------------------------------------------------
// Implements MAX7456::MAX7456
//-----------------------------------------------------------------------------
@ -24,7 +23,6 @@ void MAX7456::setBlinkParams(byte blinkBase, byte blinkDC)
digitalWrite(_pinCS, HIGH);
}
//-----------------------------------------------------------------------------
// Implements MAX7456::setDisplayOffsets
//----------------------------------------------------------------------------
@ -54,22 +52,16 @@ MAX7456::MAX7456()
{
}
//-----------------------------------------------------------------------------
// Implements MAX7456::sendCharacter
//-----------------------------------------------------------------------------
void MAX7456::sendCharacter(const charact chara, byte x, byte y)
void MAX7456::sendCharacter(const charact chara, char address)
{
byte charAddress;
if(y<0)
charAddress = x;
else
charAddress = x + (y<<4);
activateOSD(false);
//datasheet p38
digitalWrite(_pinCS, LOW);
SPI.transfer(CMAH_ADDRESS_WRITE);
SPI.transfer(charAddress);
SPI.transfer(address);
for (byte i = 0; i < 54; i++)
{
@ -90,11 +82,9 @@ void MAX7456::sendCharacter(const charact chara, byte x, byte y)
_regStat.whole = SPI.transfer(0x00);
}
digitalWrite(_pinCS, HIGH);
}
//-----------------------------------------------------------------------------
// Implements MAX7456::getCharacter
//-----------------------------------------------------------------------------
@ -102,7 +92,6 @@ void MAX7456::getCharacter(charact chara, byte x, byte y)
{
byte charAddress;
if (y <= 0)
charAddress = x;
else
@ -112,7 +101,6 @@ void MAX7456::getCharacter(charact chara, byte x, byte y)
//datasheet p38
digitalWrite(_pinCS, LOW);
SPI.transfer(CMAH_ADDRESS_WRITE);
SPI.transfer(charAddress);
@ -120,7 +108,6 @@ void MAX7456::getCharacter(charact chara, byte x, byte y)
SPI.transfer(CMM_ADDRESS_WRITE);
SPI.transfer(_regCmm);
for (byte i = 0; i < 54; i++)
{
SPI.transfer(CMAL_ADDRESS_WRITE);
@ -131,14 +118,12 @@ void MAX7456::getCharacter(charact chara, byte x, byte y)
}
digitalWrite(_pinCS, HIGH);
}
//-----------------------------------------------------------------------------
// Implements Max7456::printCharacterToSerial
//-----------------------------------------------------------------------------
void MAX7456::printCharacterToSerial(const charact array, bool img)
{
if (img)
{
CARACT car;
@ -191,7 +176,6 @@ void MAX7456::printPixel(byte value)
}
}
//-----------------------------------------------------------------------------
// Implements MAX7456::print
//-----------------------------------------------------------------------------
@ -201,7 +185,8 @@ void MAX7456::print(const char string[], byte x, byte y, byte blink,byte inv)
byte size;
byte *chars = NULL;
if(!string) return;
if (!string)
return;
size = 0;
currentChar = string[0];
@ -222,7 +207,6 @@ void MAX7456::print(const char string[], byte x, byte y, byte blink,byte inv)
free(chars);
}
void MAX7456::printMAX7456Char(const byte address, byte x, byte y, byte blink, byte inv)
{
byte ad = address;
@ -252,40 +236,28 @@ void MAX7456::printMAX7456Chars(byte chars[],byte size,byte x, byte y, byte blin
digitalWrite(_pinCS, LOW);
SPI.transfer(DMM_ADDRESS_WRITE);
SPI.transfer(_regDmm.whole);
SPI.transfer(DMAH_ADDRESS_WRITE); // set start address high
SPI.transfer(posAddressHI);
SPI.transfer(DMAL_ADDRESS_WRITE); // set start address low
SPI.transfer(posAddressLO);
for (int i = 0; i < size; i++)
{
currentChar = chars[i];
SPI.transfer(DMDI_ADDRESS_WRITE);
SPI.transfer(currentChar);
}
//end character (we're done).
SPI.transfer(DMDI_ADDRESS_WRITE);
SPI.transfer(0xff);
/*
_regVm0.bits.
SPI.transfer(VM0_ADDRESS_WRITE);
SPI.transfer(0x4c);*/
digitalWrite(_pinCS, HIGH);
}
//-----------------------------------------------------------------------------
// Implements MAX7456::print
//-----------------------------------------------------------------------------
@ -296,7 +268,6 @@ void MAX7456::print(double value, byte x, byte y, byte before, byte after, byte
strValue = (char *)malloc((before + after + 2) * sizeof(char));
if (after == 0)
dtostrf(value, before + after, after, strValue);
else
@ -319,7 +290,6 @@ void MAX7456::print(double value, byte x, byte y, byte before, byte after, byte
free(strValue);
}
//-----------------------------------------------------------------------------
// Implements MAX7456::giveMAX7456CharFromAsciiChar
//-----------------------------------------------------------------------------
@ -336,7 +306,6 @@ byte MAX7456::giveMAX7456CharFromAsciiChar(char ascii)
#endif
}
//-----------------------------------------------------------------------------
// Implements MAX7456::clearScreen
//-----------------------------------------------------------------------------
@ -358,7 +327,6 @@ void MAX7456::clearScreen()
digitalWrite(_pinCS, HIGH); //disable device
}
//-----------------------------------------------------------------------------
// Implements MAX7456::init
//-----------------------------------------------------------------------------
@ -382,7 +350,6 @@ void MAX7456::init(byte iPinCS)
digitalWrite(_pinCS, HIGH);
delay(500);
digitalWrite(_pinCS, LOW);
for (int x = 0; x < 16; x++)
{
@ -403,7 +370,6 @@ void MAX7456::init(byte iPinCS)
digitalWrite(_pinCS, HIGH);
}
//-----------------------------------------------------------------------------
// Implements MAX7456::activateOSD
//-----------------------------------------------------------------------------
@ -426,7 +392,6 @@ void MAX7456::activateOSD(bool act)
}
}
//-----------------------------------------------------------------------------
// Implements MAX7456::activateExternalVideo
//-----------------------------------------------------------------------------
@ -443,7 +408,6 @@ void MAX7456::activateExternalVideo(bool activExtVid)
digitalWrite(_pinCS, HIGH);
}
//-----------------------------------------------------------------------------
// Implements MAX7456::CARACT2ByteArray
//-----------------------------------------------------------------------------
@ -457,7 +421,6 @@ byte* MAX7456::CARACT2ByteArray(const CARACT car)
return array;
}
//-----------------------------------------------------------------------------
// Implements MAX7456::byteArray2CARACT
//-----------------------------------------------------------------------------
@ -470,7 +433,6 @@ CARACT MAX7456::byteArray2CARACT(const charact array)
return car;
}
//-----------------------------------------------------------------------------
// Implements MAX7456::getCARACFromProgMem
//-----------------------------------------------------------------------------

@ -9,7 +9,6 @@
#ifndef MAX7456_H
#define MAX7456_H
//def next only if you changed your table for an ascii one
//i.e address 0x00 -> ' '
//....
@ -19,13 +18,10 @@
#include "MAX7456Registers.h"
/**
* @mainpage MAX7456 Arduino library
*/
/**
* @class MAX7456
* @brief Represents a MAX7456 device communicating through SPI port
@ -33,14 +29,11 @@
class MAX7456
{
public:
/**
* Default constructor
*/
MAX7456();
/**
* Constructor
* Initialize communications and device
@ -48,7 +41,6 @@ public:
*/
MAX7456(byte pinCS);
/**
* Initialize communications and device
* @param pinCS : pin ~CS of the arduino where MAX7456 is plugged.
@ -66,7 +58,6 @@ public:
*/
void setBlinkParams(byte blinkBase, byte blinkDC);
/**
* Set Horizontal and Vertical display offset
* @param horizontal : the horizontal offset in pixels (between 0 and 63).
@ -74,13 +65,11 @@ public:
*/
void setDisplayOffsets(byte horizontal, byte vertical);
/**
* Erase Display Memory.
*/
void clearScreen();
/**
* Activate osd on screen
* @param act :
@ -89,7 +78,6 @@ public:
*/
void activateOSD(bool act = true);
/**
* Activate input video as a background
* @param activExtVid :
@ -98,20 +86,17 @@ public:
*/
void activateExternalVideo(bool activExtVid = true);
/**
* Put a character in the memory character of max7456
* Put a character in the memory character of MAX7456
* @param array : the byte array representing the character (54 bytes long)
* @param x : the horizontal position of character in memory
* @param y : the vertical position of character in memory.
* @param adress : the address of character in memory
* @code
* charact c={0x44,....} //Whatever charact here
* max.sendCharacter(c,4,5); //put c at 4th line 5th column ie. address 54.
* max.sendCharacter(c,0x54); //put c at 4th line 5th column ie. address 54.
* max.sendCharacter(c,0x43); //put c in mem at address 43.
* @endcode
*/
void sendCharacter(const charact array, byte x, byte y);
void sendCharacter(const charact array, char address);
/**
* Get a character from the character memory of max7456
@ -121,7 +106,6 @@ public:
*/
void getCharacter(charact array, byte x, byte y);
/**
* Put a string in the display memory of max7456
* @param string : The string to be displayed
@ -136,8 +120,6 @@ public:
*/
void print(const char string[], byte x, byte y, byte blink = 0, byte inv = 0);
/**
* Put a float in the display memory of max7456
* @param value : The value to be displayed
@ -158,7 +140,6 @@ public:
*/
void print(double value, byte x, byte y, byte before, byte after, byte blink = 0, byte inv = 0);
/**
* Put some characters in the display memory of MAX7456.
* The characters are given by their address in the
@ -176,7 +157,6 @@ public:
*/
void printMAX7456Chars(byte chars[], byte size, byte x, byte y, byte blink = 0, byte inv = 0);
/**
* Put one character from the character memory in the display memory of MAX7456
* @param address : The address in character memory of the character to be displayed
@ -196,7 +176,6 @@ public:
*/
static void printCharacterToSerial(const charact array, bool img = true);
/**
* Converts a CARACT character to a byte array representation.
* @param car : the CARACT character
@ -204,7 +183,6 @@ public:
*/
static byte *CARACT2ByteArray(const CARACT car);
/**
* Converts a byte array to a CARACT character.
* @param array : the byte array representing the character (54 bytes long)
@ -212,7 +190,6 @@ public:
*/
static CARACT byteArray2CARACT(const charact array);
/**
* Get the ith character from program memory
* @param table the address of the array in prog memory
@ -225,7 +202,6 @@ public:
static void getCARACFromProgMem(const char *table, byte i, charact c);
private:
byte giveMAX7456CharFromAsciiChar(char ascii);
static void printPixel(byte value);
@ -252,6 +228,4 @@ private:
REG_CMDO _regCmdo; // not used yet
};
#endif /* MAX7456_H_ */

@ -8,10 +8,8 @@
#ifndef MAX7456REGISTERS_H_
#define MAX7456REGISTERS_H_
#include <Arduino.h>
/**
* @typedef charact
* @brief Represents a character as stored in MAX7456 character memory.
@ -76,7 +74,6 @@ union REG_VM0
} bits;
};
#define VM1_ADDRESS_WRITE 0x01
#define VM1_ADDRESS_READ 0x81
@ -101,7 +98,6 @@ union REG_VM1
*/
unsigned char blinkingDutyCycle : 2;
/**@brief Blinking Time (BT)
* @li b00 (0) = 2 fields (NTSC = 33ms ; PAL = 40ms)
* @li b01 (1) = 4 fields (NTSC = 67ms ; PAL = 80ms)
@ -110,7 +106,6 @@ union REG_VM1
*/
unsigned char blinkingTime : 2;
/**@brief Background Mode Brightness
* @li b000 (0) = 0%
* @li b001 (1) = 7%
@ -163,7 +158,6 @@ union REG_HOS
} bits;
};
#define VOS_ADDRESS_WRITE 0x03
#define VOS_ADDRESS_READ 0x83
@ -264,12 +258,9 @@ union REG_DMM
/**@brief Don't care*/
unsigned char unsused : 1;
} bits;
};
#define DMAH_ADDRESS_WRITE 0x05
#define DMAH_ADDRESS_READ 0x85
/**@union REG_DMAH
@ -293,12 +284,10 @@ union REG_DMAH
} bits;
};
#define DMAL_ADDRESS_WRITE 0x06
#define DMAL_ADDRESS_READ 0x86
typedef unsigned char REG_DMAL;
#define DMDI_ADDRESS_WRITE 0x07
#define DMDI_ADDRESS_READ 0x87
typedef unsigned char REG_DMDI;
@ -353,7 +342,6 @@ union REG_CMDI
} bits;
};
#define OSDM_ADDRESS_WRITE 0x0C
#define OSDM_ADDRESS_READ 0x8C
@ -380,7 +368,6 @@ union REG_OSDM
*/
unsigned char osdInsertionMuxSwitchingTime : 3;
/**@brief OSD Rise And Fall Time
* @li b000 (0) : 20ns (maximum sharpness/maximum crosscolor artifacts )
* @li b001 (1) : 30ns
@ -391,14 +378,12 @@ union REG_OSDM
*/
unsigned char osdRiseAndFallTime : 3;
/**@brief don't care*/
unsigned char unused : 2;
} bits;
};
#define RB0_ADDRESS_WRITE 0x10
#define RB0_ADDRESS_READ 0x90
@ -562,7 +547,6 @@ union REG_STAT
} bits;
};
#define DMDO_ADDRESS_READ 0xB0
/**@typedef DMDO
@ -595,33 +579,26 @@ union REG_CMDO
} bits;
};
/**\def COLOR_BLACK
* \brief Black value for a pixel (2bits)
*/
#define COLOR_BLACK 0
/**\def COLOR_WHITE
* \brief White value for a pixel (2bits)
*/
#define COLOR_WHITE 2
/**\def COLOR_TRANSPARENT
* \brief Transparent value for a pixel (2bits)
*/
#define COLOR_TRANSPARENT 1
/**\def COLOR_GREY
* \brief Grey value for a pixel (2bits)
*/
#define COLOR_GREY COLOR_TRANSPARENT
/**@struct PIXEL
* @brief represent a 4-pixels value
*/
@ -634,10 +611,8 @@ struct PIXEL
/**@brief 2nd pixel*/
byte pix1 : 2;
/**@brief 1st pixel*/
byte pix0 : 2;
};
/**@union LINE
@ -651,7 +626,6 @@ union LINE
struct PIXEL pixels[3];
};
/**
* @union CARACT
* @brief Represents a character with lines and pixels.
@ -665,20 +639,20 @@ union CARACT
union LINE line[18];
};
enum{
enum
{
_BT_BT = 0,
_BT_2BT,
_BT_3BT,
_3BT_BT
};
enum{
enum
{
_2fields = 0,
_4fields,
_6fields,
_8fields
};
#endif /* MAX7456REGISTERS_H_ */