/* * MAX7219.h * * Created: 19-02-2020 11:36:05 * Author: USER */ #ifndef MAX7219_H_ #define MAX7219_H_ #ifndef F_CPU #define F_CPU 16000000UL #endif #include <avr/io.h> #define PIN_SCK PORTB7 #define PIN_MOSI PORTB5 #define PIN_SS PORTB4 #define ON 1 #define OFF 0 #define MAX7219_LOAD1 PORTB |= (1<<PIN_SS) #define MAX7219_LOAD0 PORTB &= ~(1<<PIN_SS) #define MAX7219_MODE_DECODE 0x09 #define MAX7219_MODE_INTENSITY 0x0A #define MAX7219_MODE_SCAN_LIMIT 0x0B #define MAX7219_MODE_POWER 0x0C #define MAX7219_MODE_TEST 0x0F #define MAX7219_MODE_NO_OP 0x00 #define MAX7219_DIGIT0_UNIT 0x01 // For selecting LSB digit of current display #define MAX7219_DIGIT1_TEN 0x02 // For selecting CSB digit of current display #define MAX7219_DIGIT2_HUN 0x03 // For selecting MSB digit of currnet display #define MAX7219_DIGIT3_FAULT 0x04 // For selecting fault, ampere & secnond leds #define MAX7219_DIGIT4_MODE 0x05 // For selecting mode (MMAW, TIG & HF) leds #define MAX7219_DIGIT5_2T_4T 0x06 // For selecting Opertion (2T & 4T) leds #define MAX7219_DIGIT6_PARAMETER 0x07 // For selecting parameter leds (Pre flow, postflow, up slope etc. ) #define MAX7219_DIGIT7_PARAMETER 0x08 // Unsed pin #define MAX7219_CHAR_BLANK 0xF #define MAX7219_CHAR_NEGATIVE 0xA void spiSendByte (char databyte); void MAX7219_writeData(char data_register, char data); void MAX7219_init(void); void MAX7219_reset(void); void MAX7219_data(unsigned char unit, unsigned char ten, unsigned char hundread, unsigned int dig4led, unsigned int dig5led, unsigned int dig3led); void MAX7219_2T_4T(unsigned int T); void MAX7219_display_current_process(unsigned int, unsigned int, unsigned int); void MAX7219_voltage_display(unsigned int unit, unsigned int ten); void MAX7219_blank_data(void); char digitInUse = 6; // For 7 digits #endif /* MAX7219_H_ */
This is my MAX7219.h header file. I want to declare and initialize digitInUse = 6. But i when i do it shows an error saying that multiple definition of `digitInUse'. How can i solve this error. Following file is MAX7219.c
/* * MAX7219.c * * Created: 19-02-2020 11:42:29 * Author: USER */ #include "MAX7219.h" // digitsInUse = 6; void spiSendByte (char databyte) { // Copy data into the SPI data register SPDR = databyte; // Wait until transfer is complete while (!(SPSR & (1 << SPIF))); } void MAX7219_writeData(char data_register, char data) { MAX7219_LOAD0; // Send the register where the data will be stored spiSendByte(data_register); // Send the data to be stored spiSendByte(data); MAX7219_LOAD1; } void MAX7219_init() { DDRB |= (1 << PIN_SCK) | (1 << PIN_MOSI) | (1 << PIN_SS); // SPI Enable, Master mode SPCR |= (1 << SPE) | (1 << MSTR)| (1<<SPR1); MAX7219_writeData(MAX7219_MODE_DECODE, 0x07); // Scan limit runs from 0. MAX7219_writeData(MAX7219_MODE_SCAN_LIMIT, digitInUse); MAX7219_writeData(MAX7219_MODE_INTENSITY, 8); MAX7219_writeData(MAX7219_MODE_POWER, ON); MAX7219_writeData(MAX7219_MODE_TEST,OFF); } void MAX7219_reset(void) { MAX7219_writeData(MAX7219_MODE_POWER, OFF); MAX7219_writeData(MAX7219_MODE_POWER, ON); MAX7219_writeData(MAX7219_MODE_DECODE, 0x07); MAX7219_writeData(MAX7219_MODE_SCAN_LIMIT, digitInUse); MAX7219_writeData(MAX7219_MODE_INTENSITY, 8); MAX7219_writeData(MAX7219_MODE_TEST,OFF); } void MAX7219_data(unsigned char unit, unsigned char ten, unsigned char hundread, unsigned int dig4led, unsigned int dig5led, unsigned int dig3led) { MAX7219_writeData(MAX7219_DIGIT0_UNIT, unit); MAX7219_writeData(MAX7219_DIGIT1_TEN, ten); MAX7219_writeData(MAX7219_DIGIT2_HUN, hundread); MAX7219_writeData(MAX7219_DIGIT4_MODE, dig4led); MAX7219_writeData(MAX7219_DIGIT6_PARAMETER, dig5led); MAX7219_writeData(MAX7219_DIGIT3_FAULT,dig3led); } void MAX7219_2T_4T(unsigned int T) { MAX7219_writeData(MAX7219_DIGIT5_2T_4T, T); } void MAX7219_display_current_process(unsigned int unit, unsigned int ten, unsigned int hundread) { MAX7219_writeData(MAX7219_DIGIT0_UNIT, unit); MAX7219_writeData(MAX7219_DIGIT1_TEN, ten); MAX7219_writeData(MAX7219_DIGIT2_HUN, hundread); } void MAX7219_voltage_display(unsigned int unit, unsigned int ten) { MAX7219_writeData(MAX7219_DIGIT3_FAULT, unit); MAX7219_writeData(MAX7219_DIGIT4_MODE, ten); } void MAX7219_blank_data() { MAX7219_writeData(MAX7219_DIGIT0_UNIT, 0); MAX7219_writeData(MAX7219_DIGIT1_TEN, 0); MAX7219_writeData(MAX7219_DIGIT2_HUN, 0); MAX7219_writeData(MAX7219_DIGIT3_FAULT, 0b00000000); MAX7219_writeData(MAX7219_DIGIT4_MODE, 0b00000000); MAX7219_writeData(MAX7219_DIGIT5_2T_4T, 0b00000000); MAX7219_writeData(MAX7219_DIGIT6_PARAMETER, 0b00000000); // MAX7219_writeData(MAX7219_DIGIT4_MODE, 0); }