mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega32 und AD7706 - SPI Problem - Bascom


Autor: Marie L. (lendl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Profis,

ich habe einige Probleme einen ATMega32 mit einem AD-Wandler AD7706 zu 
verheiraten.
Eines vorweg, ich bin Anfänger und das ist mein erster Post in diesem 
Forum. Also bitte entschuldigt eventuelle doofe Fragen oder Fehler 
meinerseits.

Mein Problem ist dass ich keine ordentlich Kommunikation zwischen dem 
7706 und meinem ATMega zustande bringe. Ich vermute den Fehler in der 
Clockrate, bin mir aber nicht sicher.

Aber ich fange am Besten mal mit der Verdratung an.

AD7706 --> ATMega32

SCLK - CLK
MCLK IN - Quartz 4 MHz
MCLK Out - Quartz 4 MHz
CS - GND
Reset - Vcc
AIN2(+) - Nicht beschaltet
AIN1(+) - Poti 0V bis 5V
AIN(-) - GND
REF IN(+) - 2,5 V
REF IN(-) - GND
AIN(-) - Nicht beschaltet
DRDY - Portd.3
DOUT - Miso
DIN - Mosi
Vdd - Vcc 5V
GND - GND

Der ATMega läuft mit einem 8 MHz Quartz

Das war mal die Verdrahtung, da gehe ich jetzt mal nicht von einem 
Fehler aus.
Jetzt mein Bascom Programm:
'**********************************************************
'* Test ATMega32 mit AD-Wandler AD7706
'**********************************************************

'Config allgemein:
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 4800
'Config LCD
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
Config Lcd = 16 * 2
Config Portc = Output
Reset Portc.1
Initlcd
Cursor Off
Cls
'Config SPI:
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 4
Spiinit
'Config Ports
Config Portd.3 = Input
Drdy Alias Portd.3
'Variablen
Dim Msb As Byte
Dim Lsb As Byte
Dim Ergebnis As Word
Dim X As Byte

'Kommunikation mit dem AD7706:
'Mitteilung ans Kommunikationsregister: nächste Operation Schreiben ins Setup-Register
X = &B00010000
Spiout X , 1
'Schreibzugriff auf Setup-Register
X = &B00000001
Spiout X , 1
'Mitteilung ans Kommunikationsregister: nächste Operation Schreiben ins Clock-Register
X = &B00100000
Spiout X , 1
'Schreibzugriff auf Clock-Register
X = &B00001101
Spiout X , 1

'Mess -schleife:
Do

Cls
Locate 1 , 1
Lcd "Start"
Wait 3

  'Mitteilung ans Kommunikationsregister: nächste Operation Lesen vom Data-Register
  X = &B00111000
  Spiout X , 1


   If Drdy = 0 Then

   Locate 2 , 1
   Lcd "DRDY = 0"
   Waitms 20
   Spiin Msb , 1
   Spiin Lsb , 1
   Locate 1 , 1
   Lcd "Msb: " ; Msb ; " " ; "Lsb:" ; Lsb ; " "

   Else

   Locate 2 , 1
   Lcd "DRDY = 1"

   End If

  Wait 3
  Ergebnis = Makeint(lsb , Msb)
  Locate 2 , 1
  Lcd "Ergebnis = " ; Ergebnis


Wait 3
Cls
Locate 1 , 1
Lcd "neue"
Locate 2 , 1
Lcd "Schleife"
Wait 3

Loop
End

Ich vermute an folgenden Punkten eventuelle Fehler:

Config SPI:
Polarität, Phase, Clockrate - hier bin ich mir nicht sicher ob das 
überhaupt stimmt

Schreibzugriff auf das Setup-Register:
Was bedeutet das letzte Bit, da werde ich aus dem Datenblatt nicht 
schlau

Schreibzugriff auf das Clockregister:
Da steige ich im Datenblatt gar nicht durch.
Ich brauch wohl den Teiler CLKDIV weil ich ja nen 4 MHz Quartz habe.
Beim CLK Bit bin ich mir schon nicht mehr sicher ob ich das brauche und 
bei den FS-Bits habe ich gar keine Ahnung was ich da einstellen soll.


Vielleicht hat ja einer von Euch schon mal mit dem 7706 zu tun gehabt 
und kann mir ein wenig unter die Arme greifen.
Ich wäre für jeden Tip dankbar!

Schönen Restsonntag noch...

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.