Forum: Mikrocontroller und Digitale Elektronik micro wire


von Reiner (Gast)


Lesenswert?

hi, hat jemand schon einmal mit micro wire in c auf dem AVR gepielt 
(nicht CodeVision)?

Ich suche Anregungen für 'nen Treiber.

Reiner

von Phagsae (Gast)


Lesenswert?

Hi Reiner

SPI und microwire sind fast identisch.
Unterscheiden sich eigentlich nur bzgl
CPOL u CPHA einstellung

! Das hab ich so in erinnerung praktisch ausprobiert hab ichs nicht !


Hast du das denn schon dahingehend geprüft ?

Oder verwendest Du einen AVR ohne Hardware SPI ?

von Reiner (Gast)


Lesenswert?

Wie? Wieso fast identisch?
Einfach seriell out am Controller mit seriell in verbinden, wie bei 
einer SIM-Karte - das ist alles????

Selbst ohne SPI ist das ja kein Hindernis.

Ich wollte einen Dallas/Maxim Temperatursensor an einen AT90S8515 
hängen, um einen Motor zu überwachen.


Reiner

von Phagsae (Gast)


Lesenswert?

Hi Reiner

>Wie? Wieso fast identisch?
s.o
Kann LSB oder MSB first sein
Kann auf fallende oder steigende Flanken reagieren usw...
Wird mit dem SPI Control? Register eingestellt

>Einfach seriell out am Controller mit seriell in verbinden, ><wie bei einer 
SIM-Karte - das ist alles????

Kann ich jetzt nichts zu sagen kenn ich nicht.

>Selbst ohne SPI ist das ja kein Hindernis.
Software SPI will auch erst geschrieben werden ;-]
<Ich wollte einen Dallas/Maxim Temperatursensor an einen <AT90S8515 
hängen, um einen Motor zu überwachen.

Einfach das benötigte Datenformat ( Maxim Datenblatt ) anschauen und das 
HW SPI entsprechen einstellen.

MISO->Data out ( MAX )
MOSI<-Data IN
SCKL->(MAX)

Da sollte es eigentlich an quellcode im net nicht mangeln.

Phagsae

von Reiner (Gast)


Lesenswert?

>>Software SPI will auch erst geschrieben werden ;-]

hier ist die Softspi!

ist für eine 74HC165 an drei Pins des PORTA

#define  DAT165  BIT(3)
#define  SCK165  BIT(5)
#define  RCK165  BIT(6)

DDRA = SCK165 | RCK165;  // Outputs, undefined are inputs

UCHAR read_dipswitch(void){
UCHAR data;

  PORTA &= ~SCK165;  // clk low
  PORTA &= ~RCK165;  // load dip switches in '165
  PORTA |=  RCK165;

  data = 0;    // clear result first

  for(i=0;i<8;i++){  // read 8 bits
    data <<= 1;   // shift left
    PORTA &= ~SCK165;  // clk low
    PORTA |=  SCK165;  // clk high

  if(!(PINA & DAT165))  // Bit invertiert testen
    data |= 1;
    }
  return(data);
}


Reiner

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.