. BASCOM AVR PORTA.3 = Output PINA.3 = OUTPUT Ist das gleichwertig? Kurt
Werner D. schrieb: > Nein OK, bin nämlich drauf reingefallen. Das Ergebnis war dass er in einem UP den Ausgang toggelte anstatt in zu schalten. Mit Reset PORTx.5 WAITMs xx SET PORTx.5 geht's Gehe ich richtig wenn ich annehme dass sich Portx immer auf Ausgabe und PINx immer auf Eingabe bezieht? Kurt
Kurt B. schrieb: > Gehe ich richtig wenn ich annehme dass sich Portx immer auf Ausgabe > und PINx immer auf Eingabe bezieht? Antwort vom Sender Jerewan: „Im Prinzip ja, aber …“ Schreiben auf PINx hat in diesem Zusammenhang ja keine Bedeutung. Daher hat man bei AVRs jüngerer Konstruktion (musst du im jeweiligen Datenblatt nachlesen) diese Funktion überladen, indem man sie zum Toggeln des entsprechenden Ausgangsbits benutzt. Das hattest du ja im Prinzip aber schon bemerkt. ;)
Kurt B. schrieb: > BASCOM AVR > > PORTA.3 = Output > PINA.3 = OUTPUT Welche Compiler Version versteht das? > Ist das gleichwertig? Wenn da jeweils ein Config vorsteht, ja.
Jörg W. schrieb: > Kurt B. schrieb: >> Gehe ich richtig wenn ich annehme dass sich Portx immer auf Ausgabe >> und PINx immer auf Eingabe bezieht? > > Antwort vom Sender Jerewan: „Im Prinzip ja, aber …“ > > Schreiben auf PINx hat in diesem Zusammenhang ja keine Bedeutung. > Daher hat man bei AVRs jüngerer Konstruktion (musst du im jeweiligen > Datenblatt nachlesen) diese Funktion überladen, indem man sie zum > Toggeln des entsprechenden Ausgangsbits benutzt. Das hattest du ja > im Prinzip aber schon bemerkt. ;) Allerdings! Es geht um den MEGA 2560 und dem Compiler 2.0.7.1 Kurt
PortA.3 = 1 (oder 0) ist ein Ausgabebefehl bzw. A = PinA.3 ist ein Einlesebefehl Mit Config PortA.3 = output / input wird die Datenrichtung festgelegt.
:
Bearbeitet durch User
Sigi schrieb: > Kurt B. schrieb: >> BASCOM AVR >> >> PORTA.3 = Output >> PINA.3 = OUTPUT > > Welche Compiler Version versteht das? > >> Ist das gleichwertig? > > Wenn da jeweils ein Config vorsteht, ja. Anscheinend doch nicht. so gehts ------------------ Config PORTA = Output Config PORTC = Output Config PORTE.4 = Output Config PORTE.5 = Output Config PINB.5 = Input Set PORTE.4 Set PORTE.5 ------------------- so geht's nicht ------------------- Config PINE.4 = Output Config PINE.5 = Output Config PINB.5 = Input Set PINE.4 Set PINE.5 ------------------- Ich gehe mal davon aus dass PORTx als Ausgang und PINx als Eingang sauber funktioniert. Kurt
Kurt B. schrieb: > Es geht um den MEGA 2560 Dürfte historisch der älteste AVR sein, bei dem dieses „Schreiben auf PINx bewirkt ein Toggeln des Ausgangs“-Feature implementiert worden war.
. Config PINB.5 = Input ist wohl auch nicht korrekt. Config PORTB.5 = Input wäre dann logischer. Kurt
Kurt B. schrieb: > Config PINB.5 = Input > ist wohl auch nicht korrekt. > > Config PORTB.5 = Input > wäre dann logischer. Beide Kommandos wirken auf das DDRB Register und löschen dort das Bit 5 und machen den Portpin zu einem Input. Klassisch wird über PINB der Zustand eines Input Portpins abgefragt. Klassisch wird über PORTB der Zustand eine Outputs gesetzt. Logisch wäre "Config PINB.5 = Input" und "Config PORTB.5 = Output" wenn man schon nicht DDRB als Parameter angeben kann. Version 2.0.7.5 über Simulation getestet. Ich kann deine Probleme nicht nachvollziehen. Schick mal ein komplettes kompilierbares Programm. Und was bedeutet: geht nicht???
Kurt B. schrieb: > Config PINB.5 = Input > ist wohl auch nicht korrekt. > > Config PORTB.5 = Input > wäre dann logischer. Der Compiler gibt halt die Schlüsselworte vor. Beispiel: Portpin Initialiserung Eingabe --- '*** Port und Pin für den DCF77-Empfänger Dcf_empfaenger Alias Pinb.1 'HIER DEN Port-IN-Pin EINTRAGEN Config Dcf_empfaenger = Input '*** Portpin einlesen EineVariable = Dcf_empfaenger --- Beispiel: Portpin Initialiserung Ausgabe : Live_led Alias Portb.1 ' Live-Led Config Live_led = Output '*** Portpin steuern Reset Live_led oder Set Live_led --- Alex
Sigi schrieb: > Kurt B. schrieb: >> Config PINB.5 = Input >> ist wohl auch nicht korrekt. >> >> Config PORTB.5 = Input >> wäre dann logischer. > > Beide Kommandos wirken auf das DDRB Register und löschen dort das Bit 5 > und machen den Portpin zu einem Input. Könnte auch so sein dass die Pins im DDBR von Haus aus gelöscht sind. > Klassisch wird über PINB der Zustand eines Input Portpins abgefragt. > Klassisch wird über PORTB der Zustand eine Outputs gesetzt. So hab ich das bisher auch immer verstanden, aber Naja. > Logisch wäre "Config PINB.5 = Input" und "Config PORTB.5 = Output" wenn > man schon nicht DDRB als Parameter angeben kann. > > Version 2.0.7.5 über Simulation getestet. Ich kann deine Probleme nicht > nachvollziehen. > > Schick mal ein komplettes kompilierbares Programm. Und was bedeutet: > geht nicht??? X1 Kurt
Kurt B. schrieb: > Könnte auch so sein dass die Pins im DDBR von Haus aus gelöscht sind. Könnte nicht nur, ist auch so: außer bei einem Softreset durch Sprung auf Adresse 0 erhalten die verantwortlichen DDR-Register ihre Initial Value = 0 und damit sind sie Eingang. Später im Code kann alles anders sein, bereits ein Bootloader könnte einen Pin als Ausgang setzen, der auch solange Ausgang bleibt, bis das Hauptprogramm ihn gezielt ändert. Config Pin/Port kann wiederverwendet werden und die Pins auf Eingang/Ausgang (re-)konfigurieren. Warum schaust Du Dir nicht die Hilfe zu Bascom an? Dort ist zu lesen, dass Pin und Port im Kontext mit Config gleichbedeutend sind. Ob Dir das gefällt, bzw. was Du davon hältst ist sekundär, es ist eben so, nimm die Version, die Dir besser gefällt. Ohne diesen Config-Kontext bezeichnet Pin einen Eingang und Port einen Ausgang.
MWS schrieb: > Kurt B. schrieb: >> Könnte auch so sein dass die Pins im DDBR von Haus aus gelöscht sind. > > Könnte nicht nur, ist auch so: außer bei einem Softreset durch Sprung > auf Adresse 0 erhalten die verantwortlichen DDR-Register ihre Initial > Value = 0 und damit sind sie Eingang. Später im Code kann alles anders > sein, bereits ein Bootloader könnte einen Pin als Ausgang setzen, der > auch solange Ausgang bleibt, bis das Hauptprogramm ihn gezielt ändert. > Ein Bootlader ist ja schon ein Programm. > Ohne diesen Config-Kontext bezeichnet Pin einen Eingang und Port einen > Ausgang. Davon bin ich immer ausgegangen, hab mich durcheinanderbringen lassen bzw. war unsicher. Danke euch für die Hilfen! Das mit dem Toggeln (Jörg) war mir neu, sonst wäre das mit der "seltsamen" Ausgabe ja eh gleich klar gewesen. Kurt
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.