Forum: Mikrocontroller und Digitale Elektronik SPI Master


von Sf2 (Gast)


Angehängte Dateien:

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

von ElMachel (Gast)


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

von ElMachel (Gast)


Lesenswert?

ach sorry,

zu deinem Code musst du noch
DDRB |= ( 1 << PB4); /*SS als Output definieren, dann passiert nichts
*/
hinzufügen

von Sf2 (Gast)


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

von Sf2 (Gast)


Lesenswert?

Macht es eigentlich was wenn ich den ISP am SPI angesteckt lasse??

von Dirk (Gast)


Lesenswert?

Hi,

es kommt darauf an welchen ISP du hast. Falls du einem mit 74hc2xx hast
dann sind die Ausgaenge Tristate und stoeren nicht.

Mfg
Dirk

von Sf2 (Gast)


Lesenswert?

Ja, hab mir einen mit 74hc244 gebastelt.
macht es auch dem 2. avr der angeschlossen ist auch nix aus ? dann
müsst ich nur noch die reset stecker wechseln um dein anderen zu
programmieren.

MfG

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.