C 8x8 LED Matrix mit Max7219 ansteuern

Ich kann jetzt nur vermuten wo die Fehlerursache liegt, da dein Sourcecode nur in Teilen im Forum steht.
aus dem Grund wird wird auch in anderen Foren immer drauf hingewiesen den Quellcode komplett ins Forum zu setzen weil der Fehler sich auch in einem anderen Teil versteckt haben könnte. Sonst eiert man nur tagelang rum und hat nachher trotzdem keine Lösung.

Im Bascom-Forum reagiert glaube ich Michael da mittlerweile schon etwas genervt wenn mal wieder nur ein Schnipsel drinsteht. Man kann den Schnipsel nämlich nicht mal eben in den Compiler hauen und testen und oft genug war der Fehler mal wieder an einer anderen Stelle.

Gruß
Dino
 
aus dem Grund wird wird auch in anderen Foren immer drauf hingewiesen den Quellcode komplett ins Forum zu setzen weil der Fehler sich auch in einem anderen Teil versteckt haben könnte. Sonst eiert man nur tagelang rum und hat nachher trotzdem keine Lösung.

Im Bascom-Forum reagiert glaube ich Michael da mittlerweile schon etwas genervt wenn mal wieder nur ein Schnipsel drinsteht. Man kann den Schnipsel nämlich nicht mal eben in den Compiler hauen und testen und oft genug war der Fehler mal wieder an einer anderen Stelle.

Gruß
Dino

Hallo zusammen,
sorry war mein Fehler denn der komplette Quellcode war auf der Seite 1 und mein Problem habe auf der Seite 2 erwähnt....ich habe dann was dazu gelernt :)
============================================================================================================================
Also mein Quellcode , der richtig funtioniert hat :


Code:
/*
 * disp1.c
 * <" 1 test mit einem Modul ">
 * Created: 15.01.2014 10:25:18
 *  Author: bentiaci
 */ 

#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.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_NOOP         0x00

