closed

Loginbox

Please enter your username and password into the following fields to log in.


  • Username:
  • Password:
  •  
  • Auto log in on every visit.


  •  

Port oder Pin - ich blicks jetzt gar nicht mehr ......



Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1538
Registered: 03 / 2003
Private message
Subject: Port oder Pin - ich blicks jetzt gar nicht mehr ......  -  Posted: 12.01.2019 - 16:28   -  
Hallo,

wieder einmal habe ich ein seltsames Phänomen und bin dabei auf etwas gestoßen, was ich mal eindeutig klären möchte.

Das sollte doch richtig sein:
Code
PortE:=PinE or %00000011;

Port beim setzen eines Ports, Pin beim lesen eines Ports oder?

Wo ist denn dann bitte da der Unterschied (beides compilierbar):
Code

Var
  Hold_3V3[@PortE, 0]     : Bit;
  Hold_5V0[@PinE, 1]     : Bit;


Ich habe obige Deklaration (beide mit PortE) in meinem Programm und setze das mit
Code

DDRE:=%00000011;

Hold3V3:=1;
Hold5V0:=1;


Gruss
Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
go down go up
Gunter online
Administrator
Avatar
Gender: male
Location: GERMANY  Frankfurt Main / Germany
Age:
Posts: 1619
Registered: 02 / 2003
Private message
Subject: Re: Port oder Pin - ich blicks jetzt gar nicht mehr ......  -  Posted: 12.01.2019 - 16:46   -  
Hi,
PortE := setzt den Pin wenn DDRE = 0 ist
PinE liest den Pin wenn DDRE = 1 ist
Das Lesen von PinE bei einem als Ausgang deklarierten Pin ergibt den
Wert des letzten Schreibens und nicht was da gerade anliegt.

(Das Schreiben von PinE bei einem Augang ist die Sache mit den internen PullUps)
Oder habe ich die Frage noch nicht ganz verstanden ?
Gunter
2 Dinge sind unendlich: das Universum und die menschliche Dummheit.
Aber bei dem Universum bin ich mir noch nicht ganz sicher
--
Albert Einstein

---
The concept of global warming was created by and for the Chinese in order to make U.S. manufacturing non-competitive
--
Donald J. Trump on Twitter
This post has been edited 4-times. Last edit: 14.01.2019 - 01:23 by Gunter.
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1538
Registered: 03 / 2003
Private message
Subject: Re: Port oder Pin - ich blicks jetzt gar nicht mehr ......  -  Posted: 12.01.2019 - 18:56   -  
Hi Gunter,

also was ist dann richtig?

PortE:=PortE or %00000011;
oder
PortE:=PinE or %00000011;

Und wieso kann ich bei der Variablen-Definition [@PinE,0] und [@PortE,0] schreiben? Was stimmt und wieso? Was ist falsch und warum gehts trotzdem?

Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
go down go up
rh offline
Administrator
Avatar
Gender: male
Location: GERMANY  Germany
Age:
Posts: 5464
Registered: 03 / 2002
Homepage Private message
Subject: Re: Port oder Pin - ich blicks jetzt gar nicht mehr ......  -  Posted: 12.01.2019 - 21:48   -  
Hallo Harry
port ist das Output Register
Pin ist das input Register
Auf beide kann man Bits plazieren
Beide kann man lesen und schreiben
Ein Blick in ein Mega oder xmega
Datenblatt hilft da weiter
rolf
Cars don't buy cars -- Autos kaufen keine Autos.
Henry Ford
go down go up
Gunter online
Administrator
Avatar
Gender: male
Location: GERMANY  Frankfurt Main / Germany
Age:
Posts: 1619
Registered: 02 / 2003
Private message
Subject: Re: Port oder Pin - ich blicks jetzt gar nicht mehr ......  -  Posted: 13.01.2019 - 06:16   -  
Hallo Harry,

ich fürchte, auch die Antwort von rh hat dir oben nicht wirklich weitergeholfen.
Dehalb jetzt mal konkret zu deiner Frage:

ich zitiere aus dem Mega8 Manual (AFAIK hat sich da auch bei XMegas nix geändert):
Reading the Pin Value Independent of the setting of Data Direction bit DDx, the port pin can be read through the PINn Register.


Bei Unklarheiten hilft mir oft das Prinzip Schaltbild (s.u.).
Das solltest du wirklich mal intensiv studieren !
Was an zig Stellen wortreich beschrieben ist, steckt da alles "auf einen Blick" drin.

