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 ?
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?
Die Ports bilden jeweils eine Gruppe von 8 Bit. Also dient immer ein Portregister für 8 Pins.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.