Begriffe zum PIC?

Gast #2551873
Lesenswert?

Hallo,

Ich hab da ein paar blöde Fragen und zwar programmiere ich mit einem 
PicKit 3
auf nem Gemini Board das man auf der Seite ftkl.at nachbauen kann bzw 
hat das unsere Schule so in der Richtung nachgebaut und es Funktioniert 
soweit auch alles.

Auf dem Board befindet sich ein PIC18F4550

Ich verwende das Board hauptsächlich um das Programmieren zu üben was 
mir aber Probleme bereitet sind ein paar Begriffe wie : TRIS, LAT und 
PORT

Ich programmiere mit MPLAB und dem C 18 Compiler.
Wir haben zum Beispiel in der Schule mal am PORT D  RB/D die LED's von 0 
bis 7 angesteuert und leuchten lassen und herumgespielt, dabei versteh 
ich aber nicht wirklich den Sinn der oben genannten Begriffe also PORT 
is ja eig klar aber zb dass hier:

LATD = 0x00;
TRISD = 0xFE;

was bedeutet das 0x00 oder 0xFE und statt LAT kann ich ja PORT auch 
schreiben und ich muss sie ja als input bzw als output festlegen dazu 
dient ja das 0x00 aber ich versteh das irgndwie nicht...

In der Schule habn wir das zwar umständlich mit ner while Schleife 
gemacht aber so gings halt auch, besser wäre es mit der for gewesen viel 
weniger zum schreiben^^:

/****Includes****/

#include <P18F4550.h>
#include <delays.h>


/****Lauflicht****/

void main () {

TRISD= 0x00;

  while (1)
{

    PORTD= 0x01;
  Delay10KTCYx(255);
  PORTD= 0x02;
  Delay10KTCYx(255);
  PORTD= 0x04;
  Delay10KTCYx(255);
  PORTD= 0x08;
  Delay10KTCYx(255);
  PORTD= 0x10;
  Delay10KTCYx(255);
  PORTD= 0x20;
  Delay10KTCYx(255);
  PORTD= 0x40;
  Delay10KTCYx(255);
  PORTD= 0x80;
  Delay10KTCYx(255);
  PORTD= 0x40;
  Delay10KTCYx(255);
  PORTD= 0x20;
  Delay10KTCYx(255);
  PORTD= 0x10;
  Delay10KTCYx(255);
  PORTD= 0x08;
  Delay10KTCYx(255);
  PORTD= 0x04;
  Delay10KTCYx(255);
  PORTD= 0x02;
  Delay10KTCYx(255);

}
}

Für was steht das ganze 0x08 usw das is ja hex irgndwie ka^^ und hat ja 
dan auch was mit der Nummer bzw welches LED leuchtet zu tun oder?

Am besten wäre mal ne Erklärung für TRIS und LAT


Danke schon mal
#2552227
Lesenswert?

Thomas schrieb:
> Am besten wäre mal ne Erklärung für TRIS und LAT

Hallo Thomas,

TRIS steht für TRI-State und hat im Zusammenhang mit Digital-IO bei 
PIC18 folgende Funktion:

Steht ein Bit in einem TRIS-Register auf 1 wie "Input", ist der 
korrespondierende Pin als Eingang geschalten. Das Logik-Level an einem 
solchen Eingang kannst du aus den dazu gehörenden Port-Registern lesen.
Steht ein TRIS-Bit auf 0 wie "Output", ist der korrespondierende Pin ein 
Ausgang. Diese werden ja nicht gelesen sondern aktiv bedient, dazu 
verwendet man die LAT-Register. Setzt du ein LAT-Bit auf 1, erhält der 
dazu gehörende Pin den Zustand "Hi", bei 0 den Zustand "Low".

Zusammengefasst:

TRISx bestimmt die Richtung. PORTx zeigt Eingänge, LATx setzt Ausgänge

Gruß,
Edson
#2554336
Lesenswert?

