Forum: Mikrocontroller und Digitale Elektronik Fragen zu PIC16(L)F1454 (Beschaltung)


von Martin H. (Gast)


Lesenswert?

Hallo zusammen,

ich wollte mir ein Board bauen auf dem ich den PIC16LF1454-I/ST 
verwenden möchte. Die LF Version da ich an den PIC ein RFM12B 
anschließen möchte und einen Wiznet W5500, beide Arbeiten mit 3,3V.

Leider finde ich keine Schaltplanbeispiele wie die optimale Beschaltung 
des PICs aussieht damit dieser absolut zuverlässig läuft. Mein Modul 
soll nachher an Endkunden verkauft werden.

- Ist VDD die Versorgungsspannung vom Programmieradapter (PICKIT3)?
- VUSB3V3 ist offensichtlich die Versorgungsspannung per USB die vorher 
über einen Festspannungsregler auf 3,3V runtergeregelt wird.
- Wie sind die USB Leitungen zubinden? Vermutlich D- auf D- und D+ auf 
D+, aber was ist mit dem ID Pin der USB Buchsen?
- Muss ich einen Pegelwandler haben um den Controller per PICkit3 zu 
programmieren?
- Wie kriege ich die SPI Verbindung vom PIC zum W5500 und RFM12B hin?
- Gibt es sonst irgendwelche besonderheiten zu beachten? Vorwiderstände 
oder ähnliches in der USB Verbindung?

Sorry, dass ich so viele Fragen stelle aber ich habe bisher keine 
Schaltpläne online gefunden. Der einzig einigermaßen Hilfreiche Thread 
war bisher dieser hier

Beitrag "USB-Microcontroller für universelle Verwendung, I/O"

Danke für eure Mühe im Voraus

Gruß Martin

von Max H. (hartl192)


Lesenswert?

Martin H. schrieb:
> - Ist VDD die Versorgungsspannung vom Programmieradapter (PICKIT3)?
Vdd ist die Versorgungsspannung, muss nicht zwingend vom PICkit kommen, 
du willst deine Schaltung sicher nicht dauernd am PICkit hängen habe.
> - VUSB3V3 ist offensichtlich die Versorgungsspannung per USB die vorher
> über einen Festspannungsregler auf 3,3V runtergeregelt wird.
Vusb ist die Versorgung der USB Hardware im PIC, bei den LF Typen soll 
sie mit Vdd verbunden werden.
> - Wie sind die USB Leitungen zubinden? Vermutlich D- auf D- und D+ auf
> D+, aber was ist mit dem ID Pin der USB Buchsen?
Einfach freilassen, der ist nur bei Geräten mit USB-OTG wichtig.
> - Muss ich einen Pegelwandler haben um den Controller per PICkit3 zu
> programmieren?
Nein, das PICkit3 hat das schon eingebaut, du muss nur bi Flashen die 
richtige Spannung einstellen
> - Wie kriege ich die SPI Verbindung vom PIC zum W5500 und RFM12B hin?
Zum SPI Teil
1
PIC    W5500    RFM12B
2
SCK    SCLK      SCK
3
SDI    MISO      SDO
4
SDO    MOSI      SDI
Slave Select irgendein IO.
> - Gibt es sonst irgendwelche besonderheiten zu beachten? Vorwiderstände
> oder ähnliches in der USB Verbindung?
Pullup am Reset ein Entkoppelkondensator zwischen Vdd und Vss.

> Sorry, dass ich so viele Fragen stelle aber ich habe bisher keine
> Schaltpläne online gefunden.
Hast du es mal im Datenblatt versucht?

: Bearbeitet durch User
von Volker S. (vloki)


Lesenswert?

Max H. schrieb:
>> Sorry, dass ich so viele Fragen stelle aber ich habe bisher keine
>> Schaltpläne online gefunden.
> Hast du es mal im Datenblatt versucht?

Ein Low Pin Count USB Development Kit (DM164127-2) würde ich auch noch 
empfehlen. Da hast du ein Board zum spielen mit Schaltplan.
Ich habe mir gerade eines (DM164127-1) mit einem 3,3V Regler umgebaut.
Bei dem -2 würde ich den Regler da hin basteln, wo der Stecker J19 
montiert werden kann und die Verbindung trennen. Dann noch J12 brücken, 
fertig ...

: Bearbeitet durch User
von Martin H. (Gast)


Lesenswert?

Vielen Dank für die schnelle ausführliche Antwort.

