Forum: Mikrocontroller und Digitale Elektronik Beschreibung zu PEN beim MEGA128 ist ja wohl das letzte!


von Martin Messmann (Gast)


Lesenswert?

Hallo Leute!

Echt ärgerlich! Meine neue Platine mit m Mega128 hat wieder rumgezickt.
Ich war schon wieder kurz vorm aufgeben.. Man konnte immer nur 1 Mal auf
den Chip zugreifen und dann gab der 128 nur noch Mist aus. (ff ff ff und
so weiter) Zugriff bekam man wieder, wenn man das Board aus und wieder
ein schaltete. Um Fehler beim Programmer auszuschließen habe ich
inzwischen auch ein STK500/501. Da ließen sich die Controller (auch
wieder ausgelötete) problemlos mehrfach programmieren.

Nun.. ich habe ratlos noch ein wenig herumgesucht.. jetzt funktioniert
es eben auch auf meinem Board.. und aus einem sehr simpelen Grund..:

Wie interpretiert ihr folgendes aus dem ATMega128 Datenblatt?? :
(Datenblattquelle: Atmel Homepage)

Seite 7

"PEN is a programming enable pin for the SPI Serial Programming mode,
and is internally pulled high . By holding this pin low during a
Power-on Reset, the device will enter the SPI Serial Programming mode.
PEN has no function during normal operation."

Na? Logisch oder? :

PEN Pin low=GND=Serial Programming mode!

ätsch *reingelegt* Falsch!!
Es muß heißen:

PEN Pin high=NC or Pullup=Serial Programming mode!!

Deshalb mein Vorschlag an Atmel:
PEN is a programming enable pin for the SPI Serial Programming mode,
and is internally pulled high . By leaving this pin unconnected or
pulled up to VCC during a Power-on Reset, the device will enter the SPI
Serial Programming mode. By forcing PEN low during a Power-on Reset the
device won´t enter SPI Serial Programming mode. Ok..ok.. sorry.. maybe
just only one time after Power-on Resat...!

Oder was meint ihr?

