- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 22

Thema: Software-SPI-Slave mit Tiny13V

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
    Was ich so auf den ersten Blick sehe (also kein Anspruch auf Vollständigkeit):

    1)
    Code:
    uint16_t MSB = 0b100000000000000; // Letzte bit
    Für solche Konstanten die binäre Schreibweise zu verwenden, ist meist keine so gute Idee. Bei den vielen Nullen verzählt man sich schon mal, und genau das hast du auch.

    2)
    Code:
    if(SPI_CLK_PB2 & (1<<SPI_CLK_PB2))
    
    
    if(!(SPI_SS_PB1 & (1<<SPI_SS_PB1)))
    Diese if-Bedingungen machen überhaupt keinen Sinn, und sind immer false.

    3)
    Code:
    MSB <<=1;
    Falsche Richtung.

    4)
    Wo ist der Rest von SPI_Write_Word?
    MfG
    Stefan

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    21.07.2011
    Beiträge
    27
    zu 1)
    uint16_t MSB = 0x8000;

    zu 2) Ich dachte als abfrage für die Pins.
    SS Solange SS high nichts machen und sobald low ist mit dem senden anfangen
    Und bei CLK fast genauso nur er soll schieben wenn CLK high ist.

    zu 3) Er soll mit dem Höchsten bit anfangen?

    zu 4) habe kein Rest nur die SW-SPI-Master Funktion von oben (1.post), da habe ich die sachen die ich nicht brauche (glaube ich zu mindestens) weg gelassen, Weil SS und CLK wird ja dem Tiny13 vom Tiny2313 geschickt.

    MfG exkluski

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    zu 2) Ich dachte als abfrage für die Pins.
    Und wo in diesen Bedingungen wird irgendetwas abgefragt? Da steht einfach nur
    Code:
    if (2 & (1<<2)))

    zu 3) Er soll mit dem Höchsten bit anfangen?
    Und? Wie sieht MSB nach dieser Operation aus?


    zu 4) habe kein Rest nur die SW-SPI-Master Funktion von oben (1.post)
    Da wird also genau ein Bit ausgegeben. Was ist mit den anderen 15?
    MfG
    Stefan

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    21.07.2011
    Beiträge
    27
    Mit der abfrage habe ich mich verlesen sollte so heißen
    Code:
     if(!(SPI_SS_PIN1 & (1<<SPI_SS_PB1)))
    Und? Wie sieht MSB nach dieser Operation aus?
    1 Bit weiter schieben und das dann ausgeben, mache ich das nicht mit
    Code:
     MSB<<=1;
    es ist doch in einer schleife die Solange durchlaufen wird bis 16 bit raus geschoben sind.

    MfG exkluski

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von ExKluski Beitrag anzeigen
    Mit der abfrage habe ich mich verlesen sollte so heißen
    Code:
     if(!(SPI_SS_PIN1 & (1<<SPI_SS_PB1)))
    Ob das jetzt korrekt ist, hängt davon ab, wie SPI_SS_PIN1 definiert ist. Die 1 darin lässt allerdings nichts Gutes vermuten.


    Zitat Zitat von ExKluski Beitrag anzeigen
    1 Bit weiter schieben und das dann ausgeben, mache ich das nicht mit
    Code:
     MSB<<=1;
    es ist doch in einer schleife die Solange durchlaufen wird bis 16 bit raus geschoben sind.

    MfG exkluski
    Nochmal: wenn MSB vorher 0x8000 ist, was ist es dann hinterher?
    Und wo bitte ist diese Schleife?
    MfG
    Stefan

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    21.07.2011
    Beiträge
    27
    hinterher ist er 0, wäre es dann nicht besser es als Globale Variable "volatile" und die Richtung zu ändern

    Die Schleife meine ich
    Code:
    for(i=0;i<15;i++)
    {
    if(mask | word) SPI_MOSI_PORT|=(1<<SPI_MOSI_PIN); 
    else SPI_MOSI_PORT&=~(1<<SPI_MOSI_PIN); 
    if(SPI_MISO_PIN == 1) temp |= mask;
    SPI_CLK_PORT |=(1<<SPI_CLK_PIN); 		//CLK-Takt HIGH
    SPI_CLK_PORT &=~(1<<SPI_CLK_PIN); 		//CLK LOW
    mask >>= 1;
    }

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von ExKluski Beitrag anzeigen
    Die Schleife meine ich
    Und was hat diese Schleife mit deinem Slave-Code zu tun? Wo ist da eine Schleife?
    MfG
    Stefan

Ähnliche Themen

  1. Slave-Master-Slave übertragung geht nicht
    Von Dämmi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 26.11.2008, 00:08
  2. Software-Slave für I2C-Bus
    Von ZellRobi im Forum Software, Algorithmen und KI
    Antworten: 11
    Letzter Beitrag: 25.06.2008, 15:59
  3. Problem beim Programmieren bei minimaler Taktung Tiny13V
    Von Windi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 11.09.2007, 14:02
  4. Bezugsquelle für Tiny13V
    Von Windi im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 20.02.2006, 22:30
  5. AT90S2313 als I2C-Slave (Software-Implementierung)
    Von talentraspel_kai im Forum AVR Hardwarethemen
    Antworten: 8
    Letzter Beitrag: 08.02.2006, 15:03

Berechtigungen

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

LiFePO4 Speicher Test