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
:
Bearbeitet durch User
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
Ich rede nichtmal vom SPI Modus (CPHA), les einfach mal Datenblatt Kapitel 5 ausführlich inkl den Diagrammen.
>> -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?
Dex schrieb: > Habe ich etwas entscheidendes übersehen? Ja du hast immernoch nicht das Datenblatt Kapitel 5 gelesen!
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.
:
Bearbeitet durch User
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?
Ok das mit der sample Frequenz scheint tatsächlich so zu sein wie ich es mir gedacht habe. Bleibt nur noch die Frage mit der Input Frequenz zu klären
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.