-
        

Ergebnis 1 bis 5 von 5

Thema: Abfallzeit

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.08.2009
    Beiträge
    8

    Abfallzeit

    Anzeige

    Hallo

    ich möchte einen Digital-Analogwandler (Max541) per Spi am Atmega32 steuern. Für den Chip Select des DAC benutze PinB2. Das Problem ist das dieser Pin extrem langsam auf GND abfällt (ca 300µs) wärend alle anderen Signale vom SPI deutlich steiler sind. Damit funktioniert natürlich auch das Timing nicht...

    Die Initalisierung von PB2 als Ausgang im Program:

    Code:
    DDRB = (1<<DDB2);
    Funktionen für SPI

    Code:
    // konfigurieren des SPI
    void SPI_MasterInit(void)
    {
     /* Set MOSI and SCK output, all others input */
     //auch SS mitals ausgang da er sonst hängen bleibt...
     DDRB = (1<<DDB5)|(1<<DDB7)|(1<<DDB4);
     /* Enable SPI, Master, set clock rate fck/16   */
     SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
     
     
    }
    
    // DAC
    uint8_t spi_send_byte(uint8_t data)
    {
     /* Start transmission */
     SPDR = data;
     
     
     while(!(SPSR & (1<<SPIF)));
     return 1;
    }
    
    uint8_t spi_DAC(uint16_t data)
    {
     
     
     union daten
     {
      uint16_t data;
      struct
      {
       uint8_t byte1;
       uint8_t byte2;
      };
     
     }dat;
     
     dat.data=data;
     
      //low -> DAC anwählen
      PORTB &= ~(1 << PB2);
     
     //senden des ersten bytes
     SPDR = dat.byte1;
     while(!(SPSR & (1<<SPIF)));
     
     //senden des zweiten bytes
     SPDR = dat.byte2;
     while(!(SPSR & (1<<SPIF)));
     //high -> DAC aktualisiern + abwählen
     PORTB |= (1 << PB2);
    
     return 1;
    }
    Kann mir jemand erklären wie diese Phänomen zustande kommt?

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hi,

    Der Chipselect ist nur mit dem Controller verbunden oder sind da noch andere Sachen dran angeschlossen?
    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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.08.2009
    Beiträge
    8
    Hi,

    genau. Da ist sonst nichts dran. Das Ganze ist mit einem Flachbandkabel und entsprechenden Buchsenleisten miteinander verbunden. Da aber auch die anderen SPI Leitungen (bei denen das Signal sehr gut ist) über dieses Kabel geführt werden kann ich mir nicht vorstellen das irgendwo zusätzliche Kapazitäten oder Induktivitäten vorhanden sind die das Signal verschleifen. Kann es sein das der PB2 nicht uneingeschränkt zu verwenden ist?

    Grüße

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hi,

    es kann gut sein das die Pins für den SPI intern anders aufgebaut sind als der "normale" B2. Hast du mal im Datenblatt unter "Electrical Characteristics" geschaut bzw. nen anderen Pin ausprobiert?
    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

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    19.08.2009
    Beiträge
    8
    Das war das erste was ich gemacht habe... es gibt aber keine Hinweise darauf das PB2 sich irgendwie unterscheided. Auserdem verwende ich diesen PIN auch als normalen Pin. Das Chip Select für den DAC erfolgt per Software. Ich hatte das ganze vorher schon per Lochraster aufgebaut. Allerdings den PC7 anstelle des PB2 benutzt. Jetzt hab ich eine Platine gefertigt. Der einzigste Unterschied ist das ich jetzt PB2 verwende(aus Layout Gründen). Das es jetzt nicht so wie erhoft funktioniert ist schon ziemlich ärgerlich! Ich wüsste nur gerne warum damit ich (und vieleicht auch andere) nicht wieder in so eine Falle tappen.
    Ich werde jetzt erstmal nen neuen ATmega bestellen und probieren ob dieser hier nicht defekt ist.

    Danke erstmal für die Antworten!

Berechtigungen

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