- Labornetzteil AliExpress         
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
    5) Du willst 16 Bits aus einem Byte ausgeben?
    MfG
    Stefan

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Ich sehe gerade, dass du auch schon einen längeren Thread auf mikrocontroller.net hast. Damit bin ich raus. Ich habe schlicht keine Lust, zwei Threads zu checken, um zu sehen, ob ich meine Zeit nicht damit verschwende, Dinge zu schreiben, die vielleicht längst gesagt wurden.

    Folgendes zum "Abschied":
    Erst musst du dir mal darüber klar werden, ob das eigentliche Raustakten der Daten nun per Interrupt, oder per Polling erfolgen soll, und ob es 8 oder 16 Bit sind. Für 16 Bit Polling sieht der Pseudo-Code dann z.B so aus:
    Code:
    mache 16 mal {
        warte bis Takteingang high
        gebe Bit aus
        schiebe zum nächsten Bit
        warte bis Takteingang low
    }
    MfG
    Stefan

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    21.07.2011
    Beiträge
    27
    zu 1)
    Code:
    //DDRB
    #define SPI_MOSI_DDR  DDRB
    #define SPI_CLK_DDR   DDRB
    #define SPI_MISO_DDR  DDRB
    #define SPI_SS_DDR    DDRB
    
    //PORTB
    #define SPI_MOSI_PORT  PORTB
    #define SPI_CLK_PORT   PORTB
    #define SPI_MISO_PORT  PORTB
    #define SPI_SS_PORT    PORTB
    
    // PIN 
    #define SPI_MOSI_PIN0  PINB0
    #define SPI_SS_PIN1    PINB1
    #define SPI_CLK_PIN2   PINB2
    #define SPI_MISO_PIN3  PINB3
    //PB
    #define SPI_MOSI_PB0  PB0
    #define SPI_SS_PB1    PB1
    #define SPI_CLK_PB2   PB2
    #define SPI_MISO_PB3  PB3
    
    //Slave-deklaration
    void SPI_INIT(void)
    {
    // MOSI, CLK und SS auf Eingang setzen
      SPI_MOSI_DDR = (1<<SPI_MOSI_PB0);
      SPI_CLK_DDR  = (1<<SPI_CLK_PB2);
      SPI_SS_DDR   = (1<<SPI_SS_PB1);
    // MOSI, CLK und SS Internen Pull-Up aktivieren 
      SPI_MOSI_PORT |=(1<<SPI_MOSI_PB0);
      SPI_CLK_PORT  |=(1<<SPI_CLK_PB2);
      SPI_SS_PORT   |=(1<<SPI_SS_PB1);
    // MISO auf Ausgang setzen 
      SPI_MISO_DDR |= (1<<SPI_MISO_PB3);
    //MISO auf High setzten
      SPI_MISO_PORT |= (1<<SPI_MISO_PB3);
    }
    zu 2) Mein fehler geändert in
    Code:
    for(uint16_t a =15 ; a > 0; a--)
    zu3) Kennst du das nicht im Kopf Klang es logisch, eigentlich wollte ich damit erreichen das er an der stelle warten soll bist der externe Int0 ausgelöst wird.

    zu4) Ne es soll nur etwas am miso-pin passieren wenn der der interrupt ausgelöst wird.

    zu5) es werden 16-bit ausgegeben habe es nur byte genannt.

    MfG Kluski

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Ok, meinetwegen noch einen letzten Post:

    zu 1) Dann ist die if-Bedingung immer noch Unsinn.

    zu 2) Die Schleife wird aber nur 15 mal durchlaufen.

    zu 3 und 4 und auch noch 2) Siehe meinen vorigen Post.

    zu 5) Du hast es nicht nur so genannt, im aktuellen Code ist es tatsächlich auch nur ein Byte.
    MfG
    Stefan

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    21.07.2011
    Beiträge
    27
    Klar verstehe ich das es dich anpisst, aber danke für die hilfe.
    Werde mir die posts mehrmals durchlesen bis ich es verstanden habe.

    Danke nochmals
    mfg exkluski

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    21.07.2011
    Beiträge
    27
    zu1 ) Bitte
    Code:
    //DDRB
    #define SPI_MOSI_DDR  DDRB
    #define SPI_CLK_DDR   DDRB
    #define SPI_MISO_DDR  DDRB
    #define SPI_SS_DDR    DDRB
    
    //PORTB
    #define SPI_MOSI_PORT  PORTB
    #define SPI_CLK_PORT   PORTB
    #define SPI_MISO_PORT  PORTB
    #define SPI_SS_PORT    PORTB
    
    // PIN 
    #define SPI_MOSI_PIN0  PINB0
    #define SPI_SS_PIN1    PINB1
    #define SPI_CLK_PIN2   PINB2
    #define SPI_MISO_PIN3  PINB3
    //PB
    #define SPI_MOSI_PB0  PB0
    #define SPI_SS_PB1    PB1
    #define SPI_CLK_PB2   PB2
    #define SPI_MISO_PB3  PB3
    
    //Slave-deklaration
    void SPI_INIT(void)
    {
    // MOSI, CLK und SS auf Eingang setzen
      SPI_MOSI_DDR = (1<<SPI_MOSI_PB0);
      SPI_CLK_DDR  = (1<<SPI_CLK_PB2);
      SPI_SS_DDR   = (1<<SPI_SS_PB1);
    // MOSI, CLK und SS Internen Pull-Up aktivieren 
      SPI_MOSI_PORT |=(1<<SPI_MOSI_PB0);
      SPI_CLK_PORT  |=(1<<SPI_CLK_PB2);
      SPI_SS_PORT   |=(1<<SPI_SS_PB1);
    // MISO auf Ausgang setzen 
      SPI_MISO_DDR |= (1<<SPI_MISO_PB3);
    //MISO auf High setzten
      SPI_MISO_PORT |= (1<<SPI_MISO_PB3);
    }
    zu 2) mein fehler
    Code:
    for(uint16_t a =15 ; a > 0; a--)
    zu3) Kennst du das nicht auch im Kopf Klang es Logisch damit meine ich er soll warten bis der Interrupt ausgelöst.

    zu4) da wusste ich nicht wie ich das schreiben sollte. Ich will das er ein bit am MISO aus gibt wenn der Interrupt ausgelöst wird und ein bit weiter schiebt

    zu5) er heisst nur Byte damit ich weiss es sind mehre bits

    MfG Exkluski

Ä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