Ich habe mir eine Platine mit einem atmega328p entworfen. Ich habe dafür
eine ICSP Schnittstelle und habe die elektrischen Verbindungen nach dem
Löten geprüft. Der atmega ist fabrikneu und noch nicht programmiert.
Wenn ich nun mit meinem mkII und AtmelStudio daran arbeiten möchte kommt
die Meldung:
> Failed to enter programming mode. ispEnterProgMode: Error status received: Got
0xc0, expected 0x00
Die korrekte Spannung von 3.3V wird angezeigt. Die ISP Fclk ist auf
16,1kHz, weniger als 1/4 von dem internen Osc.
Man findet im Internet viel dazu, hat aber nichts geholfen.
Ist es eigentlich egal, welchen SPI Port des Atmegas man als ISP Port
verwendet? Ich habe den SPI0 verwendet (ich hätte mir darüber vlt vorher
mehr Gedanken machen sollen :D )
brainiac schrieb:> Ich habe mir eine Platine mit einem atmega328p entworfen.
Im Schaltplan ist ein ATMega324PB verwendet.
Also welcher soll es jetzt sein?
Hat mich auch gerade verwirrt. Ich verwende auch tatsächlich einen
atmega324pb. Allerdings steht auf dem Chip selbst lediglich 324p (ohne
B). In der Lieferbescheinigung steht ebenfalls, dass es ein 324pb sein
sollte. Wird das "B" einfach nicht mit aufgelasert?
brainiac schrieb:> Ist es eigentlich egal, welchen SPI Port des Atmegas man als ISP Port> verwendet?
Wo auch immer hast du denn einen zweiten SPI Port gefunden?
Wenn du eine vernüftige Ferndiagnose haben möchtest solltest
du einen kompletten Schalplan sowie einen Aufbau zeigen.
Beim ISP Connector wird als Fehlerquelle gerne mal eine
spiegelverkehrte Pinbelegung angewendet. Übliche Darstellung
ist die Ansicht von der Bauteilseite auch wenn man auf der
anderen Seite löten muss.
Dumpf Backe schrieb:> Wo auch immer hast du denn einen zweiten SPI Port gefunden?>> Wenn du eine vernüftige Ferndiagnose haben möchtest solltest> du einen kompletten Schalplan sowie einen Aufbau zeigen.>> Beim ISP Connector wird als Fehlerquelle gerne mal eine> spiegelverkehrte Pinbelegung angewendet. Übliche Darstellung> ist die Ansicht von der Bauteilseite auch wenn man auf der> anderen Seite löten muss.
An PD6, PD7, PE2, PE3 ist noch ein weiterer SPI Port.
Ich habe mal die erste Seite des Schaltplans und das pcb layout
angehängt, sowie ein Bild vom Gerät. Der Stift deckt nur eine für das
Bild zu helle LED ab. Der rote Kreis am ISP-Header markiert Pin 1.
brainiac schrieb:> Ist es eigentlich egal, welchen SPI Port des Atmegas man als ISP Port> verwendet?
Ja, denn SPI hat mit ISP direkt erstmal NICHTS zu tun. Auch wenn aus
Spargründen wohl bei vielen Devices zumindest ein Teil der Gatter eines
SPI oder USI auch für ISP verwendet werden und deshalb auch dieselben
Pins für die beiden Funktionalitäten verwendet werden. Merke: "bei
vielen" != "bei allen".
Welche Pins tatsächlich für ISP zu verwenden sind, steht im DB,
typischerweise in einem Abschnitt mit dem Namen "serial programming"
oder "serial downloading". So auch beim Atmega324PB...
Dein Schaltplan macht es allerdings richtig, die verwendeten Pins sind
die richtigen für den Mega324PB und auch das Pinout der ISP-Buchse ist
korrekt.
Wenn die Funktionsfähigkeit des Programmers mit einem anderen Target
bereits nachgewiesen ist, bleiben eigentlich nur noch wenige mögliche
Gründe über, warum es nicht funktioniert.
Am wahrscheinlichsten sind wohl zwei Sachen:
1) Zinnbrücken
2) Der Programmer wird mit 5V betrieben, obwohl das Target nur eine
3.3V-Versorgung hat und enthält keine Level-Shifter.
brainiac schrieb:> Hat mich auch gerade verwirrt. Ich verwende auch tatsächlich einen> atmega324pb. Allerdings steht auf dem Chip selbst lediglich 324p (ohne> B). In der Lieferbescheinigung steht ebenfalls, dass es ein 324pb sein> sollte. Wird das "B" einfach nicht mit aufgelasert?
Es gibt den P, den PA und den PB-Typ.
P und PA sind kompatibel (unterscheiden sich soweit ich mich erinnere,
nur in der Strukturgrösse).
Der PB-Typ ist anders, hat sogar eine andere Pinbelegung und ist somit
nicht austauschbar. Die Erweiterung muss drauf stehen - wenn da nur P
steht ist es auch nur ein P-Typ, schau noch mal genau hin.
Die 100nF am Reset könnten auch ein Problem sein, irgendwelche
Programmer kamen damit nicht zurecht. Ich baue da i.a. überhaupt keinen
Kondensator ein.
c-hater schrieb:> 2) Der Programmer wird mit 5V betrieben, obwohl das Target nur eine> 3.3V-Versorgung hat und enthält keine Level-Shifter.
Das fällt beim AVRISP MkII weg, den der TE ja benutzt. Der hat
Levelshifter und speist auch das Ziel nicht.
H.Joachim S. schrieb:> Die 100nF am Reset könnten auch ein Problem sein
So isses. Den C sollte man mal auf 22nF oder so verkleinern oder
wirklich weglassen.
lempel schrieb:> Könnte ein 16MHz Quarz zu schnell bei 3,3V Versorgung sein?
Es ist lt. Datenblatt zumindest sehr auf Kante. Ich fummel jetzt nicht
mit dem Lineal am Bildschirm rum, aber 16MHz sind sowohl beim Mega324P
als auch beim Mega324PB erst so ab etwa 4V in der SOA.
brainiac schrieb:> Ich habe mal die erste Seite des Schaltplans und das pcb layout> angehäng
Grundsätzlich würde ich jede Versorgung mit 47-100µF Elko lokal puffern.
Die 100nF tun dies nicht, auch der 4µ7 ist reicht dafür nicht aus.
Ingo L. schrieb:> Grundsätzlich würde ich jede Versorgung mit 47-100µF Elko lokal puffern.
So pauschal kann man das nicht sagen, und nicht alle Spannungsregler
mögen das, zumindest das Regelverhalten leidet.
Und mit dem aktuellen Problem hat es auch nichts zu tun.
Naja, man könnte schon die dünnen Leiterbahnen und den recht grossen
Abstand der Abblock-C zum Kontroller kritisieren.
Mir gefällt dabei gar nicht, das da z.B. 12V auf der Sub-D Buchse
liegen, die TXD und RXD Leitungen aber keinerlei Schutz gegen
Überspannung z.B. durch Längswiderstände haben. Das kann in der rauen
Wirklichkeit ESD oder die 12V bis ins Herz des MC lassen.
Wo endet der Abblock-C C6? Gibts da noch einen GND Layer?
Matthias S. schrieb:> Naja, man könnte schon die dünnen Leiterbahnen und den recht grossen> Abstand der Abblock-C zum Kontroller kritisieren.
Wenn du schon das Layout erwähnst:
Es sieht ja so aus, als wäre da eine GND-Fläche drauf, die man
allerdings mangels "Ratsnest" nicht sieht. Da sollte man mal
kontrollieren, ob diese Fläche genügend zusammenhängend ist. Andernfalls
könnte das zu beliebigem Fehlverhalten führen...
Matthias S. schrieb:> Wo endet der Abblock-C C6? Gibts da noch einen GND Layer?
Ja, geht auf Gnd
Matthias S. schrieb:> lempel schrieb:>> Könnte ein 16MHz Quarz zu schnell bei 3,3V Versorgung sein?>> Es ist lt. Datenblatt zumindest sehr auf Kante. Ich fummel jetzt nicht> mit dem Lineal am Bildschirm rum, aber 16MHz sind sowohl beim Mega324P> als auch beim Mega324PB erst so ab etwa 4V in der SOA.
Da er ja noch nicht programmiert wurde, lief er noch auf dem int osc.
Ich verwende ihn mit clkdiv8, da sollte es wohl kein Problem geben.
c-hater schrieb:> Am wahrscheinlichsten sind wohl zwei Sachen:>> 1) Zinnbrücken> 2) Der Programmer wird mit 5V betrieben, obwohl das Target nur eine> 3.3V-Versorgung hat und enthält keine Level-Shifter.
Ist jetzt peinlich, aber genau das war es. Habe eine Zinnbrücke erzeugt,
die ich unter dem ganzen Flussmittel nicht gesehen habe.
Danke für die Hinweise!