Forum: Mikrocontroller und Digitale Elektronik 75160 - Ansteuerungsproblem - mysteriöse Pegel!


von Stefan (Gast)


Lesenswert?

Hi,

ich habe derzeit ein GPIB Projekt am laufen. Die Treiber sind nach 
längeren Recherchieren der 75160 und 75161 geworden. Soweit nichts 
besonderes :)
Allerdings verhält sich der 75160 sehr komisch (den 161er konnte ich 
noch nicht testen, weil ich ihn noch nicht habe).
Ich habe alles verdrahtet, und die IOs des at90usb zum Test auf High / 
Low gelegt. bei High erhalte ich normale Pegel, bei Low komme ich so auf 
1-1,5V runter. Komisch, ist vielleicht ein zu starker Pullup für mich in 
dem IC verbaut... kann aber doch eigentlich nicht sein?! Der einzige 
Input den ich anständig auf 0V treiben kann ist Pin 19 (D1). Warum 
gerade dieser geht ist mir ein Rätsel.
Hänge ich den at90usb komplett ab und habe quasi nur noch die 
Stromversorgung + TE / PE am IC, so sind die Inputs ebenso auf einem 
Wert in dieser Gegend. Glaube es waren 1,8V, die ich gemessen hatte.
Ziehe ich den Input des 75160 selbst (mittels Drahtbrück) runter, so 
funktioniert es, es deutet also eigentlich auf eine Fehleinstellung im 
Atmega hin.
Mache ich etwas an der Beschaltung verkehrt? Kann mein at90usb den 
Treiber nicht treiben (skuril eigentlich..., ist ja nur Logik?!). 
Brauche ich noch zusätzliche Pullups / Downs oders sonstige Bauteile?

Meine Beschaltung im Moment ist recht einfach: IO-Pads ==> Input 75160
TE ist natürlich auf 1, also Enable, PE habe ich mit 1 (3-state) und 0 
(pullup) probiert, keine Verbesserung.

VIELEN DANK!

von Hubert G. (hubertg)


Lesenswert?

Sieht so aus als würdest du nur die PullUp schalten und nicht die 
Ausgänge.
Ist aber mangels Programmeinsicht nur eine Vermutung.

von Stefan (Gast)


Lesenswert?

Hi,

dank dir erstmal für die Antwort. Daran habe ich auch schon gedacht, 
aber meiner Meinung nach müsste das stimmen:

Die defines in der *.h:
#define DIO_DIRECTION_REGISTER  DDRA
#define DIO_PORT        PORTA
#define S75160_DIRECTION_REGISTER  DDRD
#define S75160_PORT          PORTD
#define S75160_TE          0
#define S75160_PE          1

in der init Funktion der *.c
DIO_DIRECTION_REGISTER = 1;
S75160_DIRECTION_REGISTER |= (1 << S75160_TE) | (1 << S75160_PE);
S75161_DIRECTION_REGISTER |= (1 << S75161_TE) | (1 << S75161_DC);
S75160_PORT &= ~(1 << S75160_TE);
S75160_PORT &= ~(1 << S75160_PE);


in der "sende byte" methode:
S75160_PORT |= (1<< S75160_TE);
DIO_PORT = cmd;  //cmd ist das übergebene byte
...
S75160_PORT &= ~(1<< S75160_TE);

von Stefan (Gast)


Lesenswert?

omg. gerade beim posten hab ich den Fehler selbst gesehen! Danke.
wie konnte ich das Register nur auf 1 setzen. Klar, deswegen geht auch 
nur ein Pin :)
Man - Dank dir!!! Ich bin ein Idiot :/

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.