Ich bin gerade dabei mich in SPi aunzuarbeiten und komme dabei nicht so
recht weiter.
gestern habe ich mir erstmal eine UARt verbindung mit dem PC erstellt
und kann ohne probleme sachen an den PC senden.
heute habe ich den MCP3008 mit einem 100k Poti an meinen Atmega8
geschaltet und wollte den ADC Wert über Uart auf dem PC ausgeben.
ich bekomme zwar einen wert aber der macht kein sinn und drehen des
Potis ändert diesen auch nicht.
Am Aufbau dürfte es nicht liegen, ich habe mich da an dem buch von Erik
Bartmann orientiert.
Ich denke mal die SPI Kommunikation ist fehlerhaft, aber ich weiss nicht
wo das problem liegt
mfg
>Ich denke mal die SPI Kommunikation ist fehlerhaft, aber ich weiss nicht>wo das problem liegt
So was passiert nun mal wenn man so blöd ist und
Interrupts freischaltet für die es keine Interruptroutine gibt.
Pushes sind nervig und manche Leute lesen erst Abends im Forum, also
lass das.
Da denkt man auch eher an ein kleines ungeduldiges Kiddie am anderen
Ende des Internets.
Zum Thema:
-Einfach mal CS vergessen
-nicht abgefangener SPI Interrupt lässt den Prozessor das Programm von
vorne abarbeiten
-kommunikation mit dem MCP fehlerhaft, anscheinend nichtmal das
Datenblatt gelesen
Martin Wende schrieb:> Pushes sind nervig und manche Leute lesen erst Abends im Forum,
tut mir leid mit dem Push, bin es recht gewohnt dass dieses Forum sehr
aktiv ist und fragen schnell beantwortet werden. Ich muss auch zugeben
dass ich leicht zur ungeduld neige^^
zum Thema:
Martin Wende schrieb:> -Einfach mal CS vergessen
Hab ich bereits nachträglich eingebaut gehabt aber bei der Version
anscheinend nicht dabei.
Martin Wende schrieb:> -kommunikation mit dem MCP fehlerhaft, anscheinend nichtmal das> Datenblatt gelesen
Damit meinst du wohl das CPHA aber auch das ist bereits weg seit meinem
ersten Post
Martin Wende schrieb:> -nicht abgefangener SPI Interrupt lässt den Prozessor das Programm von> vorne abarbeiten
Das müsstest du mir etwas genauer erklären, das verstehe ich nicht ganz
Im Anhang ist die aktuelle version
>> -nicht abgefangener SPI Interrupt lässt den Prozessor das Programm von>> vorne abarbeiten>>Das müsstest du mir etwas genauer erklären, das verstehe ich nicht ganz
Du hast den SPI Interrupt freigeschaltet aber keine Interruptroutine
dafür.
SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPIE)|(1<<SPR0);
^^^^^^^
|||||||
Also ich stehe irgendwie auf dem Schlauch. Ich meine ich habe nichts
übersehen. Ich habe jetzt den interrupt ausgestellt und noch einmal
alles durchgegangen.
Zuerst initialisiere ich die spi Schnittstelle des atmegas. Mosi, clk
und ss werden als Ausgang gesetzt.
Spi als Master und clockdiv. erstmal auf 16 gesetzt.
Beim lesen wird zuerst cs auf low gezogen
Gesendet werden 3 Bytes. Das erste behinhaltet das startbit. Das zweite
Byte beinhaltet die Auswahl einer Single ended Messung und den Kanal 0.
das dritte Byte ist beliebig und wird als dont Care gesendet.
Zum Schluss wird Byte zwei um 8 geschiftet und mit Byte 3 ge-odert.
Im Anschluss wird cs wieder auf High gesetzt.
Habe ich etwas entscheidendes übersehen?
Martin Wende schrieb:> Dex schrieb:>> Habe ich etwas entscheidendes übersehen?>> Ja du hast immernoch nicht das Datenblatt Kapitel 5 gelesen!
Ich habe es schon gefühlt 10 mal gelesen. Ich weiss leider nicht was du
meinst
>> Habe ich etwas entscheidendes übersehen?>>Ja du hast immernoch nicht das Datenblatt Kapitel 5 gelesen!
Laut Kapitel 6 stimmt aber alles.
Dort ist SPI Mode 0 angegeben.
SPCR=(1<<SPE)|(1<<MSTR);
Wenn dann nichts gescheites aus dem Ding raus kommt
wird das Problem wohl bei der Hardware liegen.
Die Hardware kann es eigentlich nicht sein. ist ja nicht viel zu
beschalten an dem MCP3008. AGND und DGND auf Masse, VREf 3.3V und VDD
wahlweise 3.3V-5V. Danach bleiben nur noch die SPI Leitungen.
anderen MCP3008 und Atmega habe ich auch schon getestet.
gibt es einen einfachen weg zu überprüfen ob die beiden ICs überhaupt
miteinander kommunnizieren? Ich meine nämlich der Quatsch den ich durch
von der Spi_tranceiver() bekomme ist der selbe wie wenn ich den MCP
komplett aus der Schaltung nehme.
ICh überprüfe es heute noch einmal
Dex schrieb:> Die Hardware kann es eigentlich nicht sein. ist ja nicht viel zu> beschalten an dem MCP3008. AGND und DGND auf Masse, VREf 3.3V und VDD> wahlweise 3.3V-5V. Danach bleiben nur noch die SPI Leitungen.
Hast du Entkoppelkondensatoren eingebaut?
Am MCP3008? nein habe keine dran, aber wird wahrscheinlich auch nicht
daran liegen weil ich bei meiner recherche bis so eine Beschaltung noch
nicht an einem MCP3008 gesehen habe.
ICh kann es natürlich später mal probieren, dann kann ich es wenigstens
schon mal ausschliessen
danke schon mal
Dex schrieb:> Am MCP3008? nein habe keine dran, aber wird wahrscheinlich auch nicht> daran liegen weil ich bei meiner recherche bis so eine Beschaltung noch> nicht an einem MCP3008 gesehen habe.
Ja, am MCP. Der Entkoppelkondensatoren wird im Schaltplan oft
weggelassen, da es eigentlich klar sein sollte, dass man ihn einbauen
soll. Ohne den Kondensator können Bauteile oft komisch oder gar nicht
funktionieren.
Hi
>Am MCP3008? nein habe keine dran, aber wird wahrscheinlich auch nicht>daran liegen weil ich bei meiner recherche bis so eine Beschaltung noch>nicht an einem MCP3008 gesehen habe.
Dann hat deine Recherche wohl das Datenblatt ausgelassen.
MfG Spess
Max H. schrieb:> Dex schrieb:>> Am MCP3008? nein habe keine dran, aber wird wahrscheinlich auch nicht>> daran liegen weil ich bei meiner recherche bis so eine Beschaltung noch>> nicht an einem MCP3008 gesehen habe.> Ja, am MCP. Der Entkoppelkondensatoren wird im Schaltplan oft> weggelassen, da es eigentlich klar sein sollte, dass man ihn einbauen> soll. Ohne den Kondensator können Bauteile oft komisch oder gar nicht> funktionieren.
Tatsache, es lag wirklich daran. mit den Kondensatoren bekomme ich
gescheide werte raus. zwar bekomme ich zwischendurch noch unsinn, aber
das liegt wohl an dem unsauberen Steckbrettaufbau.
Vielen Dank Max, hab bis jetzt zwar oft entkopplungskondensatoren
verwendet, aber dass die so einen großen einfluss haben hätte ich nicht
gedacht.
Das war auf jeden fall eine sehr große Lektion für mich
Hallo, ich muss mich hier noch einmal an die Kenner wenden. Also der
aufbau funktioniert sehr gut aber es bleiben bei mir immer noch einige
Fragen offen.
Den SPI Takt habe ich mit einem Preload von 16 eingestellt und bei einer
Frequenz von 1Mhz ergibt das 62,5kHz. aber das sagt mir nichts über die
sample frequenz oder?
Im Datenblatt steht dass ich bei VRef=2,7V max 75ksps und bei 5V 200ksps
sind aber woher weiss ich die sample Frequenz bei meinem Aufbau?
unter "Electrical Specification" steht fCLK=18*fSAMPLE aber kann ich
diese formel benutzen um meine Sample Frequenz zubestimmen?
Das würde in meinem Fall nämlich dann fSAMPLE=fCLK/(18*16)= 3420Hz
ergeben, ist das richtig?
dann hab ich noch eine Frage zu einem der digramme
zum Beispiel bei figure 2-28 wird ENOB in Abhängigkeit der input
frequency dargestellt. Ist mit der Input Frequency die Frequenz des zu
messenden signals gemeint?