Meine Platine wollte ich über eine Micro USB Buchse versorgen. Also 
würde ich die ankommende Spannung per 3V3 Regler absenken und auf VDD 
und VUSB3V3 verbinden?

Die USB Verbindung soll auch zusätzlich bei bedarf in Verbindung mit 
einem PC dafür genutzt werden dem PIC Daten zuzuschicken wie z.B. feste 
IP, Subnetmask... (manuelle Netzwerkconfig halt für den W5500). Daher 
müsste ich dann doch trotzdem die Datenleitungen verbinden oder?


Ja ins Datenblatt hatte ich geschaut. 
http://www.farnell.com/datasheets/1695216.pdf

Aber ich habe jetzt nicht die Ergebnisse gefunden die du mir geliefert 
hast. Die Pin Descriptions und die Oscillator Circuits haben mir ein 
wenig geholfen. Denke mal, dass ich falsch durch das Datenblatt gesucht 
habe.

Welche Begriffe in der Navigation hätte ich wählen müssen um die Infos 
zu finden (um in Zukunft selber ordentlich suchen zu können)? Hatte nach 
examples, schematics etc. Gesucht. Bei google habe ich versucht 
Schaltpläne zu finden bzw. die Schaltpläne die in bei den offiziellen 
DEV Boards von Microchip dabei sind, bin jedoch nicht fündig geworden

von Volker S. (vloki)


Lesenswert?

Martin H. schrieb:
> Bei google habe ich versucht
> Schaltpläne zu finden bzw. die Schaltpläne die in bei den offiziellen
> DEV Boards von Microchip dabei sind, bin jedoch nicht fündig geworden

Auf der MCHP Seite für den PIC auf "Develpment Tools" klicken ;-)

von Martin H. (Gast)


Angehängte Dateien:

Lesenswert?

Volker S. schrieb:
> Auf der MCHP Seite für den PIC auf "Develpment Tools" klicken ;-)

Das hatte ich wie gesagt versucht. Bin dabei auch auf ein DEV Board 
gestoßen in das aber der PIC16F145X bei Breakoutboard eingesetzt wird. 
Daher sind im Schaltplan nur die 2 Pinheader eingetragen die diesen 
damit verbinden.

http://ww1.microchip.com/downloads/en/DeviceDoc/40001356C.pdf

Ich hab jetzt mal den ersten Entwurf in Eagle gefertigt und wollte euch 
nach Korrekturen fragen. Ich bin bei der ICSP Schnittstelle auf diverse 
Schaltpläne mit Dioden etc. gestoßen und war daher unschlüssig, was die 
richtige Wahl wäre.

Bild1: PIC Controller + ICSP Stiftleiste
Bild2: USB Connector + Spannungsregler + 100nf Entkopplungskondensator 
der neben dem PIC platziert wird.
Bild3: RFM12 Modul
Bild4: Ausschnitt der SPI Schnittstelle des W5500

Vielen Dank für eure Bemühungen schonmal im Voraus

von Max H. (hartl192)


Lesenswert?

Martin H. schrieb:
> Ich bin bei der ICSP Schnittstelle auf diverse
> Schaltpläne mit Dioden etc. gestoßen und war daher unschlüssig, was die
> richtige Wahl wäre.
Ich habe es immer ohne Dioden gemacht, hat prima funktioniert. Dass das 
nich mal Microchip auf ihrem Devboard mach sollte zu denken geben.

> Bild1: PIC Controller + ICSP Stiftleiste
Der Entkopplungskondensator fehlt

> Bild2: USB Connector + Spannungsregler + 100nf Entkopplungskondensator
> der neben dem PIC platziert wird.
Der Regler 78L15 ist ein 15V Regler, damit wird der PIC keine Freude 
haben.
Der Spannungsregler braucht wahrscheinlich auch einen Kondensator am 
Ausgang.

von Volker S. (vloki)


Lesenswert?

Martin H. schrieb:
> lker S. schrieb:
>> Auf der MCHP Seite für den PIC auf "Develpment Tools" klicken ;-)
>
> Das hatte ich wie gesagt versucht. Bin dabei auch auf ein DEV Board
> gestoßen in das aber der PIC16F145X bei Breakoutboard eingesetzt wird.

Tatsächlich, das ist nicht gerade gut auf die Version 2 abgeändert 
worden.
Ich habe selber nur 4 St. Version 1, von denen ich die (da) zusätzlich 
vorhandenen Leerplatinen für die PIC16 abgeändert habe.

