Mein C-Programm und die SPI Kommunikation

Gast #852031
Lesenswert?

Guten Morgen zusammen,

Ich hab ein Problem mit dem verständnis wieso mein Prog. nicht 
funktioniert.
ich benutze einen ATMega 32 und möchte die SPI Schnittstelle einfach ma 
ausprobieren.
zuerst setze ich die MOSI und SCK Pins auf Ausgang das steht in der 
port.h.
Und zwar soll das Programm einfach permanent auf der SPI senden damit 
ich es mir einfach mit einem oszi messen kann.

Also zuerst setzte ich imd SPCR SPI Enable,Master und die spi clock 
rate.

Dann schiebe ich das Datum was ich gesendet haben möchte ich das SPI 
Data Register. und so wie ich das verstanden hab soll er dann 
automatisch mit dem Senden beginnen.

und in der While schleife wird dann das SPI interrupt Flag auf 1 
Überprüft denn wenn die Datenübertragung fertig ist springt er auf 1.

Aber warum funktioniert es nicht ? Ich seh noch nicht ma den Clock.
Einfach Led steuerungen funktionieren also ich kann sagen das der µC 
ohne probleme Programmiert wird.

int main (void)
{

  #include "Port.h"  //Port Zuweisungen
  while(1)
  {

  SPCR  =  (1<<SPE) | (1<<MSTR) | (1<<SPR0);


  SPDR  =  0b10101010;

  while(!(SPSR & (1<<SPIF)));


}}
Gast #852039
Lesenswert?

ahhh ich hab mein Problem gefunden und Zwar war der /SS auf eingang 
gesetzt aber hatte keinen Pullup also war er warscheinlich low und wenn 
der /SS auf LOW ist dann schaltet sich die Master SPI ab und er sendet 
nciht .... -.-.


So Jetzt sehe ich schonmal den Clock auf der Leitung und auf der Mosi 
Leitung ist das Signal aber nur mit einer Stärke von 50mV . mhm mal 
gucken woran das liegt hat da einer ne Ahnung ?
Gast #852066
Lesenswert?

Nein auf der ClockLeitung sehe ich auch die 0V und +5V immer hin und her 
springen - das Clock signal halt.

und am MOSI sehe Ich auf einem 50 Hertz Signal mein "eigenes" Signal von 
der MOSI leitung mit nur ca 100mV Stärke ?!


woran liegt denn das ?
Gast #852071
Lesenswert?

>und am MOSI sehe Ich auf einem 50 Hertz Signal mein "eigenes" Signal von
>der MOSI leitung mit nur ca 100mV Stärke ?!

Da hältst du wahrscheinlich nicht richtig dran.

Das klingt nach kapazitiver Einstreuung...
Gast #852089
Lesenswert?

Mit nem PullUp hab ich es auch schon versucht einfach 100k gegen 5 Volt 
aber dann ist das signal halt nur um 5 Volt geshiftet. Also keine 
Besserung. Und ich drück schon fest genuch drauf ^^ wenn ich fester 
drück dann gehts durch den sockel :P.

Dat versteh ich net ... Muss man vieleicht noch in irgend einem Register 
ein bit setzen oder so ?

Wenn ich doch das Clock signal sehe dann bin ich doch auf jedenfall im 
Master modus vom µC oder ?
Gast #852119
Lesenswert?

Die Masse vom oszi ist auch an der schaltung dran denn ich seh auch das 
Clcok signal perfekt so wie es sein soll. Auch der Preskaler den ich 
fuer den CLK eingestellt hab funktioniert.

Ich hab auch schon einen Ganz frisch gekauften MEga 32 reingesteckt aber 
genau das gleiche problem. oder stimmt was mit der software nicht ? 
koennte da der fehler liegen ?
Gast #852149
Lesenswert?

Jo crap grad geändert und nu gehts AAHHHHHHHH ^^.

Ich hab auch vorher immer PICs Programmiert und die haben es so wenn man 
eine 0 im DDR hat dann ist das ein Output und eine 1 ist ein Input - bei 
atmel isset genau anderes rum und beim drüberschauen hab ich das 
natürlich vergessen

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren