Gast
#3110
Hello, Sorry dass ich mit meinen vielen Fragen so nerve. Bei mir ist es immer so dass ich mich eine Zeitlang immer nur mit einem Gebiet befasse, dann wieder mit etwas anderen. Jetzt ist wieder die Elektronik/uCs dran... Aber wem die ganzen Fragen stören kann sie eh ignorieren ;) Was sind eigentlich die Standardwerte in DDRD, DDRB und DDRC? Sind standardmässig alle als Ausgang oder als Eingang konfiguriert? (ich persönlich tippe als Eingang). Bezüglich der Datenrichtungen: mit sbi(DDRx, Pin) setzt man den Pin als Ausgang, mit cbi(DDRx, Pin) als Eingang oder? Bezüglich der Daten: mit sbi(PORTx, Pin) setzt man den Pin auf Strom, d.h. ich erhalte draussen ein HIGH, mit cbi(PORTx, Pin) erhalte ich ein LOW oder? Bei Eingängen, vor allem bei Schaltern muss ich IMMER einen Pullup-Widerstand einbauen, damit falls kein Signal kommt, der Zustand nicht irgendwas ist sondern auf Masse geht. Hab ich das so richtig verstanden? Kann ich die Grösse so eines Pullups generell bei AVR's auf 1kOhm setzen? Beim LED im Tuturial ist der Ausgang komplett umgekehrt. D.h. cbi schaltet die LED ein, sbi aus, da der andere Pol der LED gegen VCC geschaltet ist. Hab ich das richtig verstanden? Aber wieso ist das so gemacht? Kann ich nicht einfach die LED umdrehen (ich gehe vom Tutorial aus), zwischen AVR und der LED einen Widerstand und die andere Seite der LED auf GND schalten? So würde nichts passieren, wenn ich cbi() auf den Pin mache, aber wenn ich sbi() mache, würde aus dem Pin HIGH kommen und der Strom würde fliessen. Ist da was falsch in meiner Überlegung? Ich will es ermöglichen, per Jumper einstellen zu können, ob ich Hardware oder Software Handshake verwenden will. In diesem Fall muss ich den Jumper genau so positionieren wie der Schalter im Tutorial (Kapitel2, I/O Grundlagen) oder? Den Pin dann mit cbi(PORTx, Pin) auf Eingang schalten und mit bit_is_set(PINx, Pin) lesen. Wenn das Bit gesetzt ist, ist auch der Jumper gesetzt, wenn es nicht gesetzt ist dann ist der Jumper nicht gesetzt. Stimmt das so? Nun möchte ich auch per Jumper die Baudrate einstellen können. Wenn ich das so mache wie oben, brauche ich dafür 5 I/O Ports, ich möchte aber nur einen dafür verbrauchen. (Es wäre aber möglich zwar andere I/O Ports zu verwenden, die man aber zusätzlich für anderes verwenden kann, aber ich weiss nicht ganz wie das möglich sein soll). Hat da wer nen Tipp wie das mit Jumpern funktioniert? (Ich hätte ganze 8 I/O Pins die nur als Ausgang dienen und zum Drucker gehen. Damit könnte ich doch am Anfang wenn die Leitungen noch nicht gebraucht werden die verschiedenen Pins nach der Jumperposition abfragen. Doch wenn die Pins jetzt mit dem Drucker verbunden sind, steht dann auf einmal die eine Leitung wo der Jumper gesetzt ist immer auf einem gewissen logischen Pegel?) Danke im Vorraus, Niki