LED Matrix (MAX6953) über I²C bus ansteuern

Gast #3416962
Lesenswert?

Hallo zusammen,

ich habe eine Platine mit 4x 5x7 LED Matrix Elementen erstellt und 
möchte diese testen. Da ich mich momentan noch in der Ausbildung befinde 
hab ich noch keine Ahnung vom Programmieren.

Ich benutze Atmel Studio 6.1 mit einem Atmega16 auf dem STK500
Max6953 als Matrix Treiber
Ansteuerung mittels I²C Bus

Ich bräuchte einen Quelltext zum testen.
Was angezeigt wird ist mir egal.

Bitte helft mir.

Danke
#3425726
Lesenswert?

Hi zusammen,

ich habe mal das Datenblatt vom MAX6953 LED Matrix Treiber angehängt.
Außerdem findet ihr den Schaltplan und auch meine Main Datei die ich mir 
zusammen gereimt habe. Habe es aber nach wie vor nicht hinbekommen das 
da was leuchtet.
Die LED´s vom STK500 leuchten aber am Display halt nicht.
Auf den I2C Bus Leitungen kann ich auch mittels Osci nix messen...
Bitte helft mir - ich check´s nicht.
Angehängte Dateien:
#3428612
Lesenswert?

Dann fang mal damit an, deinen Code in einer vernünftigen Form zu 
posten. PDF ist völlig ungeeignet.
1
#include "i2cmaster.h"
2
#include <util/delay.h>
3
#include <avr/io.h>
4

5
#define Dev24C02 1010000 // Display Adresse (AD1=GND AD0=GND) siehe Datenblatt S.10
6

7
int main(void)
8
{
9
  _delay_ms (5000); // 5 Sekunden Verzögerung
10
  i2c_init(); // initialize I2C library
11

12
  while(1) // Endlosschleife
13
  {
14
    DDRB = 0xFF; // PB0PB7 auf Ausgang (STK500)
15
    PORTB = 0x00; // LED´s 07 ein (STK500)
16
    i2c_start_wait(Dev24C02+I2C_WRITE); // Display Adresse + 0 für schreiben
17
    i2c_readAck(void); // warten auf Acknowledge vom Display
18
    i2c_write(0x07); // Command Byte 0x07 für Display Test siehe Datenblatt S. 11 (alle LED´s an)
19
    i2c_readAck(void); // warten auf Acknowledge vom Display
20
    i2c_write(0x00); // Data Byte 0x00 für Display Helligkeit 1/16 min on (siehe Datenblatt S. 12)
21
    i2c_readAck(void); // warten auf Acknowledge vom Display
22
    i2c_stop(void); // ende
23
  }
24
  return 0;
25
}
Gast #3428854
Lesenswert?

>> #define Dev24C02 1010000 // Display Adresse (AD1=GND AD0=GND) siehe
>ist keine Binärzahl.
>
>Wenn schon binär, dann
>#define Dev24C02 0b01010000

Laut Datenblatt dann auch

#define Dev24C02 0b10100000

Hier

i2c_start_wait(Dev24C02+I2C_WRITE);

wird nicht eine Null an die Zahl hinten drangehängt;)
Gast #3430484
Lesenswert?

Schon mal vielen Dank!

Hab jetzt an beide Enden vom Bus die Pull-Up´s eingebaut und siehe da es 
tut sich was...
Das Display habe ich auch schon mal zu "glimmen" bekommen.
Nur irgendwie läuft es noch nicht ganz so wie ich will...


Das ist der aktuelle Code:

#include "i2cmaster.h"
# define F_CPU 8000000UL
#include <util/delay.h>
#include <avr/io.h>

#define Dev24C02  0xA0        // Display Adresse (AD1=GND AD0=GND) siehe 
Datenblatt S.10

int main(void)
{
  _delay_ms(1000);          // 1 Sekunden Verzögerung

  i2c_init();
                            // initialize I2C library

 DDRB  = 0xFF;              // PB0-PB7 auf Ausgang (STK500)
 PORTB = 0x00;              // LED´s 0-7 ein (STK500)


while(1)
{


  i2c_start_wait(Dev24C02+I2C_WRITE);    // Display Adresse + 0 für 
schreiben

  i2c_write(0x07);                        // Command Byte 0x07 für 
Display Test siehe Datenblatt S. 11 (alle LED´s an)

  i2c_write(0x07);                        // Data Byte 0x07 für Display 
Test (siehe Datenblatt S. 12)

  i2c_stop();

}

return 0;
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren