Hallo, Ich nutze eine optisch isolierte UART schnittstelle die die Pegel invertiert. Nachdem ich die Invertierungsmöglichkeit im Konfigurator-Tool des PIC16F18426 gesehen habe habe ich die Schaltung ohne weitere Invertierung entwickelt. Mit RX auf Pin 5 und TX auf Pin 6. Offensichtlich wirkt die Invertierung nur auf den TX-Pin. Der RX-Pin wird nicht beeinflußt. Als work around habe ich die CLC Unit verwendet um den PIN 5 (CLC1IN) invertiert auf den Quarzpin (Pin 3) (CLC1OUT) zu routen und dann den UART-Eingang auf Pin 3 zu legen. Da ich in einer weiteren Ausbaustufe einen Quarz benötige ergibt sich die Frage: - gibt es eine Möglichkeit direkt den CLC-Ausgang ohne Umweg über einen zusätzlichen Pin auf den UART RX-Pin zu routen? - gibt es sonst noch eine Möglichkeit für eine Invertierung die ich übersehen habe. (einen Hardware Inverter schließe ich jetzt erst mal aus). Gruß Anja
Hallo Anja, als grobe Vorabinfo: so, wie Du einen CLCxIN und einen CLCyOUT nimmst und den RX INPUT direkt auf den CLCyOUT legst, geht. Ich habe sowas schon mal gemacht. Als Option käme statt der CLC-Mimik auch ein Comparator infrage. Das habe ich auch schon mal eingesetzt. Man braucht halt 2 Pins für den RX-Trakt, weil im BAUDxCON das Bit 5, was für die RX-Invertierung in anderen PICs verwendet wird, nicht benutzt ist. MfG Wuff_W
Wolfgang W. schrieb: > so, wie Du einen CLCxIN und einen CLCyOUT nimmst > und den RX INPUT direkt auf den CLCyOUT legst, geht. Hallo Wolfgang, Habe ich auch schon getestet. Funktioniert trotz daß der Konfigurator meckert daß der RX-Pin auf einem Ausgang liegt. Wolfgang W. schrieb: > Als Option käme statt der CLC-Mimik auch ein > Comparator infrage. Auf die Idee wäre ich nicht gekommen. Muß ich im Hinterkopf behalten. Aber eigentlich wollte ich keinen weiteren Pin spendieren. Als einzige Möglichkeit sehe ich derzeit also statt des PIC16F18426 aus der Schublade einen der nagelneuen PIC18F06Q40/41 zu verwenden. Gruß Anja
Anja schrieb: > - gibt es sonst noch eine Möglichkeit für eine Invertierung die ich > übersehen habe. (einen Hardware Inverter schließe ich jetzt erst mal > aus). Evtl. per Soft UART Mikro C z.B. hat das als Lib, die blockt aber das Programm https://download.mikroe.com/documents/compilers/mikroc/pic/help/software_uart_library.htm
Anja schrieb: > Als einzige Möglichkeit sehe ich derzeit also statt des PIC16F18426 aus > der Schublade einen der nagelneuen PIC18F06Q40/41 zu verwenden. Die (PIC18F06Q40/41) habe ich als Empfehlung ausgespart, weil die mehrere im Vergleich zum PIC6F18426 komplett umgestaltete UARTs haben, die aber von Haus aus für RX und TX Möglichkeiten zum Invertieren bieten. Wenn Du als Ersatz für den PIC16F18426 den PIC18F06Q40 nimmst, so fällt mir dazu ein, dass es die nur im SOIC-Gehäuse gibt. Sonst kann ich die wegen der reichhaltigeren Peripherie nur empfehlen, weil ich mit dem PIC18F16Q41 schon ganz gut selber was (in Assembler) gemacht habe. Sie waren anfangs schlecht nur mit großen Lieferzeiten erhältlich. Bei allen dieser PICs empfiehlt sich aber ein Blick in die jeweils aktuellen Error-Files, weil man je nach verwendeten Modulen in seiner Software mit Errors Schwierigkeiten bekommen kann. Wenn Du vom Aufwand her den Schritt von PIC16F18426 zu PIC18F06Q40_Q41 gehen willst, kann ich Dich dazu nur ausdrücklich ermuntern. MfG Wuff_W
Mucky F. schrieb: > Mikro C z.B. hat das als Lib, die blockt aber das Programm Hallo, geht leider nicht da ich bei der Erweiterung auf Delta-Sigma PWM relativ lange Interruptlaufzeiten mit 50% Auslastung haben werde. Wolfgang W. schrieb: > weil man je nach verwendeten Modulen in seiner > Software mit Errors Schwierigkeiten bekommen kann. Naja viel an Peripherie brauche ich ja nicht. Ein Timer Ein 12 Bit A/D wandler-Kanal Ein paar 5V Digital-Outputs. Einen Standard-UART mit 9600 Baud und invertierbaren Pins. Ca 10 EEPROM Zellen. Ein 8 Bit PWM in der Ausbaustufe. Und hierfür einen "jitterfreien" (Quarz-)Oszillator ohne PLL. Das wird ja wohl noch funktionieren. Gruß Anja
Wieviele 1000 sollen es denn werden? Oder ist es nur (ok, was heisst nur, ist ja auch was wert) Ehrgeiz? Ich würde da einfach einen Digitaltransistor oder little-logic-Inverter hinpacken.
Anja schrieb: > Hallo, geht leider nicht da ich bei der Erweiterung auf Delta-Sigma PWM > relativ lange Interruptlaufzeiten mit 50% Auslastung haben werde. Schau halt in einem Timer Interrupt welchen Pegel der Uart Eingang hat. Da die Zeit bekannt ist kann man sich das dann zusammenbasteln. Geht sogar mit oversampling. Würde ich aber nur machen wenn es von der Hardware nicht anders geht (z.B. fertige in Stückzahlen). Alternativ Pin sharing, die Portfunktion lässt sich zur Laufzeit ja ändern. Z.B. den Oszillator über nen Schutzwiderstand einfach wegdrücken und zwischendrin zum abgleichen verwenden. Ist aber jenseits von allen Specs.
Mucky F. schrieb: > Da die Zeit bekannt ist kann man sich das dann zusammenbasteln. Vom Prinzip ne simple state machine: (Idle) -> Start Bit? -> Start Bit Ende time? -> 8 x Bit time -> Stop Bit time -> (Idle) Jede time lässt sich beliebig oversamplen. So dass man z.B. bei Jitter auf der RxD das ganze auch verwerfen kann.
Mucky F. schrieb: > Schau halt in einem Timer Interrupt welchen Pegel der Uart Eingang hat. Gibt sogar was: https://saeedsolutions.blogspot.com/2012/10/pic16f84a-interrupt-based-software-uart.html
Mucky F. schrieb: > Jede time lässt sich beliebig oversamplen. So dass man z.B. bei Jitter > auf der RxD das ganze auch verwerfen kann. Du hast doch so schon die 10-fache Interrupt-Last und 20-fache Anforderung an die Zeit. Bei 9.6 vielleicht easy, bei 115k vielleicht eine Herausforderung, bei TX und blockierend nur eine Fingerübung, aber wozu RX, wenn es den in HW gibt? Und dann noch oversamplen?
@Anja: Ich habe hier die Links zu den Errata-Files: PIC16F18426: https://www.microchip.com/content/dam/mchp/documents/MCU08/ProductDocuments/Errata/PIC16(L)F18426-46-Family-Silicon-Errata-and-Data-Sheet-Clarification-80000799C.pdf PIC18F06Q40: https://www.microchip.com/content/dam/mchp/documents/MCU08/ProductDocuments/Errata/PIC18F06-16Q40-Silicon-Errata-and-Data-Sheet-Clarifications-80000900C.pdf Was in Deiner Applikation bei Benutzung des PIC18F06Q40 z. B. relevant sein könnte, ist die Konfiguration des Quarzoszillators. Normalerweise wird bei Frequenzen <= 4 MHz XT_OSC und darüber HS_OSC gewählt. Das Errata-File besagt aber, dass die aktuellen Chips schon ab 2 MHz als HS_OSC eingestellt werden sollen. Das gilt aber nur, wnn Deine Chips Rev. A4 sind. Bei den neueren Rev. A5 Chips ist dieser Fehler anscheinend behoben. Da diese Q40-Chips erst richtig ab der neuen MPLABX V5.50 mit XC8 unterstützt werden, weiss ich natürlich nicht, ob dort die Errata-Eigenheiten automatisch berücksichtigt werden. Als Kuriosität zusätzlich: Nach dem geposteten Konfigurator ist der /MCLR nicht als Input RA3 eingestellt. Wenn Du den dort als Input konfigurierst, kannst Du den als RX-In bzw. CLCxIN verwenden und hättest dann auch mit dem 18426 ausreichend Pins. Da wird vielleicht Dein Konfigurator wieder mosern. Ich habe das aber bisher nur mit einem PIC18F16Q41 (in Assembler) eingesetzt, denke aber, dass das auch mit einem PIC16F18426 geht. Viel Erfolg bei der Umsetzung.
Wolfgang W. schrieb: > Ich habe hier die Links zu den Errata-Files: Hallo, Danke das erspart mir die Suche. Das mit den 4 MHz könnte ein Thema sein obwohl ich nicht glaube daß nahe Raumtemperatur (15-40 Grad) bereits Probleme auftreten. Das ist meist ein Problem bei tiefen (<0 Grad) Temperaturen. Auf der anderen Seite: wenn die Teile jetzt schon bei Reichelt erhältlich sind dürften es bereits ausgereifte Revisionen sein. Gruß Anja
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.