Forum: Mikrocontroller und Digitale Elektronik MCP3008 über Atmega8 auslesen


von Dex (Gast)


Angehängte Dateien:

Lesenswert?

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

von Dex (Gast)


Lesenswert?

PUSH

von holger (Gast)


Lesenswert?

>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.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

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
von Dex (Gast)


Angehängte Dateien:

Lesenswert?

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

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Ich rede nichtmal vom SPI Modus (CPHA), les einfach mal Datenblatt 
Kapitel 5 ausführlich inkl den Diagrammen.

von holger (Gast)


Lesenswert?

>> -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);
                             ^^^^^^^
                             |||||||

von Dex (Gast)


Lesenswert?

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?

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Dex schrieb:
> Habe ich etwas entscheidendes übersehen?

Ja du hast immernoch nicht das Datenblatt Kapitel 5 gelesen!

von Dex (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>> 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.

von Dex (Gast)


Lesenswert?

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

von Max H. (hartl192)


Lesenswert?

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?

von Dex (Gast)


Lesenswert?

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

von Max H. (hartl192)


Lesenswert?

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
von spess53 (Gast)


Lesenswert?

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

von Dex (Gast)


Lesenswert?

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

von Dex (Gast)


Lesenswert?

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?

von Dex (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.