- Labornetzteil AliExpress         
Ergebnis 1 bis 8 von 8

Thema: Atmega32 SPI will nicht

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von -schumi- Beitrag anzeigen
    Somit gibts eine Änderung im Code:
    Der Code enthält allerdings auch noch eine weitere Änderung, die auf jeden Fall essentiell wichtig ist: SS wird auf Ausgang geschaltet bevor das SPI-Interface konfiguriert wird.
    MfG
    Stefan

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Ah stimmt, glatt übersehen^^

    Aber irgendwas stimmt da trotzdem noch nicht...
    Das SPI funzt zwar, aber eigentlich sollte der DAC je nach konfiguration entweder von 0V-2.048V oder 0V-4.096V (Dann halt mit halb so großer Genauigkeit) ausgeben können.

    Bei mir macht der ganz was anderes.
    0V-4.096V wird zu 2.048V-4.096
    und bei
    0V-2.048V gibt er immer 2.048V aus, egal welchen Wert ich reinschreib..

    Naja, mal drüber schlafen, vielleicht krieg ichs morgen noch hin. Oder ich nerv mal demnächst meinen Ausbilder damit^^

    Viele Grüße
    -schumi-

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Hast du das Problem gelöst?
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Da ich fast die gleichen DACs habe, bin ich natürlich auch daran interessiert ob du sie ans laufen bekommst. Hast du mal versucht die Reihenfolge der Bits zu ändern ? Irgendwie scheint es mir so, dass erst die Config Bits eintreffen sollten und dann die Datenbits.
    Grüße,
    Daniel

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Also ich habs gerade mal mit Bascom und C probiert und bei mir laufen sie
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  6. #6
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Bei mir funktionierts so:

    Code:
    SPI_WORD(  0b10100000 | ((setspg>>6) & 0b00011111)  ,  setspg<<2  );
    In setspg steht der gewünschte Wert der Ausgangsspg drin.

    Gibt dann 0V-4.095 aus. (Vermute ich, aufs Bit genau geht mein DMM nicht)

    Allerdings ist das hier noch ein wenig verschoben (beim zuerst gesendeten Byte hab ich meine Angaben um ein Bit nach links verschoben (Glück gehabt, dass das MSB 0 sein muss wenn man DAC_A braucht^^).

    Ich hab den verdacht, dass SCK schon irgendwo zu früh eine steigende Flanke macht und der DAC schon am lesen ist. Aber ich hab leider momentan in der Arbeit wenig Zeit übrig (Prüfungsvorbereitung) und deswegen bin ich noch nicht dazu gekommen mir den BUS mit dem Digitaloskar anzusehen.

    PS: meine SPI Routinen:
    Code:
    void SPI_INIT (void)
    {
        DDRB = DDRB | (1<<DDB5) | (1<<DDB7) | (1<<DDB4);
        SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR0) | (1<<CPHA);
    }
    
    void SPI_WORD (char data1, char data2)
    {
        PORTB = PORTB & 0b11101111;
        SPDR = data1;
        while(!(SPSR & (1<<SPIF)));
        SPDR = data2;
        while(!(SPSR & (1<<SPIF)));
        PORTB = PORTB | 0b00010000;
    }
    Viele Grüße
    -schumi-
    Geändert von -schumi- (09.03.2012 um 22:15 Uhr)

Ähnliche Themen

  1. PC4 des ATMEGA32 reagiert nicht...
    Von WarChild im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 2
    Letzter Beitrag: 02.11.2010, 19:35
  2. ATmega32 startet nicht
    Von Feratu im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 12.01.2010, 13:23
  3. Atmega32 reicht nicht mehr aus!?
    Von micro07 im Forum AVR Hardwarethemen
    Antworten: 9
    Letzter Beitrag: 05.04.2009, 20:10
  4. WinAvr findet Atmega32 nicht
    Von bugmenot im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 12.12.2008, 17:20
  5. ATMEGA32 läuft nicht mehr.
    Von Battatan im Forum AVR Hardwarethemen
    Antworten: 25
    Letzter Beitrag: 10.09.2007, 16:26

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test