Forum: Mikrocontroller und Digitale Elektronik einsteiger (PIC) arbeitet sich ein und braucht hin und wieder hilfe


von christian1992 (Gast)


Lesenswert?

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.

von MaWin (Gast)


Lesenswert?

> - 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 ?

von christian1992 (Gast)


Lesenswert?

super, danke schön. TRIS und PORT ist somit klar.

wovon ist es abhängig, wieviel bits ein pin hat?
je nach dem was dran hängt?

von Sebastian (Gast)


Lesenswert?

Die Ports bilden jeweils eine Gruppe von 8 Bit. Also dient immer ein 
Portregister für 8 Pins.

von Michael R. (mexman) Benutzerseite


Lesenswert?

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

von Matze T. (gruetzwurschd)


Lesenswert?

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

von Loonix (Gast)


Lesenswert?

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.

von Raffini (Gast)


Lesenswert?

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.

von christian1992 (Gast)


Lesenswert?

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

von PICanter (Gast)


Lesenswert?

@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.

von MaWin (Gast)


Lesenswert?

> 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).

von PIC N. (eigo) Benutzerseite


Lesenswert?

>> [..] 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!

von christian1992 (Gast)


Lesenswert?

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?

von PIC N. (eigo) Benutzerseite


Lesenswert?

Das kommt ganz gut hin =)

Hier kannst du auch nochmal nachschlagen (Menü/PIC-Tutorial):
http://PIC-Projekte.de

Gruß

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.