Hallo, Ich hab mir einen MM5450 (Datenblatt: http://www.micrel.com/_PDF/mm5450.pdf) gekauft und an meinen Atmega8 angeschlossen: Mein problem ist: ich habe 5 (pc0 bis pc4) data leitung und pd7 clock Und zum Testen habe ich mal nur 5 dot matrix und zwar an OUTPUT des MM5450 angeschlossen. dh pc0 fuer 1 dot matrix ,pc1 fuer 2 dotmatrix ... Mein problem :ich habe die erste 5*7 dot matrix geschaft zu starten aber fuer den rest ,ich weiss nict wie es geht wieter. im datenblat steht dass ,mm5450 sorgt fuer eine multplixung danke im voraus C code : #define F_CPU 16e6 // 16MHz #include <avr/io.h> #include <util/delay.h> // Access bits like variables: struct bits { uint8_t b0:1; uint8_t b1:1; uint8_t b2:1; uint8_t b3:1; uint8_t b4:1; uint8_t b5:1; uint8_t b6:1; uint8_t b7:1; } __attribute__((_packed_)); #define SBIT_(port,pin) ((*(volatile struct bits*)&port).b##pin) #define SBIT(x,y) SBIT_(x,y) #define DAT SBIT( PORTC, PC0 ) #define DAT_DDR SBIT( DDRC, PC0 ) #define CLK SBIT( PORTB, PB0 ) #define CLK_DDR SBIT( DDRB, PB0 ) void mm5450_wr( uint8_t num, uint8_t val ) { do{ CLK = 0; DAT = 0; if( val & 0x01 ) // LSB zuerst DAT = 1; val >>= 1; _delay_us( 1 ); // MM5450 ist schnarchlahm (0,5MHz) CLK = 1; _delay_us( 1 ); // MM5450 ist schnarchlahm (0,5MHz) }while( --num ); CLK = 0; } int main( void ) { CLK_DDR = 1; DAT_DDR = 1; mm5450_wr( 35, 0 ); // bringe MM5450 in definierten Anfangszustand for(;;){ mm5450_wr( 1, 1 ); // startbit mm5450_wr( 8, 0xFF ); // Bit 1..8 = ein mm5450_wr( 8, 0xFF ); // Bit 9..16 = ein mm5450_wr( 8, 0xFF ); // Bit 17..24 = ein mm5450_wr( 8, 0xFF ); // Bit 25..32 = ein mm5450_wr( 3, 0x07 ); // Bit 33..35 = ein _delay_ms( 1000 ); mm5450_wr( 1, 1 ); // startbit mm5450_wr( 8, 0x00 ); // Bit 1..8 = aus mm5450_wr( 8, 0x00 ); // Bit 9..16 = aus mm5450_wr( 8, 0x00 ); // Bit 17..24 = aus mm5450_wr( 8, 0x00 ); // Bit 25..32 = aus mm5450_wr( 3, 0x00 ); // Bit 33..35 = aus _delay_ms( 1000 ); } }
Sabri H. schrieb: > im datenblat > steht dass ,mm5450 sorgt fuer eine multplixung Nö. Wenn Du multiplexen willst, muß das in SW erfolgen (Timer-Interrupt).
Also wie wurde das gemacht ?können sie mir helfen ich bin ganz verzweifelt .
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.