Forum: Mikrocontroller und Digitale Elektronik 74hc165 mit atmega8 auslesen


von Johannes G. (joe89)


Angehängte Dateien:

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!

von Krapao (Gast)


Lesenswert?

>             adress |=  0x01;
1
      register |=  0x01; // <=== !

Datenblatt: 74HC165

Beitrag "Re: 74HC165 auslesen C"

von Edi R. (edi_r)


Lesenswert?

Ich sehe nirgendwo, dass die beiden Ausgänge "Clock" und "Load" (PB0 und 
PB1) auch als Ausgänge konfiguriert sind.

von Johannes G. (joe89)


Lesenswert?

Ok der Fehler war dass PB0 und PB1 nirgends als Ausgänge definiert 
wurden, die Schaltung funktioniert jetzt! Danke Edi R.

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
Noch kein Account? Hier anmelden.