PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Atmega über ISP mit PC Verbinden



xrzr
21.02.2015, 16:28
Guten Tag,
ich bin recht neu in dem Gebiet in der Programmierung von µC und hoffe ihr könnt mir weiter Helfen.

Ich habe einen Atmega 1284P auf einem eigenem Board und habe einen Diamex-AVR ISP/USB adapter. Diesen habe ich wie in der Anleitung angeschlossen und den Treiber installiert.
Soweit alles i.O.

Habe jetzt in AVR Studio 4.18 ein kleines Testprogramm geschrieben. Binn dann auf: Tool --> ProgrammAVR --> und Connect und habe dort STK500 und COM3 ausgewählt. (In der Hardware bekomm ich den auch auf COM3 angezeigt.)
Wenn ich jetzt auf Connect Klicke und dann auf Fuses im nächsten Fesnter, um meine Fuses entsprechend nach engbedded.com/fusecalc einzustellen, kommt folgende Meldung: siehe Anhang.

Was mache ich falsch??

021aet04
21.02.2015, 18:16
Das bedeutet das du keine Verbindung hat. Du musst den Controller einstellen und die passende ist Frequenz. Die muss kleiner als 1/4 der Taktfrequenz sein. Ein neuer Controller hat 1MHz (interner 8MHz RC Oszillator und Teiler von 8 ).

PS: Willkommen im Forum.

MfG Hannes

oberallgeier
21.02.2015, 18:21
Willkommen im Forum!


... Atmega 1284P ...AVR ISP/USB adapter ... kleines Testprogramm ... STK500 und COM3 ausgewählt ... Was mache ich falsch??VERMUTLICH hast Du den Takt zum Flashen zu hoch eingestellt. Die Meldung gibt ja als Vorschlag für korrekte Funktion an "...ISP programming frequency ... below 1/4 of the clock frequency ...". Bitte sieh mal nach wie schnell der Quarz auf Deinem Board ist (wenn einer drauf ist) und im ISP-Fenster sieh unter Fuses nach, ob vielleicht ein Häkchen bei CKDIV8 ist.

Neue controller werden üblicherweise auf internen Takt von 8 MHz eingestellt MIT Fuse CHDIV8 on (d.h. mit Häkchen dort). Dann läuft der Controller auf 1/8 der eigentlichen Frequenz - also mit 1 MHz. Du kommst mit 1/4tel davon "in den Controller" zum Flashen rein. Das wäre dann etwas in der Gegend unter 250 kHz. Also - bei der Einstellung [Target Settings] ISP Frequency auf z.B. 115 kHz stellen. Dann sollte es gehen. (Aber ich garantiere für nix *ggg*).

xrzr
21.02.2015, 18:40
Bei Target Setting war die ISP-Freq. auf 57,6kHz. habe jetzt mal 115,2kHz und 4kHz probiert. Beides geht nicht.

CKDIV8 ist kein Häkchen.

Bei HW-Settings - Clock Generator wenn ich auf Read Klicke ist auf 0

Worauf muss "SUT_CKSEL" stehen?

- - - Aktualisiert - - -

Ist hier vlt. was falsch eingestellt? (2.Anhang)

Ich habe einen Quarz angeschlossen mit 14,7456MHz

Bumbum
22.02.2015, 08:17
Hallo xrzr,

was du in den Fuses auswählst ist erst mal egal, da du sie ohne funktionierende ISP-Verbindung gar nicht übertragen kannst. Wichtig für dich ist erst mal nur der erste Reiter (Main). Dort musst du den passenden Controller und die passende ISP-Frequenz wählen. Diese darf wie bereits mehrfach erwähnt maximal 1/4 deiner Taktfrequenz der Schaltung sein. Wenn gar nichts geht würde ich mich von der langsamsten hoch arbeiten. (Welcher Takt im Atmel genutzt wird hängt von den Fuses ab, die du aber ohne ISP erst mal nicht auslesen kannst. Da kann auch ein angeschlossener Quarz egal sein, wenn er in den Fuses deaktiviert ist)

