Hallo Zusammen. Seit neuestem versuche ich mich an den PIC's, da ich ich finde, dass das Beherrschen der Programmierung dieser uC so seine Vorteile mit sich bringt. Ich habe nun aber eine Frage zur Doppel-/ resp. Dreifachbelegung des 16F690. Auf dem Datenblatt (Seite 4) lese ich, dass die 2 Eingänge für den externen Quarz auch als normale I/O Pins verwendet werden können.. Wie soll das den funktionieren? MFG Gordon
Stichwort Configbits. Je nachdem welche Taktquelle du auswählst, stehen dir die Pins zur Verfügung oder eben nicht. Wenn du internen Oszillator wählst, hast du die IOs, wenn du ext. Quarz nimmst halt nicht.
Ach so.. Habe bis jetzt mit Prozessoren von SilLabs und Keil uV gearbeitet da geht die ganze Portinitialisierung etwas anders.. Wenn ich also PortA konfigurieren will, so dass alle Bits (ausser 4 und 5) Ausgänge sind, dann nehme ich einfach "TRISA = 0b.0001.1000" ? Oder beeinträchtigt das den Clockeingang? Bin ehrlich gesagt etwas überfordert mit dem MPLAB..
gordon51freeman schrieb: > "TRISA = 0b.0001.1000" Korrekt. Solange du nicht in einem der Config-Register die beiden CLK-Pins auf "GPIO" umstellst kannst du aber genauso gut auch TRISA = 0b.0000.0000 schreiben (die Konfiguration als CLK-I/O hat eine höhere Priorität als die Konfiguration der Datenrichtung bei GPIO). Gruß, Alex P.S. Für alle Atmel-Anhänger: Beim PIC steht 0 in der datadirection für output, 1 für input.
Du mußt den Clockeingang auf interner Oszillator stellen, sonst kommt da der externe Quarz dran. Und kannst die Ports nicht für Ausgänge benutzen.
Danke @ Alex Bürgel so was wollte ich hören :) D.h. ich muss den Quarzeingang auch noch setzen? Oder kann ich mir das sparen?
Lehrmann Michael schrieb: > Je nachdem welche Taktquelle du auswählst, stehen > dir die Pins zur Verfügung oder eben nicht. richtig Lehrmann Michael schrieb: > Wenn du internen Oszillator > wählst, hast du die IOs, wenn du ext. Quarz nimmst halt nicht. Nicht ganz richtig bzw. nicht zwingend. Du kannst auch den Internen Oscillator nehmen und den CLKOUT als Clock-Out benutzen, dass dort halt der Interne Oscillator dran hängt. gordon51freeman schrieb: > Wenn ich also PortA konfigurieren will, so dass alle Bits (ausser 4 und > 5) Ausgänge sind, dann nehme ich einfach "TRISA = 0b.0001.1000" ? Bedenke, du hast da zwar das 4. und 5. Bit als Eingang gesetzt. Es ist aber PORTA.3 und PORTA.4, da das alles von 0 bis 7 geht und nicht von 1-8. Dazu bedenke die "PIC-Falle", dass PORTA.4 ein open-Drain PIN ist. Alex Bürgel schrieb: > Beim PIC steht 0 in der datadirection für > output, 1 für input. Find ich persönlich auch besser, da die Null aussieht wie ein O und die Eins wie ein I^^ gordon51freeman schrieb: > D.h. ich muss den Quarzeingang auch noch setzen? Wie meinst du das mit setzen? Wenn du einen Externen Quarz dranmachen willst, musst du bei der Config HS oder dementsprechendes auswählen. Wenn nicht, musst du gucken ob du die Pins als IO brauchst. Dementsprechend musst du dann die Config nehmen.
Oke das war jetzt ziemlich viel Antwort, danke dafür erstmal. Ja, das mit dem bit 3 -> Pin 4 ist mir natürlich bewusst, habe mich vielleicht etwas ungünstig ausgedrückt. Kennst du grade den Befehl für die Config des Quarzes? ich habe noch nicht sooo den Durchblick mit den ganzen Registern..
In was programmierst du denn? C, ASM, oder noch was anderes? Und als was willst du das benutzen. Internen Oscillator mit beiden PINS als IO? Wenn du einen Quarz benutzen willst, welche Frequenz. Oder doch ein RC-Glied? edit: Hier übrigends die Liste, wie der Oscillator gewählt wird: 111 = RC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN 110 = RCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN 101 = INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN 100 = INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN 011 = EC: I/O function on RA4/OSC2/CLKOUT pin, CLKIN on RA5/OSC1/CLKIN 010 = HS oscillator: High-speed crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN 001 = XT oscillator: Crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN 000 = LP oscillator: Low-power crystal on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
Ich programmiere in C. Danke, die Liste habe ich bereits gefunden habe auch schon das OSCCON Register gesetzt. Ich habe einen externen Oszillator angeschlossen (Quarz) mit 6Mhz. Die beiden Pins brauche ich nicht ich will nur den Oszillator daran angeschlossen haben. EC: I/O function on RA4/OSC2/CLKOUT pin, CLKIN on RA5/OSC1/CLKIN habe ich gewählt ich weiss jedoch nicht, wie ich das "CONFIG" register zu setzen habe das im Datenblatt beschrieben wird? Im Header File ist dieses Register nicht zu finden, obwohl es im Datenblatt ausführlich beschrieben wird (S. 195)..
gordon51freeman schrieb: > habe ich gewählt ich weiss jedoch nicht, wie ich das "CONFIG" register > zu setzen habe das im Datenblatt beschrieben wird? > Im Header File ist dieses Register nicht zu finden, obwohl es im > Datenblatt ausführlich beschrieben wird (S. 195).. Das Config-Register (es können auch mehrere sein), ist ein Wort am Ende des Flashes, das geladen wird, noch bevor der Prozessor losläuft. AVR-Freunde kennen etwas ähnliches unter dem Begriff "Fuses". Schau ins Handbuch Deines C-Compilers, wie Du die Konfiguration setzen kannst. Das ist von Compiler zu Compiler unterschiedlich. Beim Microchip C18 ist es z.B. ein oder mehrere #pragma config, andere haben spezielle globale Variablen dafür. Lesen bildet. fchk
Oke habe jetzt herausgefunden, dass das config register im main aufgeführt werden muss als #pragma config = 0b.***.. Werde mal schauen, was ich da alles brauche und was nicht.
Ich komme nun doch nicht mehr weiter. Ich habe leider keine Ahnung, was für den ganz gewöhnlichen Gebrauch eines PIC bei der config nötig ist, wenn ich einen externen Quarz angeschlossen habe? bit 13-12 Reserved: Reserved bits. Do Not Use. bit 11 FCMEN: Fail-Safe Clock Monitor Enabled bit 1 = Fail-Safe Clock Monitor is enabled 0 = Fail-Safe Clock Monitor is disabled bit 10 IESO: Internal External Switchover bit 1 = Internal External Switchover mode is enabled 0 = Internal External Switchover mode is disabled bit 9-8 BOREN<1:0>: Brown-out Reset Selection bits(1) 11 = BOR enabled 10 = BOR enabled during operation and disabled in Sleep 01 = BOR controlled by SBOREN bit of the PCON register 00 = BOR disabled bit 7 CPD: Data Code Protection bit(2) 1 = Data memory code protection is disabled 0 = Data memory code protection is enabled bit 6 CP: Code Protection bit(2) 1 = Program memory code protection is disabled 0 = Program memory code protection is enabled bit 5 MCLRE: MCLR Pin Function Select bit(3) 1 = MCLR pin function is MCLR 0 = MCLR pin function is digital input, MCLR internally tied to VDD bit 4 PWRTE: Power-up Timer Enable bit 1 = PWRT disabled 0 = PWRT enabled bit 3 WDTE: Watchdog Timer Enable bit 1 = WDT enabled 0 = WDT disabled bit 2-0 FOSC<2:0>: Oscillator Selection bits 111 = RC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN 110 = RCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN 101 = INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN 100 = INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN 011 = EC: I/O function on RA4/OSC2/CLKOUT pin, CLKIN on RA5/OSC1/CLKIN 010 = HS oscillator: High-speed crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN 001 = XT oscillator: Crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN 000 = LP oscillator: Low-power crystal on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN Kann mir irgendjemand damit weiterhelfen?
gordon51freeman schrieb: > Ich komme nun doch nicht mehr weiter. > Ich habe leider keine Ahnung, was für den ganz gewöhnlichen Gebrauch > eines PIC bei der config nötig ist, wenn ich einen externen Quarz > angeschlossen habe? > > bit 13-12 Reserved: Reserved bits. Do Not Use. steht ja da. Nicht benutzen. Schau im Datenblatt des Prozessors nach, ob Du die Bits auf 0 oder 1 setzen musst. > bit 11 FCMEN: Fail-Safe Clock Monitor Enabled bit > 1 = Fail-Safe Clock Monitor is enabled > 0 = Fail-Safe Clock Monitor is disabled Überwachung des Quarzoszillators auf Ausfall. Kannst Du an lassen -> 1 > bit 10 IESO: Internal External Switchover bit > 1 = Internal External Switchover mode is enabled > 0 = Internal External Switchover mode is disabled siehe Datenblatt, kannst Du auf 1 setzen > bit 9-8 BOREN<1:0>: Brown-out Reset Selection bits(1) > 11 = BOR enabled > 10 = BOR enabled during operation and disabled in Sleep > 01 = BOR controlled by SBOREN bit of the PCON register > 00 = BOR disabled Versorgungsspannungsüberwachung, kannst Du auf 11 lassen > bit 7 CPD: Data Code Protection bit(2) > 1 = Data memory code protection is disabled > 0 = Data memory code protection is enabled brauchst Du nicht -> 1 > bit 6 CP: Code Protection bit(2) > 1 = Program memory code protection is disabled > 0 = Program memory code protection is enabled brauchst Du nicht -> 1 > bit 5 MCLRE: MCLR Pin Function Select bit(3) > 1 = MCLR pin function is MCLR > 0 = MCLR pin function is digital input, MCLR internally tied to VDD MCLR solltest Du nicht für was anderes benutzen, wenn es nicht unbedingt nötig ist -> 1 > bit 4 PWRTE: Power-up Timer Enable bit > 1 = PWRT disabled > 0 = PWRT enabled müßte ich jetzt nachlesen, ich denke, das brauchst Du nicht -> 1 > bit 3 WDTE: Watchdog Timer Enable bit > 1 = WDT enabled > 0 = WDT disabled brauchst Du nicht -> 0 > bit 2-0 FOSC<2:0>: Oscillator Selection bits > 111 = RC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, RC on > RA5/OSC1/CLKIN > 110 = RCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, RC on > RA5/OSC1/CLKIN > 101 = INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O > function on > RA5/OSC1/CLKIN > 100 = INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O > function on > RA5/OSC1/CLKIN > 011 = EC: I/O function on RA4/OSC2/CLKOUT pin, CLKIN on RA5/OSC1/CLKIN > 010 = HS oscillator: High-speed crystal/resonator on RA4/OSC2/CLKOUT and > RA5/OSC1/CLKIN > 001 = XT oscillator: Crystal/resonator on RA4/OSC2/CLKOUT and > RA5/OSC1/CLKIN > 000 = LP oscillator: Low-power crystal on RA4/OSC2/CLKOUT and > RA5/OSC1/CLKIN Normaler Quarz: HS -> 010
Vielen Dank, dass du dir die Zeit genommen hast. Jetzt funktioniert es wie es sollte :) MFG Gordon
gordon51freeman schrieb: > Ich habe einen externen Oszillator angeschlossen (Quarz) mit 6Mhz. > Die beiden Pins brauche ich nicht ich will nur den Oszillator daran > angeschlossen haben. > > EC: I/O function on RA4/OSC2/CLKOUT pin, CLKIN on RA5/OSC1/CLKIN Ab 4 MHz solltest/musst du laut Datenblatt Seite 241 den HS Modus nehmen. Ein Quarz wird an beide Pins angeschlossen, also ein beinchen an OSC1 und das andere an OSC2. Dazu an jeden Pin ein kleinen Kondensator (ca 20pF) und es sollte laufen. Da dein Quarz beide Pins braucht, kannst du die beiden Pins als IO vergessen. Der EC Modus ist für eine externe Takterzeugung und muss meines wissens ein Rechteck sein. Du kannst mit deinem Quarz und ein paar andere Bauteile (u.A. ein Schmitt-Trigger) so ein Signal erzeugen, das macht aber ansich keinen Sinn, da mehr Bauteile. Wenn du den IO mehr unbedingt brauchst, würde ich eher einen größeren Pin nehmen, anstatt solch einer Schaltung (oder gleich den internen Oscillator nehmen). Gut gebrauchen kann man sowas, wenn man einen PIC mit internem Oscillator hat und den Clock-Out benutzt, um andere PICs mit dem gleichen Clock laufen zu lassen. Frank K. schrieb: >> bit 4 PWRTE: Power-up Timer Enable bit >> 1 = PWRT disabled >> 0 = PWRT enabled > müßte ich jetzt nachlesen, ich denke, das brauchst Du nicht -> 1 Da wartet der PIC eine kleine Zeit, damit Vdd und der Takt stabil und voll da sind.
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.