Okay, klappt Super Danke!
Werbung
Okay, klappt Super Danke!
Geändert von AsuroPhilip (22.10.2011 um 15:57 Uhr) Grund: Lösung gefunden!
So weit so gut.... der mega8 kann die anzeige perfekt steuern, hier code:
So, aber wie kann die M32 dem mega8 jetzt sagen, was er zeigen soll?Code:#include <avr/io.h> #include "i2cmaster.h" #include <util/delay.h> #define pcf 0b01000110 // Anzeige #define pcf2 0b01000010 // Segmente void long_delay(uint16_t ms){ for(; ms>0; ms--) _delay_ms(1); } const char Zahl[] = { 0b01000100, 0b01111101, 0b10100100, 0b00110100, 0b00011101, 0b00010110, 0b00000110, 0b01111100, 0b00000100, 0b00010100 }; void twi_send( unsigned char befehl ){ i2c_start(pcf+I2C_WRITE); i2c_write(befehl); i2c_stop(); } void twi_send2( unsigned char befehl1 ){ i2c_start(pcf2+I2C_WRITE); i2c_write(befehl1); i2c_stop(); } void ZeigeZahl(uint16_t Zahl4){ char a_zahl1[5]; snprintf(a_zahl1, sizeof(a_zahl1), "%d", Zahl4); twi_send(0b1111110); twi_send2(Zahl[a_zahl1[0] - '0']); long_delay(8); twi_send2(0b11111111); twi_send(0b1111101); twi_send2(Zahl[a_zahl1[1] - '0']); long_delay(8); twi_send2(0b11111111); twi_send(0b1111011); twi_send2(Zahl[a_zahl1[2] - '0']); long_delay(8); twi_send2(0b11111111); twi_send(0b1110111); twi_send2(Zahl[a_zahl1[3] - '0']); long_delay(8); twi_send2(0b11111111); } int main(void) { i2c_init(); while(1) { ZeigeZahl(1234); } return 0; }
edit:
habe die plantine verkleinert, damit ich sie unter der normalen exp. verstecken kann.
hier noch ein (handy-) Foto: (habe meine richte cam gerade nicht hier)
![]()
Geändert von AsuroPhilip (22.10.2011 um 17:22 Uhr) Grund: Foto
Der Master speichert die Segmentmuster der Ziffern und schickt sie endlos an den Anzeigeslave? So war das doch nicht gedacht, oder? Der Master schickt einmalig die Ziffernfolge und der Slave steuert endlos die entsprechenden Segmente an.
Das Bild ist leider sehr unscharf, ich kann den Sockel für den Mega8 gar nicht erkennen. Was macht der Taster?
![]()
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ich sagte ja Handycam. Sockel hatte ich keinen mehr. Der Taster ist Reset. Die drei Stiftleisten sind zum programmiern. Rechts kommen noch Servostecker.
der Code oben ist vom mega8. also ich hab mir das so vorgestellt:
M32 sendet einmalig die Zahl(z.B. 1234) an den mega8, der speichert dann 1234 in eine Variable und führt dann immer das aus: ZeigeZahl(Variable); und sobald eine neue Zahl kommt wieder von vorn.
Das ist der Code vom Mega8? Spielt da immer noch der PCF mit? Der Mega8 kann doch die Segmente selbst ansteuern.
Ächz:
#define pcf 0b01000110 // Anzeige
#define pcf2 0b01000010 // Segmente
![]()
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ja schon, aber das ist
1. viel arbeit wieder alles umzulöten
2. bei mir gerade nicht möglich, weil bei meiner lötstation eben die lötkolbenheizung kaputt gegangen ist (wird nicht heiß), Ersatz-Lötkolben ist bestellt.
geht es so nicht?
der mega8 steuert die pcf´s
okay, sobald ich wieder löten kann, lass ich den mega8 die Segmente steuern. Welche Pins soll ich benutzen, oder ist das egal?
Lesezeichen