Hallo, ich möchte ein AD5293 mit einem ATmega8 per SPI ansteuern. Der ATmega ist folgendermaßen mit dem AD5293 verbunden: MOSI(PB3) - DIN SCLK(PB5) - SCLK /SS(PB2) - /SYNC Mit dem Code im Anhang bekomme ich auf der Clock und Daten-Leitung das entsprechende Bitmuster. Der Slave-Select verhält sich jedoch seltsam. Sobald ich mit dem Oszilloskop am PIN messe, stürzt scheinbar das Programm ab und funktionert erst wieder nach einem Reset des ATmega. Der Slave-Select wird doch ganz normal als Ausgang konfiguriert oder übersehe ich da was?
Hat mir niemand einen Tipp, wo der Fehler sein könnte? Das scheint ja irgendwie ein Problem mit dem SPI des ATmega zu sein und weniger des Slaves.
Hallo Tom, bin auch grad am AD5293 dran. Init musst du so machen. SPI_DDR &= ~(1<<SDO); SPI_DDR |= (1<<SDI)|(1<<SCK)|(1<<CS); SPI_PORT |= (1<<CS)|(1<<SCK)|(1<<SDI); SPCR =0x00; SPCR |= (1<<SPE)|(1<<MSTR)|(1<<CPHA); Sowas wie SPCR = (0<<SPIE)) wird dir so nie funktionieren. Bits löscht man durch SPCR &= ~(1<<SPIE) Hoffe das hilft dir schon mal. Gruß CB
Hi >Init musst du so machen. Nein, muss er nicht. >uint8_t byte1 = (val>>8 & 0xFF) | (1<<3); Welches Bit willst du mit 1<<3 wirklich setzen? MfG Spess
Hallo CB und Spess, danke für eure Tipps. Die Initialisierung ist ja nur anders geschrieben. CB schrieb: > SPCR = (0<<SPIE)) Da hast du Recht, das hat keine Auswirkung auf das Programm. Das ist nur der Übersicht halber mit drin. Die Initialwerte des Ports habe ich von dir übernommen. spess53 schrieb: > Welches Bit willst du mit 1<<3 wirklich setzen? Bit10 (C0), da habe ich mich scheinbar verzählt. Richtig müsste es heißen: uint8_t byte1 = (val>>8 & 0xFF) | (1<<2); Jetzt funktioniert alles. Danke euch beiden. Noch ein kurzer Nachtrag: Obiges Programm muss noch durch die Deaktivierung des Write Protect erweitert werden. Also zu Beginn Command 4 aus Tab. 11 im Datenblatt schreiben.
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.