Im ersten Reiter gibt es auch eine Taste um die Signatur-Bytes auslesen kannst. Dies muss zunächst funktionieren, bevor du die anderen Reiter überhaupt benutzten kannst. Zeig' doch mal einen Screenshot des ersten Reiters (Main) nach dem Versuch die Signature-Bytes auszulesen.

Ich kenne deinen Programmer nicht, aber stellt dieser eine Versorgungsspannung für das Target bereit? Oder wie wird deine Schaltung mit Strom versorgt?

Viele Grüße
Andreas

oberallgeier
22.02.2015, 08:44
... STK500 und COM3 ... Bei HW-Settings - Clock Generator wenn ich auf Read Klicke ist auf 0 ... Worauf muss "SUT_CKSEL" stehen? ...COM3 klingt gut. Vermutlich bekommst Du gar keine Verbindung. Schau mal hier nach:

......29874

Hier solltest Du die richtige Signatur lesen können, WENN Du eine Verbindung zum Controller bekommst. Evtl. die ISP-Frequenz runtersetzen. Zusätzlich, davor oder danach, prüf doch mal Deine Boardspannung (vor allem, wenn nix geht) hier:

......29875

bei [HW Settings] [Voltages] auf [Read]. Hier müsste ein Wert irgendwo über 2..3 V angezeigt werden. Dein Read an dieser Stelle könnte möglicherweise garnicht funktionieren - wie Andreas schreibt ist möglicherweise kein, oder zu wenig, Spannung auf Deinem Controller. Wenn Dein Controller irgendwann richtig eingestellt ist und mit dem Quarztakt arbeiten soll, könnten die folgenden Einstellungen sinnvoll sein (ich habe hier ne relativ lange "Hochfahrzeit" eingestellt; mein Quarz tickt mit 20 MHz)

......29876

Dein COM4 musst Du zum Flashen erstmal garnicht parameterisieren, das ist die UART-Schnittstelle (ne TTL-EIA232 ... sozusagen).

Mal sehen wie es weiter geht.

xrzr
22.02.2015, 08:58
READ funktioniert ohne Fehler unter HW-Settings.
29877

Bei Read Signature bekomme ich ebenfalls die Fehlermeldung.

- - - Aktualisiert - - -

Hab jetzt nochmal die Spannung direkt am Controller gemessen.
Zwischen PIN10 und PIN11 sowie zwischen PIN30 und PIN31 liegen 5V an

oberallgeier
22.02.2015, 09:05
READ funktioniert ohne Fehler unter HW-Settings ... Bei Read Signature bekomme ich ebenfalls die Fehlermeldung ...Sieht also spannungsmässig gut aus. Bist Du sicher, dass Dein Controller ein 1284P ist???? Sorry für die dumme Frage. Dann bitte prüfen ob das Kabel vom Programmer zum Controller nicht nen Knacks hat?? (GND und Vcc im Kabel scheint aber wohl richtig zu funktionieren).

xrzr
22.02.2015, 09:09
Die Schaltung hat eine eigene Spannungsversorgung.

Link von dem Adapter:
http://www.diamex.de/dxshop/mediafiles//Sonstiges/ISP-Stick-Anleitung.pdf

- - - Aktualisiert - - -

Kein Thema. Es gibt keine dumme Fragen. Bin halt recht Neu, kann sowas auch möglich sein ;)
Habe den: ATmega1284P-PU 1438

wkrug
22.02.2015, 09:17
Beim ATMEGA 128 sind die ISP Pins nicht auf den üblichen Ports wie MISO, MOSI, SCK sondern auf anderen.
Welche das sind hab ich gerade nicht im Kopf.
Ich denk mal beim MEGA 1284 P könnte das evtl. auch so sein.
Guck doch mal ins Datenblatt, nicht das Du hier ein Problem hast, auch wenn ich das nicht glaube.

Zuerst würde ich in MAIN mal Read Signature machen.
Wenn da falsche Werte oder gar nichts kommt, kannst Du den Controller schon mal nicht ansprechen.
Gründe können sein falsche Verkabelung, Programm Interface geht nicht, Ports der Programm Pins haben eine externe Beschaltung mit ohmschen oder kapazitiven Komponenten. Weiterhin Reset Pin falsch Beschaltet, falsche Programmierfrequenz, verfuste Takteinstellung des Controllers, ISP in den Fuses deaktiviert. Recht viel mehr fällt mir dann als Fehlerquelle schon nicht mehr ein. Hak die Punkte mal nacheinander ab, dann sollte es eigentlich funzen.