Das ICD Header Board ist nochmal was ganz anderes. Die 18F1xk50 haben 
kein ICD Modul integriert. Deshalb braucht man einen extra 18F1xk50-ICD 
der auf einer kleinen Platine ist, welche in den IC-Sockel auf der 
Platine gesteckt werden kann. Das hat den Vorteil, dass die Pins für die 
Programmier- und Debugschnittstelle auf dem Header liegen und alle Pins 
des eigentlichen PICs frei verfügbar bleiben.

Beim 16F145x ist ICD integriert. ABER wenn du die Pins auch noch 
anderweitig benutzt, dann kannst du die anderweitigen Funktionen 
natürlich nicht debuggen.
In deinem Fall würde ich deshalb die ICSP Signale an D+ und D- 
verwenden, da du darüber mehr oder weniger eh nur programmieren kannst 
und nicht debuggen. Das vermeidet schon mal Konflikte die durch die SPI 
Anschlüsse deiner anderen Module entstehen könnten.

An deinen ICs scheinen die Entkoppelkondensatoren zu fehlen. Alle VDDs 
100nF ? Der vorhandene 100nF gehört eigentlich zum Regler !

<edit> Max hat es schon angesprochen. Hör auf zu pfuschen. Wenn in der 
Bibliothek kein 3,3V Regler drin ist, dann mach dir einen ! </edit>

: Bearbeitet durch User
von WehOhWeh (Gast)


Lesenswert?

Ein Filter in der Versorgung für das Funkmodul fehlt.
Pulls fehlen auch - du must dir schon überlegen, was das Funkmodul 
macht, wenn der µC im Reset ist. Mindestens CS würde ich schon ziehen.
Du musst das Ding daher auch resetieren können - d.h. entweder 
Versorgung schalten, oder Reset auf den µC führen.
Desweiteren brauchst du eine Möglichkeit zu erkennen, ob das Funkmodul 
hochgefahren ist. Plapperst du das davor an, ist es für immer beleidigt 
und reagiert überhaupt nicht mehr.

Aus Sicht der EMV ist deine Platine sehr problematisch.
Du muss vermutlich mindestens Abstrahlung, ESD und Burst bestehen. 
Aktuell ist das vermutlich unmöglich.

In die Datenleitungen von USB sollte ein USB-Gleichtaktbead hinein. 
ESD-Dioden davor wirst du auch brauchen. Und ein PI-Filter mit 
Ferritbead in VBUS (600E@100MHz + 2x1nF COG).
Nimm beispielsweise das Zeugs hier für USB:
http://katalog.we-online.de/de/pbs/WE-CNSW_HF?sid=121685c3f2
http://www.semtech.com/images/datasheet/sr05.pdf

Ähnliches gilt für ALLE Leitungen, die deine Platine verlassen.

Beim 78L15F:
Dir fehlt Kapazität. 100n kommen mir zu wenig vor.
Nimm da lieber was halbwegs moderneres, wenigstens einen MCP1801, der 
ist auch nicht teurer, aber wenigstens kein Faustkeil aus der Frühzeit 
der Elektronik. Für den reicht ein 1µF Kerko.
Dabei musst du beachten, dass deine Platine mit <10µF in Summe auskommt, 
um USB-konform zu sein. Übrigens schafft dein aktueller Spannungsregler 
die Anforderungen für USB-Suspend von Haus aus schon mal gar nicht.

Natürlich brauchst du auch die vorgeschriebenen Entkoppelkapazitäten, 
aber das haben andere schon erwähnt.

Mehr fällt mir grade nicht ein. Es gibt aber vermutlich noch mehr 
Probleme.

von Martin H. (Gast)


Lesenswert?

Danke schonmal für die zahlreichen ausführlichen Antworten.

Ich ziehe hier mal einen Strich für Leute die sich kurz für meine 
Situation interessieren um das etwas abzugrenzen vom technischen

------------------------------------------------------------------------
Um euch meine aktuelle Situation zu erklären hier ein kleiner Auszug 
über mich
Ich bin 26 Jahre alt, studiere Elektrotechnik in Köln an der RFH und 
habe zuvor die Ausbildung als Elektroniker für Geräte und Systeme 
gemacht und danach 3 Jahre im Unternehmen im selben Beruf speziell in 
der Digitalfunktechnik (TETRA Infrastruktur) gearbeitet.

