USI SPI bei ATtiny 25 o.a.

Gast #1926477
Lesenswert?

Suche einen funktionierenden Quellcode in C

Habe bisher dies hier probiert (laut Anleitung):

Vorher DO und SCK auf Ausgang gesetzt --

Geht nicht - leider
1
void SPI_MasterTransmit(uint8_t SPI_Data)
2
{
3
  USIDR = SPI_Data;    // sts USIDR,r16
4
  USISR = (1<<USIOIF);    // ldi   r16,(1<<USIOIF)
5
                          // sts   USISR,r16
6
        
7
                                       // TransferLoop:
8

9
  USICR |= (1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC);    
10

11
                 // ldi r16,(1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC)
12
                 // sts USICR,r16
13

14
      while(!(USISR & (1<<USIOIF)))  // lds r16, USISR
15
                                     // sbrs r16,USIOIF 
16
    
17
}
Gast #2157429
Lesenswert?

Hallo liebe µC-Crew,

quäle mich nun seit geraumer Zeit mit dem Einrichten der USI für SPI an 
einem ATtiny25. Habe schon mehrere Threads gelesen und irgendwie bin ich 
wohl nen DAU. Aber mit Atmegas etc. habe ich das schon hinbekommen und 
das läuft auch einwandfrei.

Ggf. hat ja jmd während des Eier-SChmauses Lust zu helfen?

Ich will doch einfach nur nen Master-USI-SPI generieren.

Folgendes:

Funktioniert:
1
ISR (TIMER0_COMPA_vect)
2
{
3
USICR |= (1<<USITC);
4
}

Einrichten:
1
void init_SPI(void)  // see 13/15 Use of ..pdf
2
{
3
DDRB = (1<<SS) | (1<<SCK)| (1<<MOSI);  
4
  USICR |= (1<<USIOIE) |(1<<USIWM0)|(0<<USIWM1) | (1<<USICS0) | (0<<USICS1) |(1<<USICLK); 
5
  //Toggeln des CLK via Timer / Counter 0 IRQ
6
  //The Counter Overflow (interrupt) Flag, or USIOIF, can therefore  //be used to determine when a transfer is completed
7
}
Frage: Welche IRQ-Routine-Vektor kann ich den für den USIOIE benutzen? 
Bzw. (ich kann es auch falsch verstehen!) wird dieser IRQ für das 
interne USI benutzt um den Counter zu setzen?

Senden:
1
void sent_Byte_SPI(unsigned char Byte)
2
{
3
  USIDR=Byte;
4
USISR=(1<<USIOIF);
5
  while (!(USISR &(1<<USIOIF)));

PS: Mein Oszilloksop meldet: SCK Läuft, MOSI geht auf LOW und bleibt 
auch LOW

Vielen Dank im Voraus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren