Forum: Mikrocontroller und Digitale Elektronik ATMega128 vs ATMega128 - Erklärung gesucht


von Robert H. (kee4)


Lesenswert?

Hallo Mikrocontroller-Forum-Gemeinde,
ich habe gerade "ein Problem" mit der SPI-Programmierung (Flashen) von 
ATMega128 Controllern bei dem ich etwas nicht verstehe.

Die Geschichte dazu:
Ich baue gerade ein Gerät (rein aus Hobby und Neugierde), dessen 
Hardware rund um einen ATMega128AU basiert. Die Originalschaltung hat 
zum Flashen des Controllers einen 10-poligen JTAG-Stecker. Gleich vorweg 
mit dieser Schnittstelle kann ich über meinen Atmel-ICE im JTAG-Mode den 
Controller ansprechen (ID lesen, Löschen, Programmieren; Verify ...)

TEIL A)
Aus Interesse - und falls ich mal keinen JTAG-Programmer zur Verfügung 
habe - habe ich die Schaltung erweitert und um eine SPI-Schnittstelle 
ergänzt. Allerdings am Port B (also PB1 bis PB3). Und jetzt bitte nicht 
gleich drauf los wettern ;-), mittlerweile habe ich festgestellt, dass 
das eigentlich die falschen Pins sind.
Auf jeden Fall kann ich hier mit meinem MK2-Clone den Controller nicht 
ansprechen. Ich muss jetzt das Layout ändern bzw. provisorisch anpassen, 
dass ich MOSI und MISO an Port E (PE0 und PE1) abnehmen kann.
Anmerkung: Nach dem Umfädeln der SPI-Schnittstelle auf (PE0,PE1, PB1) 
kann ich den Controller ansprechen. Sogar ohne, dass ich vorher /PEN auf 
GND ziehe. (*)
Hier ist ein ATMega128 AU mit Datecode 1051D verbaut!

TEIL B)
Ich habe eine andere ältere Schaltung, die auch mal in Serie gebaut 
wurde: Diese beruht auch auf einem ATMega128AU und hat eine 
SPI-Programmierschnittstelle. Diese sitz laut Schaltplan und auch laut 
Layout an Port B und zwar MISO an Pin 13 (PB3), MOSI an Pin 12 (PB2) und 
SCK an Pin 11 (PB1).
Das seltsame ist:
Ich kann den Controller auf dieser Platine mit meinem MK2 im SPI-Mode 
ansprechen (ID auslesen, Löschen ...). Sogar ohne, dass ich vorher /PEN 
auf GND ziehe. (*)
Hier ist ein ATMega128 AU mit Datecode 0616 verbaut

HINWEIS:
Ich habe auch schon beide Beschaltungen verglichen und kann da keinen 
Unterschied finden. Außer in der Verwendung der Ports,
- Vcc liegt jeweils an Pin 21 und 52
- GND liegt jeweils an Pin 22 und 53
- AVCC (Pin64) ist mit Vcc verbunden
- AGND (Pin63) ist mit GND verbunden
- ARef (Pin62) ist mit einem C abgeblockt
- In beiden Schaltunen ist der Pin "/PEN" (Pin 1) über einen Pull Up mit 
Vcc verbunden.
- Beide haben an Reset (Pin 20) ein RC-Glied (100k/100n)
- beide haben ein Quarz (Pin 23/24) mit jeweils 22p gegen GND (aber wg. 
Fuses während ISP noch nicht aktiv)

HAT DA JEMAND EIN ERKLÄRUNG DAFÜR?
Gibt es vom ATMega128A zwei verschiedene Ausführungen ("Steppings") 
bezüglich der SPI Schnittstellte?
Im www habe ich eine Info bezüglich des ATMEGA128 und dessen Nachfolger 
des ATMEGA128A gefunden. Aber da sind nur bestimmte elektrische 
Parameter unterschiedlich.

Vielen Dank für eure Hilfe
Gruß Robert
- KEE4 -

DATASHEET: ATMEGA128 (2467X–AVR–06/11) Page 301
-----------------------------------------------
To program and verify the ATmega128 in the SPI Serial Programming mode, 
the following
sequence is recommended (See four byte instruction formats in Table 
145):
(*) 1. Power-up sequence:
Apply power between V CC and GND while RESET and SCK are set to “0”. In 
some sys-
tems, the programmer can not guarantee that SCK is held low during 
power-up. In this
case, RESET must be given a positive pulse of at least two CPU clock 
cycles duration
after SCK has been set to “0”.
As an alternative to using the RESET signal, PEN can be held low during 
Power-on
Reset while SCK is set to “0”. In this case, only the PEN value at 
Power-on Reset is
important. If the programmer cannot guarantee that SCK is held low 
during power-up, the
PEN method cannot be used. The device must be powered down in order to 
commence
normal operation when using this method.

: Bearbeitet durch User
von Axel R. (axlr)


Lesenswert?

Vielleicht diese M103 Kompatibilitäts-Fuse-Bit gesetzt?

von Robert H. (kee4)


Lesenswert?

Ich habe den Fehler gefunden:
Es gabe zwei Schaltpläne mit dem selben Namen (ohne Versionierung)
in einem war die ISP-Schnittstelle falsch beelgt (ISP an MISO/MOSI) im 
anderen war die ISP-Schittstelle richtig belegt (ISP an TxD und Rxd).

Ich haber mit dem falschen Schaltplan gearbeitet, hatte aber die 
Hardware aus der richtigen Schaltung (auch ohne Versionierung)

Daher lies sich er Controller auf dieser Schaltung flashen, weil ja
MOSI/MISO mit RXT/TXD verbunden waren.

Habe leider mehrere Abende gebraucht um das rauszufinden. ...

- aeskulap.fdb -

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.