Forum: Mikrocontroller und Digitale Elektronik USI-SPI Problem!Tiny2313


von B-man (Gast)


Lesenswert?

Hallo erstmal,

ich möchte einen Sensor(BMA150) über SPI ansprechen.Bevor ich jedoch 
Daten zu dem Sensor rüberschicke, wollte ich erst einmal den 
Master(Controller) über ein Oszilloscope testen, bevor ich den Sensor 
über die 1k Widerstände anschließe.
Nun habe ich folgenden Quellcode geschrieben:

void spi_Init()
{
        DDRB = (1<<DDB5) | (1<<DDB7);
  USISR=(1<<USIOIF);
}

int8_t usi_spi_data(int8_t dataspi)
{
  spi_Init();
  USIDR=dataspi;

  do
  {
    USICR=(1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC);
  }while(!(USISR&(1<<USIOIF)));
  return dataspi;
}

Wenn ich dieses Programm in einer schleife durchlaufen lasse, messe ich 
einen Takt am PIN7 jedoch kann ich am Oszilloscope keine Daten am MOSI 
messen(Es wird nur ein dauer High dargestellt). Der FKT wird der Wert
(int8_t) test=0b10011001 übergeben.

Was ist an meinem Programm falsch?
Kann mir jemand helfen?

Danke!

mfg =)

von B-man (Gast)


Lesenswert?

B-man schrieb:
> (Es wird nur ein dauer High dargestellt

Ich muss mich korrigieren ich messe ein dauer LOW

von Michael U. (amiga)


Lesenswert?

Hallo,

B-man schrieb:

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

Das dürfte doch wohl zur Init gehören...

Gruß aus Berlin
Michael

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.