Aktuell bin ich mit meinem Team (3 weitere Leute, IT, Vertrieb, 
Maschienenbau/Management) im Rahmen des EXIST Gründerstipendiums 
gefördert. Ich habe schon öfters Platinen für mich entworfen, jedoch 
immer Hobbymäßig, nie für Endkunden bestimmt und nie nach Richtlinien 
und Normen entworfen. Daher bin ich für jeden Tipp dankbar
------------------------------------------------------------------------

Ich werde jetzt mal versuchen alle eure Tipps umzusetzen die ich 
verstanden habe, leider muss ich zugeben, dass bei mir nicht alles in 
der Rübe angekommen ist

von Volker S. (vloki)


Lesenswert?

Kleiner Hinweis noch zum PullUp am MCLR.
Den brauchst du nicht, weil der 16F145x einen internen hat, bzw. die 
Funktion auch über die Config-Bits komplett deaktiviert werden kann.

von Martin H. (Gast)


Angehängte Dateien:

Lesenswert?

WehOhWeh schrieb:
> Beim 78L15F:
> Dir fehlt Kapazität. 100n kommen mir zu wenig vor.
> Nimm da lieber was halbwegs moderneres, wenigstens einen MCP1801, der
> ist auch nicht teurer, aber wenigstens kein Faustkeil aus der Frühzeit
> der Elektronik. Für den reicht ein 1µF Kerko.

Als Spannungsregler habe ich mich für den LM2937IMP-3.3 entschieden. Da 
laut Datenblatt (wenn ich mich nicht wieder mal vertan habe) der W5500 
einen durchschnittlichen Versorgungsstrom von 132mA zieht, das RFM12 im 
TX 21mA und im RX Modus 10mA und der PIC Controller natürlich auch 
nochmal ein paar mA drauflegt. Mein RFM wird zwar nur als Empfänger 
betrieben und der W5500 wird höchstens alle 10 Minuten ein kleines Paket 
per TCP/IP an nen Server schicken, dennoch habe ich lieber den 
Spannungsregler genommen um Luft nach oben zu haben.

Was für Kapazitäten würde ihr hier direkt an den Ausgang des Reglers 
schalten?

WehOhWeh schrieb:
> Ein Filter in der Versorgung für das Funkmodul fehlt.

Was meinst du hiermit genau? Eine Spule in Reihe oder gegen Masse kurz 
vor dem VDD Pin?

WehOhWeh schrieb:
> Pulls fehlen auch - du must dir schon überlegen, was das Funkmodul
> macht, wenn der µC im Reset ist. Mindestens CS würde ich schon ziehen.
> Du musst das Ding daher auch resetieren können - d.h. entweder
> Versorgung schalten, oder Reset auf den µC führen.

Gute Anmerkung. Ich werde den PIC Controller in seiner Init Routine den 
Reset des RFM12 auslösen lassen. Detektieren wann das Modul ansprechbar 
ist, ist natürlich eine gute Frage die tiefer in die Materie der 
Programmierung geht. Aktuell denke ich einfach über einen Puffer am Ende 
des INIT nach bevor er in die eigentliche Programmschleife geht, ist 
aber auch eher nachher das Problem beim Programmieren und nicht beim 
Layout Design.

WehOhWeh schrieb:
> In die Datenleitungen von USB sollte ein USB-Gleichtaktbead hinein.
> ESD-Dioden davor wirst du auch brauchen. Und ein PI-Filter mit
> Ferritbead in VBUS (600E@100MHz + 2x1nF COG).
> Nimm beispielsweise das Zeugs hier für USB:
> http://katalog.we-online.de/de/pbs/WE-CNSW_HF?sid=121685c3f2
> http://www.semtech.com/images/datasheet/sr05.pdf

Wenn ich das richtig verstanden habe wird das TVS Dioden Array wie im 
Datasheet so angeschlossen, dass Pin 1 an Masse, Pin 4 and VUSB (also 
~5V) und die beiden anderen Leitungen X beliebig an die D+ und D- gelegt 
werden.

Was haltet ihr von diesem Guide?
http://www.ftdichip.com/Support/Documents/AppNotes/AN_146_USB_Hardware_Design_Guidelines_for_FTDI_ICs.pdf

Unter dem PI Filter verstehe ich jetzt, dass der Ferritbead in der USB 
Spannung in Reihe geschaltet wird und die beiden Kondensatoren davor und 
dahinter gegen Masse gelegt werden.

In dem Guide wird explizit davon abgeraten Beads in die Datenleitungen 
einzubringen, wie ist eure Meinung dazu?

Die USB ESD Dioden werden denke ich jeweils von VUSB, D+ und D- gegen 
Masse gelegt oder?