Grr.. ich glaub meine alte Platine hat doch funktioniert..
wahrscheinlich hätte ich PEN nur niederohmig auf <b>VCC</b> ziehen
müssen.. :(

Grüße,
Martin

von Andi L. (lindla)


Lesenswert?

Also ich habe den PEN noch nie gebraucht, einfach frei lassen.
Allerdings habe ich es nur mit den Mega64 ausprobiert.

von Feadi (Gast)


Lesenswert?

Hi,

in doc2467.pdf, Seite 2, dort ist über PEN eine linie, IMHO heisst das
"active low", demnach würde schon stimmen was im Datenblatt steht.

"Internally pulled high" ist dann deaktiviert by default.

Der Chip hat IMHO zwei Methoden in den ISP-Mode zu gelangen:
1. gehe in Reset-state, sende programming enable magic über ISP
2. PEN# -> low, gehe in ISP-Mode

PEN# ist doch nur da, damit man den Mega128 auch bei zerfressenen Fuses
in den ISP-Mode bringen kann, oder?

Gruß, Feadi

von Martin Messmann (Gast)


Lesenswert?

Ja, deshalb hattest Du wohl auch nie Probleme damit.. Hält man sich
jedoch ans Datenblatt gehts schief.. Nach meiner Auffassung wird da
eben gesagt: Für den SPI Mode muß PEN auf GND liegen. ...

Naja, so ein Glück nun scheint es zu funzen! Wäre hier sonst echt noch
zu ner Katastrophe geworden..

Grüße,
Martin

von Roland P. (pram)


Lesenswert?

Kann es sein dass sich der Controller genau so verhält wie bei mir:
http://www.mikrocontroller.net/forum/read-1-287894.html#new

- Das Programm das drauf ist läuft noch
- Du kannst den Controller beliebig oft auslesen -> Programm läuft nach
Auslesen weiter
- Nach einem Schreibbefehl ist der Controller tot, nichtmal Reset geht,
nur ein Abdrehen der Betriebsspannung hilft. (Logischerweise liest der
Programmer dann 0xFF)
- eventuell erhöhte Stromaufnahme des Controllers (ca 40 mA)

Ich habe letzte Woche ca 8 Controller geschrottet :-/ welche sich dann
genau so verhielten.
Ich führe das Problem auf eine mangelhafte Spannungsversorgung zurück
(an der ich selber schuld bin).

Da der Controller bei einem Reset quasi keinen Strom aufnimmt und ich
einen gewissen Strom in die Schutzdioden rein fließen lasse, wurde die
Versorgungsspannung vermutlich auf über 5V angehoben (da der Regler das
nicht ausregeln kann). Ich habe parallel zu den 5V jetzt einen 1K
Widerstand, so dass immer ein gewisser Ruhestrom durch den Regler
fließt, seitdem ist mir keiner mehr kaputt gegangen.

Gruß
Roland

von johnny.m (Gast)


Lesenswert?

Wäre auch meine Vermutung gewesen. Bei der normalen SPI-Programmierung
kann man den Pin einfach offen lassen und wie bei anderen µCs auch über
den Reset gehen. Meine Schaltung (allerdings auch mit Mega64)
funktioniert problemlos bei offenem PEN.

Gruß

Johnny

von johnny.m (Gast)


Lesenswert?

...Die 'Vermutung' bezog sich auf das Posting von Feadi...

von Feadi (Gast)


Lesenswert?

@Martin Messmann:
>Nach meiner Auffassung wird da eben
> gesagt: Für den SPI Mode muß PEN auf GND liegen.

Genau so verstehe ich das auch -> full ack.
PEN ist active low, man kommt in den ISP-Mode wenn PEN low ist.
Und damit man im normalen Betrieb nicht in den ISP-Modus gelangt, hat
PEN ein pullup, was den ISP-Modus deaktiviert.

Gruß, Feadi

von SuperUser (Gast)


Lesenswert?

Die Datenblatt Beschreibung ist o.k.

Solange PN=high, kommst du normalerweise nicht in den serial
programming mode. Um das zu erreichen must du eine spezielle Reset
Sequenz durchlaufen. Das macht dein SPI-Programmer für dich. Wenn er
das nicht macht, startet der AVR vom Flash.

Ist wärend reset PN=low bist du sofort im serial programming mode. Du
kannst also deine SW nicht vom Flash starten. Du brauchst aber auch
keine spezielle reset sequenz mehr um den das SPI programming zu
starten.

-> In der Regel lässt man PN unbeschaltet (internal pull-up) oder
klemmt es an VCC.

von Feadi (Gast)


Lesenswert?

> -> In der Regel lässt man PN unbeschaltet (internal pull-up) oder
klemmt es an VCC.

Ich würde es offen lassen. Weil: Stell Dir vor, die Fuses sind im
Eimer, und PEN ist mit VCC verbunden... Dann musst Du erstmal
Leiterbahnen killen. Wenn PEN aber offen ist, oder mit einem 10k auf
VCC geht, kannst du z.b. mit einer Stecknadel den Pin auf GND ziehen,
und dann die Fuses neu Flashen.

Gruß, Feadi

von Martin Messmann (Gast)


Lesenswert?

Nagut! Ich denke dann verstehe ich jetzt, was für ein Problem ich
hatte.
Ich habe leider nirgens gelesen (habe mir natürlich nicht die
kompletten 389 Seiten durchgelesen), das es diese 2 verschiedene Modis
gibt. Ich dachte der PEN wäre dazu da die Programmierschnittstelle
aktivieren und  deaktivieren zu können (Schutzfunktion oä.).

Dann ist mir auch klar, warum man den Mega nur ein Mal programmieren
kann, wenn man PEN auf Masse zieht.

Controller Ein->PEN=GND + Daten->SPM (einmaliges Programmieren da der
µC im Modus bleibt auch bei einem Reset)
Controller Ein->PEN=high->µC normaler
Betrieb->Reset-Sequens->SPM->Reset->normaler Betrieb

So ungefähr richtig?

Ich habe PEN über 1K an VCC.

Grüße,
Martin

von Feadi (Gast)


Lesenswert?

@Martin:
 Das hört sich richtig an ;)
 Und PEN mit 1k auf VCC ist völlig okay.

Gruß, Feadi

von Martin Messmann (Gast)


Lesenswert?

@Roland:
Danke für den hinweiß mit der Stromversorgung. Falls noch ein mal
Probleme auftreten, werde ich das berücksichtigen! Ich bin mir ja immer
noch nicht sicher, ob der Controller mich nicht nur vera****** will. Mal
sehen ob er morgen immernoch brav seinen Dienst verrichtet.. Nach den
letzten Wochen trau ich dem Mega128 alles zu.. ;) Ich weiß jetzt sogar,
wie der von innen aussieht.. Seitenschneider sei dank! ;)

@Feadi
Ich hatte das mit dem Widerstand etwas falsch verstanden.. aber nun
gut, beides (Widerstand nach Vcc und Lötzinnbrücke zu GND) ist auf
meiner Platine ja schon vorgesehen - nur hat sich der Sinn etwas
verändert..

Wie Du in Rolands Posting schreibst magst Du eher zickende Atmels?!
Leider hat sich beim letzten auslöten auf der alten Platine gerade ein
Pad verabschiedet sonst würde ich Dir das Teil gerne schicken.. Dann
könntest Du damit mal ein wenig herumspielen (und Dir möglicherweise
die Zähne ausbeißen..;)

Nuja..jedenfalls vielen danke euch! Wäre das mal schon etwas früher
geklärt gewesen..

von Feadi (Gast)


Lesenswert?

@Martin Messmann:

Ein Pad ist kein Problem, das kann ich mit 0.2mm Kupferlackdraht
fixen.
Aber den zickenden AVR müsstest Du mitschicken.

Gruß, Feadi

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.