Man sieht (grün), dass über Pin Register die tatsächlich anliegenden Pegel gelesesen werden.
Über das Port Register wird der Stand des Ausgangs-Latch gelesen, was aber ja gar nicht dem aktuellen Zustand entsprechen muss, wenn man dynamisch zwischen Input und Output wechselt/gewechselt hat (rot).
Also musst du das PinE benutzen.
Bei der Variablen Def geht nur deshalb scheinbar beides, weil du zwischendurch
die Ausgänge nicht als Eingänge umdefinierst und das Ausgangslatch bei den
Ausgängen auch immer dem Pin Pegel entspricht. Die Inputs Pins sind über PortE gar nicht zu lesen. Da bekommst du den (zufälligen) Stand des Output Latch (oder den Wert, der da beim letzten Mal -als der Pin mal Output war- ausgegeben wurde)

Gruß,
Gunter

p.s.:
ich selber halte mich daran, Ausgänge NIE zu lesen und Eingänge NIE
zu schreiben (abgesehen wg. PullUps). Bei gemischt genutzen Ports
blende uninteressante Bits dann mit AND aus. So ist mir auch noch in
2 Jahren klar, was da passiert.
You must be logged in or your permissions are to low to see this Attachment(s).
2 Dinge sind unendlich: das Universum und die menschliche Dummheit.
Aber bei dem Universum bin ich mir noch nicht ganz sicher
--
Albert Einstein

---
The concept of global warming was created by and for the Chinese in order to make U.S. manufacturing non-competitive
--
Donald J. Trump on Twitter
This post has been edited 9-times. Last edit: 25.01.2019 - 16:34 by Gunter.
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1538
Registered: 03 / 2003
Private message
Subject: Re: Port oder Pin - ich blicks jetzt gar nicht mehr ......  -  Posted: 13.01.2019 - 12:30   -  
Hallo Gunter,

danke das war eine hervorragende Erklärung.

Ich möchte aber noch erzählen, warum die Frage aufkam: Ich habe eine Schaltung vorliegen, die es seit 1 1/2 Jahren gibt und deren Programm ich jetzt angepaßt habe. Die Schaltung wird eingeschaltet in dem mit einer Taste das Gate eins P-Kanal-FET auf GND gezogen wird und der µC dieses dann auf GND hält (natürlich wird das Gate mit der Taste über einen R und eine Diode auf GND gezogen und der µC macht das über einen NPN-Transistor). Plötzlich passierte etwas sehr seltsames: der µC hat die Spannung nicht mehr eingeschaltet gelassen. Ich habe dieses Hold3V3:=1 im Programm verschoben und sogar den Port mit PortE:=PortE or %00000011 oder PortE:=PinE or %00000011 direkt angesprochen, aber es funktionierte nicht mehr (immer!). Seltsamerweise ging es (fast) immer, wenn der Progger eingesteckt war und die Schaltung schon eine Weile in Betrieb war (Kondensatoren geladen). Ich habe dann mit den BodLevels rum probiert, aber auch das half nichts.
Gestern habe ich dann den Fehler gefunden und ehrlich damit hätte ich niemals gerechnet: Bisher wurde die Schaltung während des programmierens mit einem alten HP-Netzteil mit Spannung versorgt und da meine Schaltung einen Zigarettenanzünderstecker als Anschluss besitzt, habe ich kürzlich ein anderes, altes 12V/2A-Netzteil mit passenden Buchsen ausgerüstet und dann dieses verwendet und genau dieses Netzteil verursachte die Probleme. Sobald ich dieses verwende bleibt die Spannung nicht eingeschaltet, mit dem alten HP-NT geht es wie erwartet. Ich muß mal demnächst die Spannung des neuen NTs mit dem Oszi anschauen. Selbst wenn das neue NT einen grausamen Rippel hat, dürfte das doch nicht durch den 3.3V-Schaltregler, der den µC versorgt, so durchschlagen? Wenn die Taste nämlich gedrückt bleibt, arbeitet der µC und das Display ganz normal.

Gruss
Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
This post has been edited 2-times. Last edit: 13.01.2019 - 12:33 by Harry.
go down go up
 


Registered users in this topic
Currently no registered users in this section

Delete cookies of this forum  •  FAQ / Help  •  Team page  •  Imprint   |  Local time: 17.08.2019 - 15:19