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
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
Thomas schrieb: > Ja toll danke hilft mir jetzt auch nicht weiter Komisch, die Datenblätter sind eigentlich immer recht ausführlich! :-P
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.
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.
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.
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.
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.
Nur das es in diesem Fall nicht um das Datenblatt sondern dem User Manual geht.
Decius schrieb: > Nur das es in diesem Fall nicht um das Datenblatt sondern dem User > Manual geht. Warum?
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.
Such dir einen uC aus, und suche selbst bei dem entsprechenden Hersteller. Oder schreibe direkt worauf du hinaus willst.
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...
Chris B. schrieb: > Ich glaube der TO liest hier seit 16.02.2012 nicht mehr mit ;-) Ist auch besser so.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.