www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USI SPI bei ATtiny 25 o.a.


Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Suche einen funktionierenden Quellcode in C

Habe bisher dies hier probiert (laut Anleitung):

Vorher DO und SCK auf Ausgang gesetzt --

Geht nicht - leider

void SPI_MasterTransmit(uint8_t SPI_Data)
{
  USIDR = SPI_Data;    // sts USIDR,r16
  USISR = (1<<USIOIF);    // ldi   r16,(1<<USIOIF)
                          // sts   USISR,r16
        
                                       // TransferLoop:

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

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

      while(!(USISR & (1<<USIOIF)))  // lds r16, USISR
                                     // sbrs r16,USIOIF 
    
} 

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

muss in deine while-Scheife.

MfG Spess

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur noch mal zur Verständigung:


Beim ATtiny25 steht bei PB1   MISO / DO

bei PB0  MOSI / DI

wenn ich den AVR als Master benutzen will, dann widerspricht sich das 
etwas.

Bleibt DO Ausgang (Master in, Slave out)?

Autor: Frank-Neu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
ISR (TIMER0_COMPA_vect)
{
USICR |= (1<<USITC);
}

Einrichten:
void init_SPI(void)  // see 13/15 Use of ..pdf
{
DDRB = (1<<SS) | (1<<SCK)| (1<<MOSI);  
  USICR |= (1<<USIOIE) |(1<<USIWM0)|(0<<USIWM1) | (1<<USICS0) | (0<<USICS1) |(1<<USICLK); 
  //Toggeln des CLK via Timer / Counter 0 IRQ
  //The Counter Overflow (interrupt) Flag, or USIOIF, can therefore  //be used to determine when a transfer is completed
}
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:
void sent_Byte_SPI(unsigned char Byte)
{
  USIDR=Byte;
USISR=(1<<USIOIF);
  while (!(USISR &(1<<USIOIF))); 

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

Vielen Dank im Voraus

Autor: Interessiert-Zwei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

diese Antwort ist nicht sehr hilfreich. Aber ich stehe bei einem 
identischen Problem. Ich hätte auch gerne eine Antwort :-)

Grüße

Autor: Idee (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss das nicht heißen:
ISR (TIMER0_COMPA_vect)
{
USICR |= (1<<USICLK);
}

??

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.