www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik max186 (ADC) über SPI ansprechen


Autor: Matze Klaus (phytomed)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich möchte einen 12 Bit-AD-Wandler über die SPI-Schnittstelle
des Atmega16 oder des Atmega32 ansprechen. Bei meinem Programm
ergibt die Ausgabe allerdings immer 0, auch wenn ich Spannung
anlege. Ein Problem ist sicherlich, dass die Kommunikation (SPDR)
nur 8 Bit lang ist aber "das Ergebnis" eigentlich 12 Bit lang.
Leider weiss ich nicht wie ich das ändern kann, allerdings würde
mir notfalls auch 8 Bit Auflösung reichen.

Leider weiss ich auch nicht genau was mit "gleichzeitig" beim
Datenaustausch zwischen Master und Slave gemeint ist,
ist das ablesen des SPDR nach meiner Anfrage überhaupt richtig
oder muss man "gleichzeitig" ablesen?!

Da ich nicht weiss wie man eine zweite Datei anhängt werde ich das
Anschlussbild in einer "Antwort" schreiben.

Vielen Dank
Matthias

Autor: Matze Klaus (phytomed)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier kommt nun der Anschlussplan

Danke
Matthias

Autor: Matze Klaus (phytomed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigt bitte nocheinmal,

ich habe die Angabe der Pins vergessen,
also

#define DD_MOSI         PB5
#define DD_MISO         PB6
#define DD_SCK          PB7

und ausserdem

PB4 als SS

Also genau wie im Atmega 16 Datenblatt

Danke
Matthias

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Datenblatt des MAX186 sollte in der Lage sein, zu dem Thema
"Auslesen der Daten" etwas beizutragen.
Bei den mir bekannten Bausteinen (z.B. TLC2543) muss man einfach 2 mal
8 Bit direkt nacheinander auslesen um alle 12 Bit (wahlweise links-
oder rechtsbündig) zu erhalten.

Dieter

Autor: Matze Klaus (phytomed)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin Dieter,

ich habe nun die library so verändert,
dass ich zweimal hintereinander SPDR abrufe und
dann die Daten in einer Variable zusammenführe,
allerdings funktioniert es immer nocht nicht!?!?

Ich hänge die veränderte Datei nocheinmal an.

Danke
Matthias

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Matthias,

ich stamme nun nicht aus dem Atmel AVR Lager und hab von C nur
rudimentäre Ahnung, aber das
    DDRB = (1 << DD_MOSI) | (1 << DD_SCK);
    DDRB = (1 << PB4); //SS als Augang setzen
ist meiner Meinung nach leicht daneben.
Mit der zweiten Zeile werden nämlich MOSI und SCK wieder von Ausgang
auf Eingang umgeschaltet.
Es müsste nach meinem Verständnis heißen
    DDRB = (1 << DD_MOSI) | (1 << DD_SCK) | (1 << PB4);
dann sind alle 3 Pins als Ausgang geschaltet.

Vielleicht war das schon alles

Gruß
Dieter

Autor: Thino (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi ich habe mal noch eine frage zum MAX186.
ich möchte meine heizungssteuerung mit dem programm profilab30 
realisieren. dazu brauche ich 14 analoge eingäne. nun meine frage, kann 
man den schaltkreis über den seriellen oder parallelen port direkt 
ansteuern?
wenn nicht wie ist es am einfachsten zu realisieren?
für brauchbare tips wäre ich euch dankbar
Thino

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.