Forum: Mikrocontroller und Digitale Elektronik Flankenwechsel bei PIC24 SPI während Betrieb


von El Dudini (Gast)


Lesenswert?

hallo,

ich würde gerne die taktflanken des SPI moduls für eine übertragung 
ändern.
ich verwende einen PIC24HJ256GP610.
ich habe einen DAC und einen ADC die jeweils auf verschidene taktflanken 
reagieren.

der ADC legt die daten mit der fallenden flanke ein und der DAC mit der 
steigenden. leider sind beide auf einem SPI bus untergebracht und werden 
nur mittels chipselect ausgewählt.

zum einstellen verwende ich den CCS C Compiler und dessen #use spi() 
funktion.
den ADC habe ich zum laufen gebracht. nur den DAC kann ich nicht richtig 
ansteuern. der liest die werte einfach falsch ein.

bisher habe ich im SPI1CON1 register das CKE bit rückgesetzt und dann 
geschrieben. dies hat allerdings erst dann geklappt nachdem ich das spi 
modul disabled hab und wieder enabled hab.

gibt es eine möglichkeit die flaken für den DAC kurz umzustellen und 
nach dem schreiben wieder normal zu setzen?

mfg

El Dudini

von Frank K. (fchk)


Lesenswert?

Ein Inverter vor dem Clock-Input des DAC in Form eines 74HC1G04 tut es 
nicht?

fchk

von holger (Gast)


Lesenswert?

>bisher habe ich im SPI1CON1 register das CKE bit rückgesetzt und dann
>geschrieben. dies hat allerdings erst dann geklappt nachdem ich das spi
>modul disabled hab und wieder enabled hab.

Ist doch ne gute Lösung. Warum bleibst du nicht dabei?

von El Dudini (Gast)


Lesenswert?

hallo,

der inverter ist im nachhinein nicht machbar weil alles schon gelayoutet 
und gefertigt ist.

die sache mit dem CKE bit im SPI1CON1 register funktioniert nur wenn man 
das modul im register SPI1STAT disabled, das CON1 Register setzt und das 
modul wieder einschaltet.
ich kann auf dem oszi erkennen, dass sich die flanken ändern allerdings 
sind die werte die ich schreibe bzw auch vom ADC bekomme fehlerhaft. die 
spi register werden aber nachdem der DAC geschrieben wurde wieder 
zurückgesetzt.

ich kanns mir leider nicht erklären warum der durcheinander kommt.

mfg

von Frank K. (fchk)


Lesenswert?

El Dudini schrieb:

> der inverter ist im nachhinein nicht machbar weil alles schon gelayoutet
> und gefertigt ist.

Und im Prototypen hab ihr es nicht gemerkt?

> ich kanns mir leider nicht erklären warum der durcheinander kommt.

Ich hatte so etwas mal bei einem AVR in Verbindung mit einem RFID-Modul, 
das zwischen Sende- und Empfangsphase eine Phasendrehung haben wollte. 
Das Hardware-SPI des AVR ist definitiv hängen geblieben, als ich 
mittendrin die Polarität gedreht hatte. Ich musste das ganze schließlich 
ohne Hardware-SPI in Software machen.

Was lernen wir daraus: Serie erst fertigen lassen, wenn alles komplett 
läuft.

Ich tippe mal darauf, dass auch der PIC24 das Umschalten der Clock 
mittendrin nicht toleriert und dass Dir am Ende nichts anderes 
übrigbleiben wird, als entweder den Inverter zu spendieren oder das SPI 
per Software-Bitfriemelei zu machen.

fchk

von El Dudini (Gast)


Lesenswert?

hallo,

also es hat nun doch funtioniert. habe das CKE bit einfach falsch 
gesetzt.
es muss erst rückgesetzt werden und nach der übertragung wieder gesetzt 
werden. dabei muss das modul natürlich disabled werden.

jetzt läufts auf jedenfall mal.

trotzdem danke für die schnelle hilfe.

mfg

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.