www.mikrocontroller.net

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


Autor: christian1992 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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=...

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.

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: christian1992 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sebastian (Gast)
Datum:

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

Autor: Michael Roek (mexman) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tarkan D. (gruetzwurschd)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Loonix (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Raffini (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: christian1992 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: PICanter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: christian1992 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: PIC Nico (eigo) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kommt ganz gut hin =)

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

Gruß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.