Forum: Mikrocontroller und Digitale Elektronik Microcontroller PIC SPI und ICSP gleichzeitig benutzen


von Toni (toniert)


Lesenswert?

Hallo zusammen,

für ein kleines Bastelprojekt möchte ich einen PIC16F1454 benutzen. 
Dieser soll mittels SPI die Werte eines Temperatursensor auslesen. Das 
ganze programmiere ich mit einem PICKIT3. Nun zu meinem Problem, der 
vorhandene µC hat jeweils 2 Anschlüsse für ICSPDAT und ICSPCLK, nämlich 
RC0 und RC1 und RA0 und RA1. Sobald ich den Microcontroller mit dem 
PICKIT über die PINS RA 0 bzw RA1 verbinden und programmieren will, 
meckert das Programm rum, dass die Device ID nicht vorhanden ist. An den 
Anschlüssen RC0 und RC1 funktioniert alles, aber dort will ich die SPI 
Daten aufnehmen.

Wie kann ich dem µC sagen, dass ich die PINS RA0 bzw. RA1 benutze zum 
ICSP programmieren?

Danke

von Volker (_volker)


Lesenswert?

Hallo Toni,

schau mal ins DB auf Seite 12. Dort gibt es die Ergänzung #3 bei 
PORTA.0/1. Dort steht: 3: LVP support for PIC18(L)F1XK50 legacy
D.h. bei Deinem PIC steht ICSP nur an PORTC zur Verfügung.

DB:
https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/DataSheets/PIC16LF1454-5-9-14-20-Pin-8-Bit-Flash-USB-Microcontroller-with-XLP-Technology-DS40001639C.pdf

: Bearbeitet durch User
von Toni (toniert)


Lesenswert?

Okay super vielen Dank. Das heißt aber dann auch dass der Sensor für das 
Auslesen des SPI Sensors nicht geeignet ist, da RC1 sowohl der SDI als 
auch der ICSPCLK beinhaltet. Also entweder SPI oder ICSP und nicht 
beides.

von Volker (_volker)


Lesenswert?

Da Du nicht gesagt hast um welchen Sensor es sich handelt, wäre meine 
Antwort... Kann sein das ICSP auch mit angeschlossenem Sensor 
funktioniert oder auch nicht. Probier es doch eben mal aus wenn alle 
Bauteile vorhanden. Sensor dran, PicKit dran und Du hast die Antwort.

: Bearbeitet durch User
von Carsten S. (dg3ycs)


Lesenswert?

Volker schrieb:
> Hallo Toni,
>
> schau mal ins DB auf Seite 12. Dort gibt es die Ergänzung #3 bei
> PORTA.0/1. Dort steht: 3: LVP support for PIC18(L)F1XK50 legacy
> D.h. bei Deinem PIC steht ICSP nur an PORTC zur Verfügung.

Nein, das heisst diese Fußnote gerade NICHT!
Warum sollte es auch bei einem Datenblatt zu einem ganz anderen PIC 
erwähnt werden.

Diese Fußnote bedeutet das auf diesen PINs ICSP zur Verfügung steht um 
den IC als "Plug-In" Ersatz in SCHALTUNGEN einzusetzen die ursprünglich 
für die Pic 18F1xK50  designt/Layoutet wurden.

Allerdings steht dieser Port NUR im LVP Modus zur Verfügung.
Das bedeutet das, um diesen Port zu verwenden, das LVP Bit gesetzt sein 
muss und man natürlich im LVP Modus arbeiten muss.

Siehe:
https://ww1.microchip.com/downloads/en/DeviceDoc/41620C.pdf

Gruß
Carsten

: Bearbeitet durch User
von Volker (_volker)


Lesenswert?

Carsten S. schrieb:
> Gruß
> Carsten

Jupp, haste Recht. :-)

von Frank K. (fchk)


Lesenswert?

Du kannst natürlich SPI auch einfach in Software implementieren. Dann 
kannst Du beliebige andere Pins verwenden.

fchk

von Motopick (motopick)


Lesenswert?

Man koennte den Sensor auch z.B. ueber 1 k Widerstaende anschliessen.
Da gewinnt der ICSP-Programmer am Controller direkt dann locker. :)

Manche Leute stellen sich aber auch an...

von Toni (toniert)


Lesenswert?

Das mit den Widerständen probiere ich noch.

Wenn jedoch ICSP und SPI auf den gleichen Pins hängen, lässt sich der µC 
garnicht ansprechen. Dann meckert der Compiler auch wegen der Device ID.

von Motopick (motopick)


Lesenswert?

Toni schrieb:
> Das mit den Widerständen probiere ich noch.
>
> Wenn jedoch ICSP und SPI auf den gleichen Pins hängen, lässt sich der µC
> garnicht ansprechen. Dann meckert der Compiler auch wegen der Device ID.

Dann solltest du das mit den Widerstaenden vielleicht erstmal probieren.

von Peter D. (peda)


Lesenswert?

Ein gern gemachter Fehler ist, das /CS von SPI-Chips floaten zu lassen.
Einfach einen Pullup nach VCC dran und schon ist Ruhe auf dem SPI und 
der Programmer kann die selben Pins benutzen.

von Toni (toniert)


Lesenswert?

Das mit den Widerständen auf SDO und SCK funktioniert, nun wird der 
Controller durch die Software erkannt. Interessant zu wissen wäre nun ob 
beim Debugging selber, die Daten auf dem Bus verfälscht werden. Also 
kann nun durch das PICKIT gleichzeitig gedebuggt und die Sensordaten 
gelesen werden?

von Motopick (motopick)


Lesenswert?

Toni schrieb:
> Das mit den Widerständen auf SDO und SCK funktioniert, nun wird der
> Controller durch die Software erkannt.

Ei sischa. :)

> Interessant zu wissen wäre nun ob
> beim Debugging selber, die Daten auf dem Bus verfälscht werden. Also
> kann nun durch das PICKIT gleichzeitig gedebuggt und die Sensordaten
> gelesen werden?

Und? Hast du es schon herausbekommen?

Total OT:
Die Mannen von ST, sagen uebrigens auf ihren Veranstaltungen
immer DebÜgger dazu. Das waere dann kwasi "gedebÜggt". :)
Aber die sind ja auch aus Fronkroisch.

von Toni (toniert)


Angehängte Dateien:

Lesenswert?

Habe den Code geschrieben, irgendwas stimmt aber nicht, da die SSPBUF 
Register komplett leer sind. Der PIC soll mit dem MAX6675 kommunizieren, 
der liefert ein 12bit Signal. Was mache ich falsch?

: Bearbeitet durch User
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.