Forum: Mikrocontroller und Digitale Elektronik 74hct165 läuft nicht


von Konny (Gast)


Angehängte Dateien:

Lesenswert?

guten abend

ich muss einige taster per eingangserweeiterung über das oben genannte 
ic einlesen. die taster werden mit pullups auf 5v gehalten. ic ist wie 
folgt beschaltet:

shift//load - PD3
clock - PB3
/QH - frei
QH - PB2
Serial In - GND
Clock INHIBIT - GND

ich möchte einfach nur die acht taster einlesen , das problem ist aber 
dass der taster an pin H das komplette ergebnis beeinflusst. ( nicht 
gedrückt ergebnis 0xFF, gedrückt 0x00)

hat jemand eine idee was das problem ist ?

von Karl H. (kbuchegg)


Lesenswert?

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Funktionsweise_2


Die Behandlung deines 'Shift/Load' Pins ist falsch.
Du musst einmalig am Anfang der Funktion dem IC mitteilen: Bitte jetzt 
den Zustand der Eingänge ins Schieberegister übernehmen. Während du dann 
die Bits rausschiebst, darf das nicht mehr passieren.
1
void updateIN()
2
{
3
  // AVR an 165:
4
  // Bitte jetzt den Zustand der Leitungen abfragen
5
  cbi(PORTD,3);
6
7
  // und wieder Ruhe. Bis zur nächsten Abfrage haben dich die Eingangsleitungen
8
  // nicht mehr zu interessieren ...
9
  sbi(PORTD,3);
10
11
  // ... ich hol mir unterdessen mal die 8 Bits ab
12
  
13
  for (uint8_t c=0;c<8;c++)
14
  {
15
     ....

von Karol B. (johnpatcher)


Lesenswert?

Übrigens sind absolute Pfade bei #include eine ziemlich schlechte Idee:
1
#include "E:\AVR\ATmega32\Includes\BitUtilities.h"

Mit freundlichen Grüßen,
Karol Babioch

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.