Forum: Mikrocontroller und Digitale Elektronik SPI über USI am aTTiny2313, problem


von Sanja (Gast)


Lesenswert?

Guten Abend,

nachdem ich schonwieder einige Tage damit verbracht habe aus 
Datenblättern und Codebeispielen schlau zu werden, brauch ich dann doch 
leider euren Rat.

Ich möchte einen RTC DS1306 an meinen attiny2313 anschließen. Problem 
ist die Kommunikation. Das ganze soll über SPI laufen, also über die USI 
Schnittstelle des tiny.

Ich habe nun versucht zwei Methoden zu schreiben für das initialisieren 
und das Daten senden zum RTC. Allerdings zweifel ich daran ob das so 
funktionieren kann. Da ich es momentan noch nicht ausprobieren kann wäre 
ich euch sehr dankbar, wenn ihr einen kurzen Blick auf die paar Zeilen 
werfen könntet, um mir zu sagen ob das so alles richtig ist.

Gruß Sanja
1
#include <avr/io.h>
2
#include <inttypes.h>
3
#include <util/delay.h>
4
5
//#define CE    4
6
#define MOSI  5
7
//#define MISO  6
8
//#define SCLK  7
9
10
11
12
13
void SPI_init()
14
{
15
  DDRB=~(1<<MOSI); 
16
17
}
18
19
void rtc_sent(uint8_t w_adress, uint8_t data)
20
{
21
   //Daten für Adresse ins Senderegister
22
  USIDR = w_adress;      
23
    USISR = (1<<USIOIF);    //Zurücksetzen von Counterwert & Flag
24
  
25
    do
26
    {
27
      USICR =  (1<<USIWM0)|(1<<USICS1)|
28
               (1<<USICLK)|(1<<USITC);
29
    }
30
    while (!(USISR&(1<<USIOIF)));
31
  
32
    //Daten für RTCdaten ins Senderegister
33
    USIDR = data;
34
    USISR = (1<<USIOIF);    //Zurücksetzen von Counterwert & Flag
35
  
36
    do
37
    {
38
      USICR =  (1<<USIWM0)|(1<<USICS1)|
39
               (1<<USICLK)|(1<<USITC);
40
    }
41
    while (!(USISR&(1<<USIOIF)));
42
}

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.