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
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.
>Auf den I2C Bus Leitungen kann ich auch mittels Osci nix messen...
Pullups vergessen?
Ja die hatte ich vergessen... Jetzt habe ich angehängtes Signal am Osci. Bei 0,5us pro Division entspricht das einem Takt von 1MHz. Ich habe aber eigentlich 100kHz im i2cmaster.c eingestellt. Außerdem sind das nur 60mVss - am Display tut sich immer noch nix.
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 | }
|
:
Bearbeitet durch User
Karl Heinz schrieb: Das hier > #define Dev24C02 1010000 // Display Adresse (AD1=GND AD0=GND) siehe ist keine Binärzahl. Wenn schon binär, dann #define Dev24C02 0b01010000 Aber eigentlich ist es reichlich unsinnig, sowas in binär anzugeben.
>> #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;)
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; }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.