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!
Sieht so aus als würdest du nur die PullUp schalten und nicht die Ausgänge. Ist aber mangels Programmeinsicht nur eine Vermutung.
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);
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.