SPI Master

Gast #136022
Lesenswert?
• ▲
▼
Hallo

Langsam versteh ich die Welt nicht mehr!
Ich habe 2 ATMega16 per SPI verbunden. (software von mc-project.de, an
den ATMega16 angepasst)
Der Master sendet jede 4 sec ein Code an den Slave der dann eine LED
an/ausschält.
Beim ersten durchlauf wird eine '0' gesendet, wodurch die LED an
geht. Klappt auch Prima!
Nur beim 2. durch lauf wo er eine '1' sendet (zumindest soll) geht
nix mehr.Egal, was ich beim 2. Suchlauf sende geht nicht.
Ich hab mal ein Oszi dran gemacht und mal am SCK / SS(Slave) geschaut,
was rauskommt:

1.Durchgang:
SCK -> Sieht man ganz deutlich den Takt.
SS -> Geht kurtz auf LOW und dann wieder auf High

2.Durchgang:
SCK -> Geht einfach auf High (und macht nix sonst)
SS  -> geht einfach auf LOW (und macht nix mehr)
so bin ich darauf gekommen, dass er er in der schleife zum testen ob
alles gesendet wurde hängen bleibt. Hab die Stelle im code markiert.

Hoffentlich kann mir jemand helfen !!!!
Bin für jede hilfe dankbar !!!!
MfG Sf2
Angehängte Dateien:
Gast #136023
Lesenswert?
• ▲
▼
Guten Morgen,

dein Problem war ganz schon verzwickt, hab ich habs jetzt
rausgefunden.
Das Problem ist das du PB0 als SS hernimmst. Dadurch machst du
indirekt PB4 (SS) als Input. Da du aber im Mastermode bist
passiert nun folgendes. Der Controller erkennt aktivität am SPI und
löscht alle Register und wird zum Slave, hat was mit Mulitmaster zu
tun. Lies dir mal im Datenblatt den Absatz "SS Pin Functionality" ->
"Master Mode" durch.
Wenn du jetzt einfach zu deiner master_init() noch
DDRB |= (1 << PB0);
dazuschreibst müsste es klappen.

Wünsch noch einen schönen  Sonntag
Christian
Gast #136025
Lesenswert?
• ▲
▼
Auu mann ich bin soooooo dumm !
Eigentlich hätt ich wissen müssen das ich SS als eingang definieren
muss. Ich bin immer fest davon ausgegangen, der wäre ein Ausgang.

@ElMachel:
Vielen Vielen Dank !!!!! Und ein Schönes Jahr !

MfG Sf2

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