74hc165 mit atmega8 auslesen

OP #2484363
Lesenswert?
• ▲
▼
Hallo,

ich versuche seit längerer Zeit den Schieberegisterbaustein 74hc165 mit 
einen Atmega8 der mit 12Mhz betrieben wird auszulesen, dabei treten aber 
folgende Probleme auf:

1. Clock und Load sprechen nur an wenn ein Pull-Down Widerstand 
angelödet ist obwohl dies in den im Internet zu findenten Schaltplänen 
nicht aufgeführt ist, auch am Oszilloskop ist ohne Pull-Down ein 
sauberes Clock bzw. Load Signal zu erkennen.
2. Die Schaltung funktioniert nur mit dem unten auskommentierten Delays 
im ms Bereich.
3. Wenn mehrere Eingänge der parallelen Eingange hintereinander auf High 
sind stimmen die seriel ausgegebenen Daten nicht mit den parallelen 
Eingang überein.


int  getRegister()
    {int register = 0;

    PORTB |= (1<<PB0); // Clock auf 1 setzen;
    //_delay_ms(20);
    PORTB &= ~ (1<<PB1); // PINB 1 auf 0 // Load ausführen
     //_delay_ms(20);
    PORTB |= (1<<PB1); // PINB 1 auf 1


    // Datenleitungen auf Eingang, Pullups aus
    DDRB   &= ~ (1<<PB2); // PIN 2 Eingang
    PORTB  &= ~ (1<<PB2); // PIN 2 Pullup aus

    // 8bit abholen

    for (int  i=0 ; i<8; ++i)

        {   register <<= 1;
            if (PINB & (1<<PB2))
            adress |=  0x01;


    PORTB &= ~(1<<PB0);// nächstes Bit aus Schieberegister holen
 // _delay_ms(20);

    PORTB |=  (1<<PB0);
   //_delay_ms(20);

    }
    return register;
}


Ich habe bereits alle im Forum geposteten Beiträge zum 74hc165 
durchgelesen konnte aber leider keine Lösung für mein Problem finden.
Gibt es evtl.einen einfacheren bzw. schnelleren Weg um die Eingänge 
eines Mikrocontrollers zu erweitern?
Da ich mich erst seit ca. einem Jahr mit dem Thema Mikrocontroller 
befasse bitte ich um leicht verständliche Antworten.

Danke!
Angehängte Dateien:

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