BASCOM AVR Bedeutung

Moderator Persönliche Seite #4899368
Lesenswert?

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. ;)
OP #4899402
Lesenswert?

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
OP #4899410
Lesenswert?

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
Gast #4899457
Lesenswert?

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???
#4899514
Lesenswert?

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
OP #4899545
Lesenswert?

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
Angehängte Dateien:
Gast #4899591
Lesenswert?

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.
OP #4899638
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren