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;
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?
:
Bearbeitet durch User
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.
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.
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.