hallo leuts,
ich möchte mich in das gebiet des microcontrollers begeben und habe
deshalb folgende anschaffung getätigt:
http://www.embedded-projects.net/index.php?module=artikel&action=artikel&id=112
einarbeiten möchte ich mich nun systematisch mit der hilfe von
http://www.sprut.de
da ich jetzt schon eine frage habe und das mit sicherheit nicht die
letzte bleibt, hoffe ich, dass ihr mir hier das ein oder andere mal auf
die sprünge helfen könnt, sofenr das forum nix her gibt.
da ich noch bei der theorie bin, bleibt das board erstmal in der
schachtel.
ich fang jetzt mal an:
microcontroller
--> prozessorkern (recheneinheit)
--> flash (hier liegt das programm, das der kern abarbeitet)
--> ram (hier speichert der kern seine daten)
--> evtl. eepram ( ---"--- ,aber langzeitspeicher)
--> takt (arbeitstakt, heute oft intern)
--> perioherie (schnittstellen, ad-wandler, etc.)
--> ports (ein- und ausgabe des microcontrollers)
bei den ports weiß ich net so recht:
- 1 port hat max 8 pins
- kern greift auf pin zu oder schreibt darauf
- port fungiert als register
- port-bezeichung: ... A ... B ...
- zugehörige register-bezeichnung: ... portA ... portB ...
- 1 register hat i.d.R 8 bit, somit 8 pins ????????
- pin-bezeichnung: ... RB6 => pin nr. 6 von port "nr." B
- jeder pin hat 1 bit, also 2 zustände ????????????
- zustand 1 = pin als eingang (grundeinstellung)
- zustand 0 = pin als ausgang
- die zustände können in der programmspeicherorganisation geändert
werden
- interne register-bezeichnung: ... trisA für register von port "nr." A
was ist der unterschied zwishcen TRISA und PORTA?? bezeichnet doch
beides das geliche register, oder?
wenn mich hier jemand erleuchten könnte wäre ich sehr dankbar.
viele grüße, die nächste frage kommt bestimmt.
> - jeder pin hat 1 bit, also 2 zustände ????????????
Nein, 2 bit. TRIS und PORT.
> - zustand 1 = pin als eingang (grundeinstellung)> - zustand 0 = pin als ausgang
Ein bit von TIS sagt ob der Pin Eingang oder Ausgang ist,
das andere Bit in PORT sagt, ob der Ausgang HI (5V) oder
LO (0V) ist wenn er als Ausgang geschaltet wurde.
(und dann gibt es noch viele weitere Bits wenn der Pin
bei Wechsel einen Interrupt auslösen soll oder etwas
besonderes wie ein UART sein soll).
> was ist der unterschied zwishcen TRISA und PORTA??> bezeichnet doch beides das geliche register, oder?
Nun klarer ?
Sebastian schrieb:> Die Ports bilden jeweils eine Gruppe von 8 Bit. Also dient immer ein> Portregister für 8 Pins.
Und bei manchen PICs sind von den 8 Portbits nur 5 zugaenglich, weil
nicht ausreichend Pins zur Verfuegung stehen (PIC 16F684..... 2 Ports
aber nur 14 Pins!)
Gruss
Michael
MaWin schrieb:> Ein bit von TIS sagt ob der Pin Eingang oder Ausgang ist,> das andere Bit in PORT sagt, ob der Ausgang HI (5V) oder> LO (0V) ist wenn er als Ausgang geschaltet wurde.
Das kann ich nicht so ganz hinnehmen:
denn wenn man daten ausgeben will, sollte man das LATx-Register nehmen.
Port sollte man eigentlich nur beim Lesen vewenden.
Korrigiert mich wenn ich falsch liege! :)
Grüße Tarkan
Tarkan D. schrieb:> Korrigiert mich wenn ich falsch liege! :)
Natürlich nicht, aber das hast du ja schon gewusst. Übersehen hast du
dabei vielleicht, dass einige PIC-Familien gar kein LAT-Register
aufweisen.
Auf diese Konsorten trifft deine Aussage nicht zu.
Aber wie überall, das Datenblatt sagt alles... beim PIC18 sind die in
aller Regel äußerst selbserklärend, es gibt sogar
Beispielsyntax(Assamblercode) für die Konfigurationen. Bei deinem
PORT/LATCH... Problem hättest du mit Blick auf das Schema
herausgefunden. Im Datenblatt gibt es in den Kapiteln (z.B. I/O-Ports)
meist ein Schema, dann eine Erklärung, die
Konfigurations/Puffer/etc.-Register und manchmal beispielsyntax bzw.
Ansprechsequenzen.
Hallo Leute,
danke für die vielen beiträge, auch wenn das ein oder andere für mich a
bisl abhebt, da es auf sprut.de net wirklich erwähnt wurde, aber egal.
was mir immer noch schleierhaft ist, ist das mit den bits pro pin. wovon
ist das abhängig vom benutzer?
wenn ich mal zusammenfasse: ein port hat 8bit somit 8pins, aber jeder
pin kann mehrere bit haben???? check ich net.
ich hab ja nun viel viel gelesen, und bin beim speicher angelangt:
1)
programmspeicher = flash = speicherblock = mehrere zellen!?!?
(hier liegt das auszuführende programm)
2)
jede zelle max 14 bit! jede zelle mit eigener adresse! 2 zellen mit
fester funktion
3)
erste zelle des speicherblocks = 0000h => startet hier bei einschalten
oder reset
3)
weitere zelle = 0004h => hier springt PIC bei interrupt hin
4)
programmspeicher wird von programmcounter und stack verwaltet
5)
im stack ist der programmcounter der jeweiligen programmteile
gespeichert
im programmcounter ist die adresse den nächsten befehls gespeichert
ich hab das also so verstanden:
das programm wird via computer in den programmspeicher geschrieben bzw
auf die zellen mit jeweiliger adresse gespeichert.
der µC will nun das dort gespeicherte programm ablaufen lassen und
greift auf den stack zu, weil dort der erste programmcounter für den
ersten programmteil drin steht. dann, wenn er weiß welcher
programmcounter, greift er auf diesen zu und bekommt die adresse auf die
er als nächstes zugreifen muss. ist das erledigt folgt die nächste
adresse bis alles abgearbeitet ist. ist er fertig schaut der µC wieder
in den stack und nimmt sich den nächsten programmspeicher vor. usw.
stimmt das so?
ist es denn wichtig das so wirklich verstanden zu habe? muss ich mich
als nutzer mit den adressen beschäftigen? beim programmieren oder so?
das läuft doch alles intern, nicht?
viele grüße
@christian1992
Knie Dich bitte zunächst einmal in die Grundlagen-Lektionen auf Spruts
Seite (http://sprut.de/electronic/pic/grund/grund.htm). Dort werden
Deine Fragen als Anfänger sehr gut beantwortet.
Kurz zu Deinen Port-Fragen: Controller-Pins haben durchaus mehr als ein
Register zur Verfügung. Es gibt meist ein Register welches die Funktion
der einzelnen Port-Pin (z.B. PDx0..PDx7) festlegt (Ein-/Ausgang etc.).
Dann gibt es ein Register welches die Zustände der Port-Pins beinhaltet
(logisch H/L). Hier werden i.d.R. Ausgänge gesetzt/gelöscht und/oder
Eingänge ausgelesen. Einige Port-Pins haben, je nach Controller, auch
noch Sonderfunktionen welche über spezielle Funktionsblock-Register
eingestellt werden. Also können einem Port-Pin durchaus 1..4 Bits (aus
jedem zugehörigen Port-Register) zugeordnet sein. Digitale Port-Pins
selbst können nur zwei Zustände annehmen, logisch High (1) oder Low (0),
analoge Port-Pins (der Controller besitzt dann einen oder mehrere
Analog-/Digitalwandler) unendlich viele Zustände, um eine Analogspannung
zu messen eben. Vielleicht ist das Dein Verständnisproblem.
Zu Deinen Programm-Fragen:
Dein Programm wird durch ein Programmiergerät am PC in den
Programmspreicher des Controller geschrieben. Beim Anlegen der
Betriebsspannung oder dem Auslösen eines Resets am Controller wird die
Adresse des Programmzählers (ProgramCounter) von der
Programmspeicherzelle 0000h gelesen und das Programm im Programmspeicher
mit der Adresse des Inhaltes des Programmzählers gestartet. Der
Controller erwartet also an der Stelle, die der Programmzähler
beinhaltet, die erste auszuführende Anweisung des Programms.
Bitte informiere Dich eingehend mit der Organisation des
Controllerspeichers, dies ist grundlegend für das Verständnis der
Controller-Architektur.
> Korrigiert mich wenn ich falsch liege!
Hmm, als ich noch PICs verwendete, PIC16C71, PIC16C84,
gab es kein LATch-Register. Gut, daß sie aufrüsten
(aber immer noch kein Grund zu PIC zurückzukehren).
>> [..] unendlich viele Zustände [..]
Unendlich ist ein bisschen unglücklich formuliert, es kommt auf die
Auflösung an! Zum Bleistift hat ein AD Umsetzter eine Auflösung von 10
Bit, so kann er 1024 verschiedene Zustände annehmen...
@MaWin, das ist gröbster Unfug!
hallo,
hab mir das ganze nochmal kräftig durchgelesen und nebenbei eure
kommentare studiert und bin nun auf folgende aussage zu der
PORT/PIN/Register-problematik gekommen.
klar ist, ein port besteht aus maximal 8 pins und dient zur ein- bzw.
ausgabe für den µC. damit dies funktionieren kann, werden die ports im
prinzip über sogenannte register definiert bzw. wird in den registern
eine mgl. definition der PINs vorgegeben.
deshalb ist jedes bit (0bis7) eines registers genau einem pin zugeteilt,
einem pin können jedeoch mehrere versch. "register-bits" zugeteilt
werden.
z.b. zum einem definition des pins als ein- oder ausgang und
z.b. zum zweiten zur definition der möglichen zustände H oder L.
odere auch noch weitere register ...
bsp:
8Bit-Register (IN/OUT) 8BIT-Register (H/L) .....
------------------------------------------------------------------
PIN 1: 1. Bit: Zustand IN oder OUT 1. Bit: Zustand H oder L
PIN 2: 2. Bit: Zustand IN oder OUT 2. Bit: Zustand H oder L
PIN 3: 3. Bit: Zustand IN oder OUT 3. Bit: Zustand H oder L
.
.
.
.
PIN 8: 8. Bit: Zustand IN oder OUT 8. Bit: Zustand H oder L
hab ich das jetzt richtig verstanden?