Forum: Mikrocontroller und Digitale Elektronik AVR programmiert AVR, mega16 gibt keine antwort auf identify


von Nik B. (nikbamert)


Angehängte Dateien:

Lesenswert?

Hi,

es war leider etwas schwer einen möglichst aussagekräftigen Titel zu
finden, daher hier nochmal eine Beschreibung meines Problems:
Ich habe einen Atmega16 mit einem atmega168 verbunden (mosi/miso
gekreuzt) und möchte mit dem mega168 den atmega16 programieren.

Vorerst möchte ich nur ein IdentifyDevice durchführen, um zu sehen ob
die Verbindung überhaupt steht.

Ich glaube mein Problem liegt bei folgender Aussage aus dem Datenblatt:
"When writing serial data to the ATmega16, data is lcocked on the
rising edge of SCK. When reading data from the ATmega16, data is
clocked on the falling edge of SCK."

Je nachdem wie ich CPOL und CPHA setze, bekomme ich leider nur immer
entweder 0x00 oder 0xff zurück(ich hab schon alle möglichkeiten mit
CPOL und CPHA ausprobiert...) Die SPI Schnittstelle takte ich mit
128khz, der zu programmierende uC lauft mit 8Mhz, es sollte also genug
langsam sein .. (?)
Meinen Sourcecode habe ich einmal angehängt, ist noch recht
überschaubar, da ich erst eine nichtfunktionierende Identify Funktion
habe...

in der main.c sieht es so aus:
ISP_Start();
ISP_InitProg();
ISP_Identify(&buffer[0]);
ISP_Stop();

Ich wäre echt froh wenn mir jemand ein wenig weiterhelfen könnte damit
ich den Rest des Programms bald einmal funktionierend fertigstellen
kann.

Nik

von tobias (Gast)


Lesenswert?

"mosi = master out slave in" verbinde mosi mit mosi und miso mit
miso.
Es kann immer nur einen Master geben! Ansonstem kenne ich mich nicht
aus
mit SPI, aber soviel weiss ich.

von Nik B. (nikbamert)


Lesenswert?

das erschien mir zwar etwas merkwürdig, aber ich habs dennoch probiert,
nun bekomme ich einfach immer 0x1e,0x94,0x03,0xff zurück .. ich dachte
aber eher an etwas wie "m16" .. oder liege ich da falsch? Hab leider
gerade keinen anderen uC da, um zu testen ob der dieselbe Zeichenfolge
als antwort ausgibt...

von tobias (Gast)


Lesenswert?

Na immerhin besser als gar nichts. Habe leider mein Breadboard nicht da,
sonst würde ich mich auch mal etwas mit spi beschäftigen. Das habe ich
nämlich noch nicht ausprobiert.

von Christian W. (clupus)


Lesenswert?

Hallo,

du musst mal im Datenblatt schaun (bin mir nicht mehr sicher), aber
soweit ich mich noch errinnere, sendet der AVR einen speziellen Code;
das erste Zeichen gibt lediglich eine gültige Antwort an, das zweite
den Hersteller (Atmel) und das dritte den Chip.  Aber das sollte
irgendwo im Datenblatt beim "Programmieren" stehen.

MfG
Christian

von Pit (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Nik,

das was du zurück bekommst IST die ID deines Atmega16. Als Anhang ein
Bildschirmabgriff den ich soeben gemacht habe. Dort kannst du die ID
eines Atmega16 sehen und die lautet : 0x1E 0x94 0x003 das andere ist
die ID meines JTAG MKII.
Ich hoffe das hilft dir weiter.

Pit

von Nik B. (nikbamert)


Lesenswert?

wow danke!!! Ja das hilft mir sogar seeehr weiter :) Ich dachte immer
das sei nur Müll den ich empfangen habe, da Bezichnungen wie "m16"
"m128" doch naheliegen würden, dachte ich zumindest ;-)
Merwürdigerweise antwortet mir der atmega immer mit diesen Signature
Bytes, gleichgültig ob CPOL und CPHA nun 1 oder 0 sind.

Nik

P.S. Im Datenblatt habe ich die Stelle mitlerweile auch gefunden, beim
atmega16 stehts auf seite 264 bei "Signature bytes"

von Peter Z. (Gast)


Lesenswert?

Hallo Nik,

vielleicht noch interessant...Wenn Du das AVR Studio installiert hast
findest Du unter folgendem Pfad sämtliche Einstellungen der Controller
zum proggen. Unter anderem auch die Signature Bytes. Zum anschaun
brauchst einen XML Viewer.

C:\Programme\Atmel\AVR Tools\Partdescriptionfiles

Gruß Peter

von Nik B. (nikbamert)


Lesenswert?

Cool, danke! Schade nur, dass die Files jeweils sehr gross sind,
ansonsten könnte man ja über eine SD Karte und einen kleinen XML parser
auf dem Atmega nachdenken...So, dass das FirmwareUpdate für den
Programmer quasi aus diesen Files bestehen würde... träum :-)

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.