unsigned char i;
unsigned char j;

 const uint8_t disp1[][8]   ={
	
	{0B00111000,0B01000100,0B01001100, 0B01010100, 0B01100100, 0B01000100, 0B00111000, 0B00000000}, //0
	{0B00010000, 0B00110000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00111000, 0B00000000},//1
	{0B00111000, 0B01000100, 0B00000100, 0B00001000, 0B00010000, 0B00100000, 0B01111100, 0B00000000}, //2
	{0B01111100, 0B00001000, 0B00010000, 0B00001000, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //3
	{0B00001000, 0B00011000, 0B00101000, 0B01001000, 0B01111100, 0B00001000, 0B00001000, 0B00000000}, //4
	{0B01111100, 0B01000000, 0B01111000, 0B00000100, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //5
	{0B00011000, 0B00100000, 0B01000000, 0B01111000, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //6
	{0B01111100, 0B01000100, 0B00000100, 0B00001000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //7
	{0B00111000, 0B01000100, 0B01000100, 0B00111000, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //8
	{0B00111000, 0B01000100, 0B01000100, 0B00111100, 0B00000100, 0B00001000, 0B00110000, 0B00000000}, //9
	{0B00010000, 0B00101000, 0B01000100, 0B01000100, 0B01111100, 0B01000100, 0B01000100, 0B00000000}, //A
	{0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B00000000}, //B
	{0B00111000, 0B01000100, 0B01000000, 0B01000000, 0B01000000, 0B01000100, 0B00111000, 0B00000000}, //C
	{0B01110000, 0B01001000, 0B01000100, 0B01000100, 0B01000100, 0B01001000, 0B01110000, 0B00000000}, //D
	{0B01111100, 0B01000000, 0B01000000, 0B01111000, 0B01000000, 0B01000000, 0B01000000, 0B00000000}, //F
	{0B00111000, 0B01000100, 0B01000000, 0B01011100, 0B01000100, 0B01000100, 0B00111100, 0B00000000}, //G
	{0B01000100, 0B01000100, 0B01000100, 0B01111100, 0B01000100, 0B01000100, 0B01000100, 0B00000000}, //H
	{0B00111000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00111000, 0B00000000}, //I
	{0B00011100, 0B00001000, 0B00001000, 0B00001000, 0B00001000, 0B01001000, 0B00110000, 0B00000000}, //J
	{0B01000100, 0B01001000, 0B01010000, 0B01100000, 0B01010000, 0B01001000, 0B01000100, 0B00000000}, //K
	{0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01111100, 0B00000000}, //L
	{0B01000100, 0B01101100, 0B01010100, 0B01010100, 0B01000100, 0B01000100, 0B01000100, 0B00000000}, //M
	{0B01000100, 0B01000100, 0B01100100, 0B01010100, 0B01001100, 0B01000100, 0B01000100, 0B00000000}, //N
	{0B00111000, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //O
	{0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B01000000, 0B01000000, 0B01000000, 0B00000000}, //P
	{0B00111000, 0B01000100, 0B01000100, 0B01000100, 0B01010100, 0B01001000, 0B00110100, 0B00000000}, //Q
	{0B00111000, 0B01000100, 0B01000100, 0B01111000, 0B01010000, 0B01001000, 0B01000100, 0B00000000}, //R
	{0B00111000, 0B01000100, 0B01000000, 0B00111000, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //S
	{0B01111100, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //T
	{0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //U
	{0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00000000}, //V
	{0B01000100, 0B01000100, 0B01000100, 0B01010100, 0B01010100, 0B01010100, 0B00101000, 0B00000000}, //W
	{0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00101000, 0B01000100, 0B01000100, 0B00000000}, //X
	{0B01000100, 0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //Y
	{0B01111100, 0B00000100, 0B00001000, 0B00010000, 0B00100000, 0B01000000, 0B01111100, 0B00000000}, //Z
};


void spiSendByte (uint8_t databyte)
{
    // Daten Kopieren in die SPI-Datenregister
    SPDR = databyte;
    // Warten bis die Übertragung abgeschlossen ist
    while (!(SPSR & (1 << SPIF)));
}
 
void MAX7219_writeData(uint8_t data_register, uint8_t data)
{
    MAX7219_LOAD0;
        // Senden an das Register, in dem die Daten gespeichert werden
        spiSendByte(data_register);
        // Senden  die zu speichernden Daten
        spiSendByte(data);
    MAX7219_LOAD1;
}


//initialisieren 1 chip
void max7219_init1()
{
	MAX7219_LOAD0;
	  MAX7219_writeData(MAX7219_MODE_DECODE, 0x00);
	  MAX7219_writeData(MAX7219_MODE_SCAN_LIMIT, 0x07);
	  MAX7219_writeData(MAX7219_MODE_INTENSITY, 0x0f);
	  MAX7219_writeData(MAX7219_MODE_POWER, ON); 
	  MAX7219_writeData(MAX7219_MODE_TEST, 0x00);  
	MAX7219_LOAD1;
	
} 

int main(void)
{
    // SCK MOSI CS/LOAD/SS
    DDRB |= (1 << PIN_SCK) | (1 << PIN_MOSI) | (1 << PIN_SS);
 
    // SPI aktivieren, Master-Modus
    SPCR |= (1 << SPE) | (1 << MSTR)| (1<<SPR1);
    
	// Alle 3 Module initialisieren
	 max7219_init1();
	  while(1){
		  
	     for(j=0;j<35;j++)
		 {
		 for(i=1;i<9;i++)
		 MAX7219_writeData(i,disp1[j][i-1]);
		
		 _delay_ms(500);
		 }
	  }
}

==================================================================================================================================================

Dann habe den Hinweis von dino03 wegen den Speicher mangel im SRAM und habe es mein Quellcode so geändert ( aber mein Matrix zeigt dann komische zeichen ) :

Code:
/*
 * disp1.c
 * <" 1 test mit einem Modul ">
 * Created: 15.01.2014 10:25:18
 *  Author: bentiaci
 */ 

#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
#include <avr/pgmspace.h>  // das habe ich hinzugefügt im vergleich zu dem 1 Quellcode

#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_NOOP         0x00

unsigned char i;
unsigned char j;

// Mit PROGMEM Diesmal im vergleich zu dem 1 Quellcode

 const uint8_t disp1[][8]  PROGMEM ={
	
	
	{0B00111000,0B01000100,0B01001100, 0B01010100, 0B01100100, 0B01000100, 0B00111000, 0B00000000}, //0
	{0B00010000, 0B00110000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00111000, 0B00000000},//1
	{0B00111000, 0B01000100, 0B00000100, 0B00001000, 0B00010000, 0B00100000, 0B01111100, 0B00000000}, //2
	{0B01111100, 0B00001000, 0B00010000, 0B00001000, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //3
	{0B00001000, 0B00011000, 0B00101000, 0B01001000, 0B01111100, 0B00001000, 0B00001000, 0B00000000}, //4
	{0B01111100, 0B01000000, 0B01111000, 0B00000100, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //5
	{0B00011000, 0B00100000, 0B01000000, 0B01111000, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //6
	{0B01111100, 0B01000100, 0B00000100, 0B00001000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //7
	{0B00111000, 0B01000100, 0B01000100, 0B00111000, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //8
	{0B00111000, 0B01000100, 0B01000100, 0B00111100, 0B00000100, 0B00001000, 0B00110000, 0B00000000}, //9
	{0B00010000, 0B00101000, 0B01000100, 0B01000100, 0B01111100, 0B01000100, 0B01000100, 0B00000000}, //A
	{0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B00000000}, //B
	{0B00111000, 0B01000100, 0B01000000, 0B01000000, 0B01000000, 0B01000100, 0B00111000, 0B00000000}, //C
	{0B01110000, 0B01001000, 0B01000100, 0B01000100, 0B01000100, 0B01001000, 0B01110000, 0B00000000}, //D
	{0B01111100, 0B01000000, 0B01000000, 0B01111000, 0B01000000, 0B01000000, 0B01000000, 0B00000000}, //F
	{0B00111000, 0B01000100, 0B01000000, 0B01011100, 0B01000100, 0B01000100, 0B00111100, 0B00000000}, //G
	{0B01000100, 0B01000100, 0B01000100, 0B01111100, 0B01000100, 0B01000100, 0B01000100, 0B00000000}, //H
	{0B00111000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00111000, 0B00000000}, //I
	{0B00011100, 0B00001000, 0B00001000, 0B00001000, 0B00001000, 0B01001000, 0B00110000, 0B00000000}, //J
	{0B01000100, 0B01001000, 0B01010000, 0B01100000, 0B01010000, 0B01001000, 0B01000100, 0B00000000}, //K
	{0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01111100, 0B00000000}, //L
	{0B01000100, 0B01101100, 0B01010100, 0B01010100, 0B01000100, 0B01000100, 0B01000100, 0B00000000}, //M
	{0B01000100, 0B01000100, 0B01100100, 0B01010100, 0B01001100, 0B01000100, 0B01000100, 0B00000000}, //N
	{0B00111000, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //O
	{0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B01000000, 0B01000000, 0B01000000, 0B00000000}, //P
	{0B00111000, 0B01000100, 0B01000100, 0B01000100, 0B01010100, 0B01001000, 0B00110100, 0B00000000}, //Q
	{0B00111000, 0B01000100, 0B01000100, 0B01111000, 0B01010000, 0B01001000, 0B01000100, 0B00000000}, //R
	{0B00111000, 0B01000100, 0B01000000, 0B00111000, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //S
	{0B01111100, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //T
	{0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //U
	{0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00000000}, //V
	{0B01000100, 0B01000100, 0B01000100, 0B01010100, 0B01010100, 0B01010100, 0B00101000, 0B00000000}, //W
	{0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00101000, 0B01000100, 0B01000100, 0B00000000}, //X
	{0B01000100, 0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //Y
	{0B01111100, 0B00000100, 0B00001000, 0B00010000, 0B00100000, 0B01000000, 0B01111100, 0B00000000}, //Z
};


void spiSendByte (uint8_t databyte)
{
    // Daten Kopieren in die SPI-Datenregister
    SPDR = databyte;
    // Warten bis die Übertragung abgeschlossen ist
    while (!(SPSR & (1 << SPIF)));
}
 
void MAX7219_writeData(uint8_t data_register, uint8_t data)
{
    MAX7219_LOAD0;
        // Senden an das Register, in dem die Daten gespeichert werden
        spiSendByte(data_register);
        // Senden  die zu speichernden Daten
        spiSendByte(data);
    MAX7219_LOAD1;
}


//initialisieren 1 chip
void max7219_init1()
{
	MAX7219_LOAD0;
	  MAX7219_writeData(MAX7219_MODE_DECODE, 0x00);
	  MAX7219_writeData(MAX7219_MODE_SCAN_LIMIT, 0x07);
	  MAX7219_writeData(MAX7219_MODE_INTENSITY, 0x0f);
	  MAX7219_writeData(MAX7219_MODE_POWER, ON); 
	  MAX7219_writeData(MAX7219_MODE_TEST, 0x00);  
	MAX7219_LOAD1;
	
} 

int main(void)
{
    // SCK MOSI CS/LOAD/SS
    DDRB |= (1 << PIN_SCK) | (1 << PIN_MOSI) | (1 << PIN_SS);
 
    // SPI aktivieren, Master-Modus
    SPCR |= (1 << SPE) | (1 << MSTR)| (1<<SPR1);
    
	// Alle 3 Module initialisieren
	 max7219_init1();
	  while(1){
		  
	     for(j=0;j<35;j++)
		 {
		 for(i=1;i<9;i++)
		 MAX7219_writeData(i,disp1[j][i-1]);
		
		 _delay_ms(500);
		 }
	  }
}

Gruß
bentiaci
 
Hallo bentiaci,

Ja in meinem Beitrag vor Dino seinem, habe ich die Fehlerursache bereits angesprochen.

Dirk :ciao:
 
Hallo Dirk,
vielen Dank für deinen Hinweis!..du hattest Recht :) der Fehler ist jetzt beseitigt..vielen Dank man lernt hier mehr als in der Vorlesung :D
==========================================================================================================
Das hier funkkioniert jetzt 1A :
Code:
/*
 * disp1.c
 * <" 1 test mit einem Modul ">
 * Created: 15.01.2014 10:25:18
 *  Author: bentiaci
 */ 

#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
#include <avr/pgmspace.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_NOOP         0x00

unsigned char i;
unsigned char j;

 const uint8_t disp1[][8]  PROGMEM ={
	
	
	{0B00111000,0B01000100,0B01001100, 0B01010100, 0B01100100, 0B01000100, 0B00111000, 0B00000000}, //0
	{0B00010000, 0B00110000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00111000, 0B00000000},//1
	{0B00111000, 0B01000100, 0B00000100, 0B00001000, 0B00010000, 0B00100000, 0B01111100, 0B00000000}, //2
	{0B01111100, 0B00001000, 0B00010000, 0B00001000, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //3
	{0B00001000, 0B00011000, 0B00101000, 0B01001000, 0B01111100, 0B00001000, 0B00001000, 0B00000000}, //4
	{0B01111100, 0B01000000, 0B01111000, 0B00000100, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //5
	{0B00011000, 0B00100000, 0B01000000, 0B01111000, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //6
	{0B01111100, 0B01000100, 0B00000100, 0B00001000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //7
	{0B00111000, 0B01000100, 0B01000100, 0B00111000, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //8
	{0B00111000, 0B01000100, 0B01000100, 0B00111100, 0B00000100, 0B00001000, 0B00110000, 0B00000000}, //9
	{0B00010000, 0B00101000, 0B01000100, 0B01000100, 0B01111100, 0B01000100, 0B01000100, 0B00000000}, //A
	{0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B00000000}, //B
	{0B00111000, 0B01000100, 0B01000000, 0B01000000, 0B01000000, 0B01000100, 0B00111000, 0B00000000}, //C
	{0B01110000, 0B01001000, 0B01000100, 0B01000100, 0B01000100, 0B01001000, 0B01110000, 0B00000000}, //D
	{0B01111100, 0B01000000, 0B01000000, 0B01111000, 0B01000000, 0B01000000, 0B01000000, 0B00000000}, //F
	{0B00111000, 0B01000100, 0B01000000, 0B01011100, 0B01000100, 0B01000100, 0B00111100, 0B00000000}, //G
	{0B01000100, 0B01000100, 0B01000100, 0B01111100, 0B01000100, 0B01000100, 0B01000100, 0B00000000}, //H
	{0B00111000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00111000, 0B00000000}, //I
	{0B00011100, 0B00001000, 0B00001000, 0B00001000, 0B00001000, 0B01001000, 0B00110000, 0B00000000}, //J
	{0B01000100, 0B01001000, 0B01010000, 0B01100000, 0B01010000, 0B01001000, 0B01000100, 0B00000000}, //K
	{0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01111100, 0B00000000}, //L
	{0B01000100, 0B01101100, 0B01010100, 0B01010100, 0B01000100, 0B01000100, 0B01000100, 0B00000000}, //M
	{0B01000100, 0B01000100, 0B01100100, 0B01010100, 0B01001100, 0B01000100, 0B01000100, 0B00000000}, //N
	{0B00111000, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //O
	{0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B01000000, 0B01000000, 0B01000000, 0B00000000}, //P
	{0B00111000, 0B01000100, 0B01000100, 0B01000100, 0B01010100, 0B01001000, 0B00110100, 0B00000000}, //Q
	{0B00111000, 0B01000100, 0B01000100, 0B01111000, 0B01010000, 0B01001000, 0B01000100, 0B00000000}, //R
	{0B00111000, 0B01000100, 0B01000000, 0B00111000, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //S
	{0B01111100, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //T
	{0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //U
	{0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00000000}, //V
	{0B01000100, 0B01000100, 0B01000100, 0B01010100, 0B01010100, 0B01010100, 0B00101000, 0B00000000}, //W
	{0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00101000, 0B01000100, 0B01000100, 0B00000000}, //X
	{0B01000100, 0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //Y
	{0B01111100, 0B00000100, 0B00001000, 0B00010000, 0B00100000, 0B01000000, 0B01111100, 0B00000000}, //Z
};


void spiSendByte (uint8_t databyte)
{
    // Daten Kopieren in die SPI-Datenregister
    SPDR = databyte;
    // Warten bis die Übertragung abgeschlossen ist
    while (!(SPSR & (1 << SPIF)));
}
 
void MAX7219_writeData(uint8_t data_register, uint8_t data)
{
    MAX7219_LOAD0;
        // Senden an das Register, in dem die Daten gespeichert werden
        spiSendByte(data_register);
        // Senden  die zu speichernden Daten
        spiSendByte(data);
    MAX7219_LOAD1;
}


//initialisieren 1 chip
void max7219_init1()
{
	MAX7219_LOAD0;
	  MAX7219_writeData(MAX7219_MODE_DECODE, 0x00);
	  MAX7219_writeData(MAX7219_MODE_SCAN_LIMIT, 0x07);
	  MAX7219_writeData(MAX7219_MODE_INTENSITY, 0x0f);
	  MAX7219_writeData(MAX7219_MODE_POWER, ON); 
	  MAX7219_writeData(MAX7219_MODE_TEST, 0x00);  
	MAX7219_LOAD1;
	
} 

int main(void)
{
    // SCK MOSI CS/LOAD/SS
    DDRB |= (1 << PIN_SCK) | (1 << PIN_MOSI) | (1 << PIN_SS);
 
    // SPI aktivieren, Master-Modus
    SPCR |= (1 << SPE) | (1 << MSTR)| (1<<SPR1);
    
	// Alle 3 Module initialisieren
	 max7219_init1();
	  while(1){
		  
	     for(j=0;j<35;j++)
		 {
		 for(i=1;i<9;i++)
		  MAX7219_writeData(i,pgm_read_byte(&disp1[j][i-1]));
		 _delay_ms(500);
		 }
	  }
}

Jetzt darf ich mich endlich mit mehereren Kaskadierrten Module beschäftigen :) und gebe dann bescheid was ich dann geschaft habe!
Vielen Dank nochmal
Gruß
bentiaci
 
Hallo zusammen,
ich habe mein Code für 2 Kaskadierten Module wie folgt angepasst :

Code:
#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
#include <avr/pgmspace.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_NOOP         0x00

unsigned char i;
unsigned char j;
unsigned char k;

const uint8_t disp1[][8]  PROGMEM ={
	
	
	{0B00111000,0B01000100,0B01001100, 0B01010100, 0B01100100, 0B01000100, 0B00111000, 0B00000000}, //0
	{0B00010000, 0B00110000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00111000, 0B00000000},//1
	{0B00111000, 0B01000100, 0B00000100, 0B00001000, 0B00010000, 0B00100000, 0B01111100, 0B00000000}, //2
	{0B01111100, 0B00001000, 0B00010000, 0B00001000, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //3
	{0B00001000, 0B00011000, 0B00101000, 0B01001000, 0B01111100, 0B00001000, 0B00001000, 0B00000000}, //4
	{0B01111100, 0B01000000, 0B01111000, 0B00000100, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //5
	{0B00011000, 0B00100000, 0B01000000, 0B01111000, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //6
	{0B01111100, 0B01000100, 0B00000100, 0B00001000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //7
	{0B00111000, 0B01000100, 0B01000100, 0B00111000, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //8
	{0B00111000, 0B01000100, 0B01000100, 0B00111100, 0B00000100, 0B00001000, 0B00110000, 0B00000000}, //9
	{0B00010000, 0B00101000, 0B01000100, 0B01000100, 0B01111100, 0B01000100, 0B01000100, 0B00000000}, //A
	{0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B00000000}, //B
	{0B00111000, 0B01000100, 0B01000000, 0B01000000, 0B01000000, 0B01000100, 0B00111000, 0B00000000}, //C
	{0B01110000, 0B01001000, 0B01000100, 0B01000100, 0B01000100, 0B01001000, 0B01110000, 0B00000000}, //D
	{0B01111100, 0B01000000, 0B01000000, 0B01111000, 0B01000000, 0B01000000, 0B01000000, 0B00000000}, //F
	{0B00111000, 0B01000100, 0B01000000, 0B01011100, 0B01000100, 0B01000100, 0B00111100, 0B00000000}, //G
	{0B01000100, 0B01000100, 0B01000100, 0B01111100, 0B01000100, 0B01000100, 0B01000100, 0B00000000}, //H
	{0B00111000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00111000, 0B00000000}, //I
	{0B00011100, 0B00001000, 0B00001000, 0B00001000, 0B00001000, 0B01001000, 0B00110000, 0B00000000}, //J
	{0B01000100, 0B01001000, 0B01010000, 0B01100000, 0B01010000, 0B01001000, 0B01000100, 0B00000000}, //K
	{0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01111100, 0B00000000}, //L
	{0B01000100, 0B01101100, 0B01010100, 0B01010100, 0B01000100, 0B01000100, 0B01000100, 0B00000000}, //M
	{0B01000100, 0B01000100, 0B01100100, 0B01010100, 0B01001100, 0B01000100, 0B01000100, 0B00000000}, //N
	{0B00111000, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //O
	{0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B01000000, 0B01000000, 0B01000000, 0B00000000}, //P
	{0B00111000, 0B01000100, 0B01000100, 0B01000100, 0B01010100, 0B01001000, 0B00110100, 0B00000000}, //Q
	{0B00111000, 0B01000100, 0B01000100, 0B01111000, 0B01010000, 0B01001000, 0B01000100, 0B00000000}, //R
	{0B00111000, 0B01000100, 0B01000000, 0B00111000, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //S
	{0B01111100, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //T
	{0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //U
	{0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00000000}, //V
	{0B01000100, 0B01000100, 0B01000100, 0B01010100, 0B01010100, 0B01010100, 0B00101000, 0B00000000}, //W
	{0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00101000, 0B01000100, 0B01000100, 0B00000000}, //X
	{0B01000100, 0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //Y
	{0B01111100, 0B00000100, 0B00001000, 0B00010000, 0B00100000, 0B01000000, 0B01111100, 0B00000000}, //Z
};


void spiSendByte (uint8_t databyte)
{
	// Daten Kopieren in die SPI-Datenregister
	SPDR = databyte;
	// Warten bis die Übertragung abgeschlossen ist
	while (!(SPSR & (1 << SPIF)));
}

void MAX7219_writeData1(uint8_t data_register, uint8_t data)
{
	spiSendByte(data_register);
	spiSendByte(data);
}

void max7219_init()
{
	MAX7219_LOAD0;
	for(k=0;k<2;k++)
	MAX7219_writeData1(MAX7219_MODE_DECODE, 0x00);
	MAX7219_LOAD1;
	_delay_ms(5);
	MAX7219_LOAD0;
	for(k=0;k<2;k++)
	MAX7219_writeData1(MAX7219_MODE_SCAN_LIMIT, 0x07);
	MAX7219_LOAD1;
	_delay_ms(5);
	MAX7219_LOAD0;
	for(k=0;k<2;k++)
	MAX7219_writeData1(MAX7219_MODE_INTENSITY, 0x0f);
	MAX7219_LOAD1;
	_delay_ms(5);
	MAX7219_LOAD0;
	for(k=0;k<2;k++)
	MAX7219_writeData1(MAX7219_MODE_POWER, ON);
	MAX7219_LOAD1;

}
void output()
{
	for(j=0;j<35;j++)
	{
		for(i=1;i<9;i++)
		{
			MAX7219_LOAD0;
			MAX7219_writeData1(i,pgm_read_byte(&disp1[j][i-1]));
			MAX7219_writeData1(i,pgm_read_byte(&disp1[j][i-1]));
			MAX7219_writeData1(i,pgm_read_byte(&disp1[j][i-1]));
			MAX7219_writeData1(i,pgm_read_byte(&disp1[j][i-1]));
			MAX7219_LOAD1;
			_delay_ms(5);
		}
		_delay_ms(500);
	}
}
int main(void)
{
	DDRB |= (1 << PIN_SCK) | (1 << PIN_MOSI) | (1 << PIN_SS) ;
	SPCR |= (1 << SPE) | (1 << MSTR)| (1<<SPR1);
	max7219_init();
	while (1)
	{
		output();
	}
	
	
}

ABER warum muss ich meine AusgabeRoutune 4 mal schreiben in main damit die beiden Module funktionieren ich verstehe das nicht!! denn wie wäre es bei 16 Module? soll ich dann jedes mal irgend ein app 32 mal schreiben??

Vielen Dank
Gruss
bentiaci
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)