Hallo. Ich versuche gerade, die serielle Ausgabe eines 74HC165 Schieberegisters irgendwie in ein Array oder Ähnlichem zu speichern. Bin ziemlicher Anfänger und bräuchte mal Hilfe beim Code. Versuche mich dabei mit C. Das Schieberegister 74HC165 (Eingänge) bekommt HIGH bzw LOW von einem Zweiten Schieberegister 74HC595 (Ausgänge)- benutze einen Atmega8. 74HC595 (Ausgänge) gibt über ein Array folgendes aus: char SteckerA[8] = {1,0,1,0,1,0,1,0,}; Über Q7 des 74HC165 (Eingänge) kann ich dann auch eine serielle Ausgabe starten und z.B. eine Led 4 mal blinken lassen. Ich möchte jetzt aber, die serielle Ausgabe über Q7 in ein Array abspeichern z.B. als Gegenstück zu char SteckerA[8] = {1,0,1,0,1,0,1,0,}; soll das Array char SteckerB[8] = {1,0,1,0,1,0,1,0,}; initialisiert werden . Irgeenjemand n Denkanstoß? Gruß Andreas
Bitte ? Ich würde dir ja gerne helfen, aber irgendwie versteh ich's nicht... Hast Du ein Problem mit der Hardware (wo muss welcher Pin angeschlossen werden) oder klappt das einlesen vom 165er schon und du möchtest nur die Aufteilung in eine Array?
Hallo. Hardware läuft wunderbar. Aus dem 74HC165 schiebe ich seriell aus Q7 raus und kann das auch mit Hilfe eine LED (blinken) viswuell darstellen. Ich würd nur gern die Abfolge der HIGHs und LOWS in ein Array oder so schreiben. Ich glaub, das wurde hier im Forum auch schob gelöst, ich versteh es bloß nicht: unsigned char read_HC165( void ) { unsigned char result = 0; // Clock auf 1 halten PORTB |= (1<<PB5); // ein 0/1 Puls auf der PL Leitung. Der 165 übernimmt die // externen Datenleitungen ins SR PORTB &= ~(1<<PB6); PORTB |= (1<<PB6); // Datenleitung auf Eingang, Pullup aus DDRB &= ~(1<<PB4); PORTB &= ~(1<<PB4); // und die 8 Bit abholen for( unsigned char j = 0; j < 8; ++j ) { result <<= 1; if( PINB & ( 1 << PB4 ) ) result |= 0x01; // nächstes Bit aus dem SR mit einem 0/1 Puls raustakten PORTB &= ~(1<<PB5); PORTB |= (1<<PB5); } return result; } Der entscheidene Bereich für mich: // und die 8 Bit abholen for( unsigned char j = 0; j < 8; ++j ) { result <<= 1; //Bedeutung: schiebt unsigned char result 1 nach links? if( PINB & ( 1 << PB4 ) ) result |= 0x01; //Beduetung??????? Gruß Andreas
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.