Also im DATENBLATT (Erste Seite für die I/Os:

> Each port has three registers for its operation. These
> registers are:
> • TRISx registers (data direction register)
> • PORTx registers (reads the levels on the pins of the device)
> • LATx registers (output latch)
>
> The Data Latch (LATx registers) is useful for
> read-modify-write operations on the value that the I/O
> pins are driving.
>
> A write operation to the LATx register has the same
> affect as a write to the corresponding PORTx register.
> A read of the LATx register reads of the values held in
> the I/O PORT latches, while a read of the PORTx
> register reads the actual I/O pin value.

Es ist NICHT so, dass man zum Ausgänge setzen LATx benutzen MUSS, es 
geht auch PORTx.

Und das was in der While steht, ist nichts anderes, als alle Pins 
nacheinander auf 1 zu setzen. Geht auch eine 1 zusetzen und dann per 
links/rechts-shift das bit zu verschieben.
#4326981
Lesenswert?

Thomas schrieb:
> Am besten wäre mal ne Erklärung für TRIS und LAT

Das sind Abkürzungen der englischen Begriffe TRISTATE und LATCH. Beide 
Begriffe stammen aus der Digital-Elektronik. Ein TRISTATE Logikausgang 
ist einer der 3 (THREE - ausgesprochen wie TRI) Zustände annehmen kann: 
L, H und hochohmig. Der hochohmige Zustand wird manchmal auch Z oder 
einfach "der Dritte" Zustand genannt. Und durch das Setzen eines Bits im 
TRI Register schaltest du den IO-Pin der zu diesem Bit gehört in diesen 
dritten Zustand. Nur wenn ein IO-Pin sich in diesem dritten Zustand 
befindet, kann er als Eingang genutzt werden. Sonst gibt er ja selber 
entweder H oder L aus.

Ein LATCH hingegen ist ein digitaler Zwischenspeicher. Der Begriff 
deutet auf ein Schaltungsdetail von Computern hin (und ein µC ist ja ein 
Computer auf einem Chip).

Der µC hat intern einen Datenbus, der Register, Speicher, IO-Ports und 
CPU verbindet. Wenn man jetzt irgendwo ein Bitmuster dauerhaft ausgeben 
will, dann verwendet man dazu ein Latch das mit seinen Eingängen am 
Datenbus hängt. Dann gibt die CPU die entsprechenden Logikpegel auf den 
Datenbus und sendet dem Latch einen Impuls, damit es dieses Bitmuster 
speichert. Anschließend kann der Datenbus für die nächste Operation 
verwendet werden und das Latch behält die eingespeicherten Daten solange 
bis es den nächsten Speicherimpuls bekommt.
Gast #4327194
Lesenswert?

Axel S. schrieb:
> Das sind Abkürzungen der englischen Begriffe

Naja, Axel, hole lieber nicht zu weit aus.

In diesem Zusammenhang hier sind TRISA, TRISB, LATC, LATD und so weiter 
nichts anderes als Hardware-Register, wo man etwas hinein schreiben 
kann. Aber der TO hat das Manual überhaupt nicht gelesen, weswegen ihm 
derartige Fragen aufkommen.

Aber wenn ich das dann lesen muß:

"Ich verwende das Board hauptsächlich um das Programmieren zu üben was
mir aber Probleme bereitet sind ein paar Begriffe wie : TRIS, LAT und
PORT"

dann kommt mir der Groll hoch. Warum meinen die jungen Leute eigentlich 
immer nur eines: zu allererst in die Tasten hauen und wenn was nicht 
geht, anderen ein Loch in den Bauch fragen - wo doch ein einziger Blick 
in das Manual alles erklärt hätte.

Mit sowas hab ich auch nen Groll im Bauch bei jemandem, der 
erklärterweise das Programmieren lernen will, aber offenbar keinerlei 
Kenntnis der zu programmierenden Hardware zu erlangen wünscht:

"Ich programmiere mit MPLAB und dem C 18 Compiler."

Mein Rat wäre da:
- einen PIC16 hernehmen
- in Assembler die allerersten Programmierübungen machen

W.S.
Gast #4327671
Lesenswert?

W.S. schrieb:
> Axel S. schrieb:
>> Das sind Abkürzungen der englischen Begriffe
>
> Naja, Axel, hole lieber nicht zu weit aus.
>
> In diesem Zusammenhang hier sind TRISA, TRISB, LATC, LATD und so weiter
> nichts anderes als Hardware-Register, wo man etwas hinein schreiben
> kann. Aber der TO hat das Manual überhaupt nicht gelesen, weswegen ihm
> derartige Fragen aufkommen.
>
> Aber wenn ich das dann lesen muß:
>
> "Ich verwende das Board hauptsächlich um das Programmieren zu üben was
> mir aber Probleme bereitet sind ein paar Begriffe wie : TRIS, LAT und
> PORT"
>
> dann kommt mir der Groll hoch. Warum meinen die jungen Leute eigentlich
> immer nur eines: zu allererst in die Tasten hauen und wenn was nicht
> geht, anderen ein Loch in den Bauch fragen - wo doch ein einziger Blick
> in das Manual alles erklärt hätte.

Handbücher und Datenblätter lesen ist schwierig. Wirklich.

Ich verdiene ganz gut daran, Datenblätter zu lesen und zu 
interpretieren. Wenn ich ehrlich sein soll, könnte 90% der Elektronik, 
die ich entwickle, auch ein Bäckerlehrling entwickeln. Wenn er die 
Datenblätter und Handbücher sorgfältig lesen würde. Und das Resultat 
wäre um Größenordnungen besser, als die übliche von Halbwissen, 
Bauchgefühl und veralteten Daumenregeln geprägte Elektronik einiger 
Hardwareentwickler.

Einen Schaltregler beispielsweise kann jedes Kind auslegen, dass lesen 
und einen Taschenrechner bedienen kann. Man nehme das Kochrezept aus dem 
Datenblatt und befolge es 1:1. Es wird gut funktionieren. Dazu muss man 
von Elektronik nichts verstehen.

Aber das Lesen der Datenblätter ist für viele zu schwierig. Man muss 
dazu nur hier ins Forum schaun. 80% der Fragen hätten Manual und 
Datenblatt beantworten können.

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