FIFO auslesen funktioniert nicht

OP #3578233
Hallo!
Ich habe ein Problem mit dem FIFO. Ich benutze einen PIC18F2431, welcher 
einen 4x10-bit FIFO hat. Ich möchte allerdings nur 2 Werte 
hineinspeichern und auch diese 2 Werte auslesen. Hier ist mein 
Auslesecode:
Muss ich auch beim hineinspeichern darauf achten auf welchen Platz das 
gespeichert wird oder funktioniert das automatisch?
Mfg

  ADCON1bits.ADPNT1=0;
  ADCON1bits.ADPNT0=0;
Nop();

  rk=(ADRESH*256) + ADRESL;
  ADCON1bits.ADPNT1=0;
  ADCON1bits.ADPNT0=1;
Nop();

  lk=(ADRESH*256) + ADRESL;
Gast #3580301
Tobias N. schrieb:
> ja steht theoretisch drinnen, aber ich hab es bereits 3 mal
> durchgelesen
> und finde den Fehler allerdings nichts. Aber vlt hat jemand erfahrung
> mit dem fifo?

Vermutlich verstehst du kein Englisch. Das muß man aber heutzutage.
#3580306
Das wär allerdings eine komische FIFO, wenn ich mich als Anwender dann 
auch noch selbst um die Details kümmern muss.
Der Sinn einer FIFO besteht doch darin, dass ich kurzfristig ein paar 
Daten 'parken' kann, und ich sie dann in der gleichen Reihenfolge wieder 
aus der FIFO kriege, wie ich sie reingestellt habe. WObei sich die FIFO 
um die Details selbst kümmert, wie zb wieviele Daten bereits in der FIFO 
sind und wo daher die nächsten zwischengelagert werden müssen.
#3580332
Hallo Tobias,

du weisst aber schon das diese FIFOs im PIC nicht in beide richtungen 
gehen?
zb: der FIFO im uart, da schreibt das rx teil x-bytes rein, und das wird 
dann ausgelesen, von deinem code.
also meines wissens sind alle FIFOs in deinem PIC and irgendwein 
hardware modul gebunden, in eine richtung.

Ich denke du schreibst in den ADC FIFO, der ist nur zum lesen.

sollte aber alles klar zu sehen sein im DB, mal die Blockschaltbilder 
ansehen wo FIFOs drin sind.

ps: ich lass mich gerne belehren, aber keiner meiner PIC's, von 
PIC16,18,....32 hat FIFOs zur allgemeinen bidirectionalen benutzung.

mfG
Peter
OP #3581911
Okay ich habe mich leider vertan. Mein ADC funktioniert fast 
einwandfrei. Das  Werte auslesen funktioniert auch und das FIFO arbeitet 
auch korrekt. Ich habe heute etwas ausprobiert: Ich habe ein 6 kHz 
Sägezahnsignal an beide Eingänge meinese µC geführt und mir ist 
aufgefallen, dass beim Auslesen den Variablen immer der selbe 
Unterschied zugewiesen wurde. Also in etwa eine Spannungsdifferenz von 
200mV entspricht ungefähr 75 µS zwischen den beiden Eingängen. Sprich 
sie werden nicht exakt gleichzeitig gesampelt. Bei niedriger Frequenz 
war dieser Unterschied logischerweise geringer. Eigentlich habe ich das 
gleichzeitige sampeln durch den Eintrag in dem Register ACMOD des ADCON0 
eingetragen. Ich brauche in meiner Anwendung ein exaktes Sampeln, da 2 
Audio-Signale verglichen werden. Weiß jemand Rat?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 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.