AVR programmiert AVR, mega16 gibt keine antwort auf identify

#404562
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
Angehängte Dateien:
#404564
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...
#404566
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
Gast #404567
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
Angehängte Dateien:
#404568
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"
Gast #404569
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

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