Forum: Compiler & IDEs USI -- Three-wire -- ATTiny25 -- Slave soll Daten senden -?


von Jens E. (Gast)


Lesenswert?

Hallo,

bitte helft mir, komme nicht weiter --- habe alles über USI hier im 
Forum gelesen.

Ich schicke aller Sekunden von einem Master 8 Taktimpulse auf den Slave, 
aber er will nichts ausgeben ...

Über Leds usw. habe ich herausbekommen, dass die SLK-Impulse ankommen 
und die While-Schleife auch beendet wird, aber eben nur 1 mal. Aber auch 
bei diesem einem mal bekomme ich keine Daten an DO. Hier muss ich was 
vergessen haben ...
Eigentlich müsste der Slave an der while-Schleife warten, bis die 
nächsten 8 Clocks kommen oder?
Der 4BitCounter läuft auch los ...

Danke ...


ATTiny25

1
void InitSPI(void)
2
{
3
  
4
USICR |= (1<<USIWM0) | (1<<USICS1);  
5
6
// USIWM0 = Output wird jetzt vom 
7
//uC gesetzt und gelöscht und nicht mehr per Software
8
// USICS1 = External Clock enabled, wird also von außen gesteuert      
9
}
10
11
12
uint8_t SlaveSPITransfer (uint8_t a)
13
{
14
  DDRB |= (1<<PB1);  
15
16
  USIDR = a;   // Daten übergeben
17
18
  USISR &= ~(1<<USIOIF);  // Counter Overflow Flag wird gelöscht   
19
20
  while (! (USISR & (1<<USIOIF)))
21
  
22
  DDRB &= ~(1<<PB1);
23
24
  return USIDR;
25
}
26
27
28
29
// in der Main steht
30
31
while(1)
32
  { 
33
     // Test
34
    uint8_t a;
35
36
    a = SlaveSPITransfer(50);
37
  }

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.