xrzr
22.02.2015, 09:34
Im Anhang einmal aus meinem Schaltplan und einmal aus dem DB von dem 1284P2987929880

Habe auch vom Stecker mal bis hin zu dem µC Pin gemessen. Alles so wie es soll.

- - - Aktualisiert - - -

Ich habe jeglich an zwischen dem diamex und dem Controller am PIN 2 spricht von VCC ein 48Ohm Widerstand in Reihe.

Die anderen Pins habe ich bis an den µC Pin durchgemessen.

Am Reset Pin liegen 5V an, der ist über 10kOhm an VCC


Was meinst du mit: "verfuste Takteinstellung des Controllers" und " ISP in den Fuses deaktiviert"
Bei der ISP frequenz habe ich bereits alles ausprobiert.

oberallgeier
22.02.2015, 09:36
Beim ATMEGA 128 sind die ISP Pins nicht auf den üblichen Ports ... Ich denk mal beim MEGA 1284 P könnte das evtl. auch so sein ...Hmmm, meine Antwort mag jetzt doof sein. Der mega128 ist nach meiner Atmel-Parameterliste nur in TQFP 64 lieferbar, den m1284 gibts in TQFP 44. Damit behaupte ich nicht, dass das der Grund für ne unterschiedliche ISP-Belegung sei. Eher finde ich, dass der m1284 ein übliches Pinout hat, der ist nämlich ein aufgebohrter mega16 - und in dieser Hinsicht auch abwärtskompatibel.


Bei Target Setting war die ISP-Freq. auf 57,6kHz. habe jetzt mal 115,2kHz und 4kHz probiert. Beides geht nicht ...Spannung drauf und diese Analyse macht mir jetzt mehr Kopfschmerzen. Zumal die letzte Grafik von ner ISP-Frequenz 1,2 kHz spricht.

Vorschlag - so eher ne Art Verzweiflungsbasis : ISP-Kabel am Programmer !! abziehen und die Leitungen zum Controller durchklingeln. Datenblatt beachten (Nachtrag - sorry, hab gerade gelesen, dass das schon durchgemessen wurde):
http://www.atmel.com/images/Atmel-8272-8-bit-AVR-microcontroller-ATmega164A_PA-324A_PA-644A_PA-1284_P_datasheet.pdf

(http://www.atmel.com/images/Atmel-8272-8-bit-AVR-microcontroller-ATmega164A_PA-324A_PA-644A_PA-1284_P_datasheet.pdf)

xrzr
22.02.2015, 09:42
Habe nochmal mit Multimeter bis hoch an den Controller Pin gemessen. Alles so wie es sein soll.

oberallgeier
22.02.2015, 09:56
Bitte zeig mal nen Schaltplan von Deinem Board ?

xrzr
22.02.2015, 10:26
Vielen dank noch einmal an oberallgeier.

Ich hatte ein problem mit dem Reset Pin der war nicht richtig verbunden. jetzt Funktioniert alles.

wkrug
22.02.2015, 10:48
verfuste Takteinstellung des Controllers" und " ISP (http://www.rn-wissen.de/index.php/AVR-ISP_Programmierkabel) in den Fuses deaktiviert
Wenn z.B. der Takt per Fuse auf extern oder Crystal umgeschaltet wurde, aber dieser Takt nicht anliegt.

ISP kann bei den Fuses dektiviert werden, dann ist ISP nicht mehr möglich.
Oder man verfused sich den Reset Pin, auch dann ist ISP nicht mehr möglich.

021aet04
22.02.2015, 10:49
Schön zu hören das es jetzt funktioniert. Viel Erfolg weiterhin und möglichst wenig Fehler.
Einen Fehler den ich beim Programmieren hatte sind Kapazitäten. Ich hatte Kondensatoren an den Anschlüssen (zur Entstörung). Da konnte ich auch nicht programmieren. Du musst immer denken welche Auswirkungen sich durch deine Schaltung ergeben.

MfG Hannes