Flankenwechsel bei PIC24 SPI während Betrieb

Gast #2198087
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
Gast
>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?
Gast
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
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
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.