Zusammenhang SPI - ISP

Gast #1378114
Lesenswert?

Hallo,

ich habe einen ATmega64 und betreibe einen spi-bus damit.

Zu testzwecken hab ich im SPI-Control-Register CPOL auf high gesetzt. 
Seit dem kann ich jedoch mit ISP keine verbindung herstellen.

Kann das an diesem Register liegen? Wenn ja, gibt es dazu eine Lösung?


Viele Grüße
Alex
#1378150
Lesenswert?

Wenn die Pins imBetrieb Ausgänge sin eigentlich nicht. Eher wenn der Pin 
selbst im Betrieb ein Eingang ist, also draussen ein Ausgang sitzt. Wenn 
beispielsweise ein MAXe an der UART sitzt, die wenn ich mich richtig 
erinnere zwei der ISP-Pins beherbergt. Was m.E. eine eher seltsame Wahl 
von Atmel darsellt, glücklichrweise ist das bei anderen Modellen besser 
gelöst.
Gast #1379030
Lesenswert?

Hallo Magnus,

bin mir nicht sicher was du meinst, jedoch sind alle benannten Netze 
verbunden. D.h. auch /Reset am ISP mit /Reset am Controller.

Hardwarebedrahtung muss stimmen weil ich bereits programmiert hab.

alex
#1379042
Lesenswert?

Hallo,

Alex schrieb:
> Hallo Magnus,
>
> bin mir nicht sicher was du meinst, jedoch sind alle benannten Netze
> verbunden. D.h. auch /Reset am ISP mit /Reset am Controller.

Er meinte nur: es gibt 2 Varianten der ISP-Beschaltung, einmal die mit 
6Pin (2x3) und einmal die mit 10Pin (2x5). Üblicherweise benutzt man 
eine der beiden, weil dann ein einfaches 1:1 Kabel zum ISP-Programmer 
passt.
Die benutzen die üblicherweise ja auch.

Deine Beschaltung passt nicht zum 10Pin-Standard, das kannst Du zwar 
machen, es irritiert aber eben etwas, weil Du da ja dann ein 
Spezialkabel gebaut haben mußt.

Gruß aus Berlin
Michael
Gast #1379045
Lesenswert?

Hallo A.K.

Bei dem Programmieradapter handelt es sich um eine Eigenentwicklung 
meiner Hochschule. Und Funktioniert. Pinkompatibilität zu JTAG ist 
absicht.

Nochmal: Das Programmieren des Controllers hat funktioniert, bis ich das 
Bit CPOL im SPI-CONTROL-REGISTER auf high gesetzt hab.
#1379059
Lesenswert?

Dann wirst du wohl mit den Entwicklern des ISP-Programmers deiner 
Hochschule klären müssen, warum der Pegel von SCK ausserhalb vom 
Reset-Zustand diesen Programmer derart aus der Fassung bringt.

Denn dieser Programmer funktioniert - wie du selber festgestellt hast - 
eben nur wenn SCK ausserhalb vom Reset-Zustand einen bestimmten Pegel 
aufweist. CPOL dreht diesen Pegel um und der Programmer streicht die 
Segel.

Mit einem normalen Programmer sollte es funktionieren, vom Pinout mal 
abgesehen.
#1379080
Lesenswert?

PS: Setzt du CPOL sofort nach dem Start und die Fuses sind vielleicht 
auch so eingestellt, dass trotz Quarz nicht erst 16ms gewartet sondern 
sofort losgelegt wird?

Kannst mal ein bischen Wartezeit ganz vorne in main() einbauen, noch 
bevor du CPOL setzt, 1sec oder so, vielleicht hilft das.

Alternativ kannst du CPOL nur während des SPI-Transfers setzen. Dann 
sollte auch kein Konflikt auftreten.
Gast #1379349
Lesenswert?

Hallo A.K.,

in den Fuses sind ich als start-up-time 64ms eingestellt und CPOL wird 
erst nach ca. 10 Zeilen initialisierung gesetzt. Ein delay kann ich im 
Moment nicht einbauen da ich ja nicht darauf zugreifen kann.

zu Thomas:

darf ich mal auf den Artikel verweisen: 
http://www.mikrocontroller.net/articles/AVR_Checkliste#Besonderheiten_bei_ATmega128_und_seinen_Derivaten_im_64-Pin-Geh.C3.A4use 
Besonderheiten bei TQFP64 Gehäusen PDI PDO usw.

Frohe Botschaft an diesem Abend ist wohl das ich morgen ein JTAG-ICE 
bekomme und dann sehen wir mal weiter.

viele grüße

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