Forum: Mikrocontroller und Digitale Elektronik Begriffe zum PIC?


von Thomas (Gast)


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

von Stefan (Gast)


Lesenswert?

Siehe Datenblatt

von Thomas (Gast)


Lesenswert?

Ja toll danke hilft mir jetzt auch nicht weiter

von Meister E. (edson)


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

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

siehe sprut.de da wird die alles zum Pic erklärt.

von Name (Gast)


Lesenswert?

Thomas schrieb:
> Ja toll danke hilft mir jetzt auch nicht weiter

Komisch, die Datenblätter sind eigentlich immer recht ausführlich! :-P

von Thomas (Gast)


Lesenswert?

Alles Klar, danke für die Hilfe :)

Gruß

Thomas

von Michael S. (rbs_phoenix)


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.

von Martin S. (drunkenmunky)


Lesenswert?

TRISD = 0xFE;

das 0x steht für das hexadezimale Format von FE. 0b steht für binär.

0xFE = 0b11111110 = 254

also ist D0 als Ausgang geschalten und D1 bis D7 als Eingang.

von Trojan der colle (Gast)


Lesenswert?

des waß eh i

von Axel S. (a-za-z0-9)


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.

von W.S. (Gast)


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.

von WehOhWeh (Gast)


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.

von Decius (Gast)


Lesenswert?

Nur das es in diesem Fall nicht um das Datenblatt sondern dem User 
Manual geht.

von Volker S. (vloki)


Lesenswert?

Decius schrieb:
> Nur das es in diesem Fall nicht um das Datenblatt sondern dem User
> Manual geht.

Warum?

von Decius (Gast)


Lesenswert?

Das Datenblatt enthält nur allgemeine Angaben, die Erklärungen die man 
zum Programmieren braucht z.B. die Doku zur Peripherie ist im User 
Manual enthalten. Sollte man eigentlich wissen.

von Volker S. (vloki)


Lesenswert?

Poste doch mal einen Link zu deinem "User Manual"...

von Chris B. (dekatz)


Lesenswert?

Ich glaube der TO liest hier seit 16.02.2012 nicht mehr mit ;-)

von Decius (Gast)


Lesenswert?

Such dir einen uC aus, und suche selbst bei dem entsprechenden 
Hersteller. Oder schreibe direkt worauf du hinaus willst.

von Volker S. (vloki)


Lesenswert?

Chris B. schrieb:
> Ich glaube der TO liest hier seit 16.02.2012 nicht mehr mit ;-)

Egal, das ist jetzt eben so ein Laberthread wo sich Leute aus 
Langeweile...

von Peter D. (peda)


Lesenswert?

Chris B. schrieb:
> Ich glaube der TO liest hier seit 16.02.2012 nicht mehr mit ;-)

Ist auch besser so.

von Volker S. (vloki)


Lesenswert?

Decius schrieb:
> Such dir einen uC aus, und suche selbst bei dem entsprechenden
> Hersteller. Oder schreibe direkt worauf du hinaus willst.

PIC18F4550  (um den es ganz nebenbei gesagt hier früher mal ging)

Ich wollte darauf hinaus, dass es kein User Manual gibt.
Es gibt nur ein Data Sheet!

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.