WehOhWeh schrieb:
> Ähnliches gilt für ALLE Leitungen, die deine Platine verlassen.

Die einzigen Anschlüsse der Platine sind die Micro USB Buchse und eine 
RJ45 Buchse. Den Schaltplan zur RJ45 habe ich als Bild eingefügt

von Volker S. (vloki)


Lesenswert?

Martin H. schrieb:
> Als Spannungsregler habe ich mich für den LM2937IMP-3.3 entschieden.


WehOhWeh schrieb:
> Übrigens schafft dein aktueller Spannungsregler
> die Anforderungen für USB-Suspend von Haus aus schon mal gar nicht.

Dein Board sollte/darf beim Anstecken an den USB und der darauf 
folgenden Enumeration oder eben einem Suspend nicht mehr als 50mA ziehen 
(wenn ich mich richtig erinnere)
Ich nehme mal an WehOhWeh wollte da auf eine Abschaltmöglichkeit der 
anderen Module hinaus ...

: Bearbeitet durch User
von Martin H. (Gast)


Lesenswert?

Volker S. schrieb:
> Dein Board sollte/darf beim Anstecken an den USB und der darauf
> folgenden Enumeration oder eben einem Suspend nicht mehr als 50mA ziehen
> (wenn ich mich richtig erinnere)
> Ich nehme mal an WehOhWeh wollte da auf eine Abschaltmöglichkeit der
> anderen Module hinaus ...

Also müsste ich den PIC so programmieren, dass dieser nach der 
Enumeration die beiden weiteren Module erst zuschaltet?

Da die USB Verbindung über den PIC Selber läuft, gehe ich mal davon aus, 
dass dieser auch detektieren kann, wann der Vorgang abgeschlossen ist.

Wie ist das, wenn der Controller einfach nur an ein USB Netzteil 
angeschlossen wird und nicht für irgendeine Konfiguration mit dem PC 
Verbunden ist? Wartet er dann vergeblichst auf die Enumeration? Oder 
nimmt man hier einfach nur einen Timer, der dem Vorgang eine gewisse 
Zeit einräumt und danach "einfach so" auf Vollbetrieb umschaltet?

von Volker S. (vloki)


Lesenswert?

Martin H. schrieb:
> Wie ist das, wenn der Controller einfach nur an ein USB Netzteil
> angeschlossen wird und nicht für irgendeine Konfiguration mit dem PC
> Verbunden ist? Wartet er dann vergeblichst auf die Enumeration? Oder
> nimmt man hier einfach nur einen Timer, der dem Vorgang eine gewisse
> Zeit einräumt und danach "einfach so" auf Vollbetrieb umschaltet?

Der PIC macht genau das, wofür du ihn programmierst ...

von Volker S. (vloki)


Lesenswert?

ich sehe gerade dass der Strom anscheinend noch viel geringer sein muss 
im Suspend Mode (0,5mA ?). Also meinte WehOhWeh wohl eher den Ruhestrom 
des 78..

Bevor das Ding konfiguriert ist, könnten es auch 100mA anstelle der 50mA 
von oben sein. Am besten du recherchierst das mal alles ;-)
<edit>
Für den ersten Überblick, reicht vielleicht das hier:
-> http://www.beyondlogic.org/usbnutshell/usb2.shtml#PowerVbus
</edit>

: Bearbeitet durch User
von Martin H. (Gast)


Lesenswert?

Ich hab mir grade nochma den Text von WehOhWeh durchgelesen, verstehe 
ich das richtig, dass die TVS Diode den ESD Schutz übernimmt, also die 
separaten ESD Dioden nicht benötigt werden?

von Martin H. (Gast)


Lesenswert?

Martin H. schrieb:
> Ich hab mir grade nochma den Text von WehOhWeh durchgelesen, verstehe
> ich das richtig, dass die TVS Diode den ESD Schutz übernimmt, also die
> separaten ESD Dioden nicht benötigt werden?

Ich finde leider die EDIT Funktion nicht, daher schreibe ich jetzt hier 
drunter.

Wenn ich die interne Verschaltung des SR05 richtig verstehe, gibt es 
eine Zehnerdiode als eigentliche ESD Diode zwischen VCC (pin4) und GND 
(pin1) und die beiden Datenleitungen werden per Brückengleichrichter 
ebenfalls auf die eine ESD Diode gelegt. Damit hätte sich meine Frage 
von zuvor auch schon erledigt, außer ich habe was missverstanden

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.