Hallo,
habe einen ATtiny85 mit einem externen Quarz 8 MHz.
Zum Programmieren verwende ich die Arduino IDE zusammen mit einem AVRISP
MK2.
Das funktioniert auch gut, ob mit oder ohne CKDIV8 Fuse, also mit einem
Controller-Takt von 8 MHz oder 1 MHz. Die Fuses ändere ich mit dem Atmel
Studio. Dort ist eine SPI-Geschwindigkeit von 125 kHz eingestellt, wie
auch in der Arduino-IDE (siehe unten).
Um etwas Strom zu sparen, habe ich den Quarz auf 4 MHz geändert, erst
mal ohne die CKDIV8 Fuse, so dass die 4 MHz laufen.
Mit dem Atmel Studio kann ich wie gewohnt auf den Controller zugreifen.
Mit der Arduino IDE funktioniert das aber nicht mehr.
Dort steht
1
SCKperiod:8.00us
also ein SPI-Takt von 125 kHz.
Wenn ich mich richtig erinnere, muss der Takt des Controllers mindestens
4x höher sein, als der SPI-Takt, das wären also 500 kHz. Mit dem Quarz
von 4 MHz liege ich da gut drüber, das ist auch noch viel schneller als
mit dem 8 MHz Quarz und der CKDIV8 Fuse.
Trotzdem klappt das Programmieren nicht, es gibt die Fehlermeldung
Wenn ich wieder den 8 MHz-Quarz verwende, klappt die Programmierung.
Da mit dem Atmel-Studio der Zugriff in jedem Fall funktioniert, darf man
wohl annehmen, dass der 4 MHz-Quarz grundsätzlich funktioniert.
Irgendwie verstehe ich das nicht...
Vielleicht kann mir das jemand erklären. Auch, wie man diese in der
Fehlermeldung angegebene Option "-F" aktiviert, vielleicht klappt es ja
damit?
Besten Dank!
Tim
Teste manuell mit einem Kommando wie diesem:
avrdude -c stk500v2 -P COM6 -B16 -p attiny2313
Probiere kleinere Zahlen bei -B, bis es nicht mehr geht. Dann weißt du,
mit welchem mindest-Wert du die Arduino IDE (boards.txt) konfigurieren
musst.
Ich empfehle dir, weit von der Schwelle (wo es nicht mehr geht) weg zu
bleiben.
Von -F kann ich nur abraten. Du riskierst damit den Chip durch flasch
gesetzte Fuses wegen Kommunikationsfehler dauerhaft zu blockieren.
Danke für diese Antworten!
Ja, den Takt habe ich in der Arduino-IDE entspr. auf 4 MHz angepasst.
Stefan ⛄ F. schrieb:> Teste manuell mit einem Kommando wie diesem:> avrdude -c stk500v2 -P COM6 -B16 -p attiny2313
Wie bzw. wo kann ich das manuell testen? In der Kommandozeile? Werde das
gleich mal versuchen.
In der Arduino-IDE steht im Output, dass der USB-Port verwendet wird
1
UsingPort:usb
2
UsingProgrammer:stk500v2
Mit einer Software zur Anzeige der USB-Eigenschaften (USB Tree View)
wird für den AVRISP MK2 auch kein COM-Port angezeigt.
Dann bleibt wohl nur, direkt in dieser Datei boards.txt
rumzuprobieren...
Nur finde ich dort im Abschnitt
1
attinyx5.name=ATtiny25/45/85
keine Einträge zur Programmiergeschwindigkeit.
Wonach müsste ich denn suchen?
Tim schrieb:> Nur finde ich dort im Abschnittattinyx5.name=ATtiny25/45/85> keine Einträge zur Programmiergeschwindigkeit.
Das nicht, aber in der zugehörigen plattform.txt die AVRdude Parameter.
Auch eine Integration ins Werkzeug->Board Menü sollte so möglich sein
Der Parameter -P COM6 git an, dass er die virtuelle serielle
Schnittstelle COM6 verwenden soll. Die Fehlermeldung "can't open device
USB" sagt mir, dass du keinen seriellen Port angegeben hast. Bei einem
originalen Atmel ISP mkII ist das richtig, der hat wirklich keinen.
Für die Geräte ohne COM Port brauchst du den libusb Treiber. Da du die
Arduino IDE schon erfolgreich verwendet hast, muss der Treiber wohl
bereits installiert sein, denke ich.
Also irgendwo haben hier ein relevantes Informationsdefizit.
EAF schrieb:> in der zugehörigen plattform.txtTim schrieb:> Habe auch in der Datei avrdude.conf geschaut
Schau mal in die richtige Datei platform.txt im Verzeichnes des Cores
den du verwendest.
Hallo,
in meinen Notizen ist vermerkt, dass ich für die Nutzung von avrdude mit
meinem original avrispmkII den USB Treiber mittels Zadig Tool auf
libusb-win32 (v1.2.6.9) umstellen muss. Da die Arduino IDE "auch nur"
avrdude verwendet sollte das nötig sein im Zusammenspiel mit einem ISP
Programmer.
avrdude habe ich in den Systemumgebungsvariablen eingetragen.
Bsp. für Commandozeile:
Manchmal klappt das, dann öfter wieder nicht. Wenn es funktioniert,
werden die Fuses gelesen und angezeigt. Insgesamt sehr wackelig.
Ich habe für die Option -B auch größere und kleinere Werte probiert,
ohne wesentliche Änderung. Ab Werten kleiner ca. 12 funktioniert es dann
gar nicht mehr.
So komme ich irgendwie nicht weiter.
Also habe ich die Fuses nochmal mit dem Atmel Studio ausgelesen,
funktioniert 10x hintereinander.
Bevor ich mich und euch jetzt weiter plage, kann ich das vielleicht
anders machen. Kann ich nicht irgendwie den Bootloader löschen und das
hex-File direkt aus dem Atmel Studio programmieren? Ich finde nur nicht,
wo die Arduino-IDE das hex-File ablegt. Jedenfalls ist es nicht im
Sketch-Ordner.
Hallo,
erscheint mit der richtigen µC ID
avrdude -c avrispmkII -p t85 -v
oder
avrdude -c avrispmkII -p t85 -v -P usb
eine Erfolgsmeldung der Signatureerkennung? Wenn ja ist alles i.O. und
du kannst das .hex File flashen. Das überschreibt den ggf. vorhandenen
Bootloader.
Wenn du folgendes machts
1
In der IDE alle Ausgaben einschalten.
2
Datei > Voreinstellungen >
3
- Ausführliche Ausgabe während > beide Haken rein
4
- Compilerwarnungen > "ALLE"
5
- Zeilennummern und Codefaltung sind auch hilfreich.
6
- Ebenso 'use accessibility features'
7
- Speichern beim Überprüfen und Hochladen würde ich abschalten.
siehst du im IDE Fenster alle Ausgaben inkl. dem Pfad zum erstellten
.hex File in einem Temp Ordner. Das kannste dann per ISP & Atmel Studio
flashen und der Bootloader ist weg. Aber das muss auch mit avrdude auf
der Kommandozeile funktionieren.
Hallo,
das Verhalten des avrdudes ist auf meinem PC wahrscheinlich nicht ganz
so wie es sein sollte:
Mit dem in meinem letzten Beitrag genannten Aufruf funktioniert das
Auslesen der Fuses erst mal, dann plötzlich nicht mehr. Auch nicht, wenn
ich es 20x probiere.
Ändere ich am Aufruf dann den Parameter -B um z.B. +1, (also 41 statt
40), klappt der Zugriff auf den Controller. Dann aber wieder nicht.
An dieser Stelle gebe ich auf, weil das bei mir hier nicht zuverlässig
funktioniert. Jedenfalls nicht mit dem 4 MHz Quarz.
Aber dank der Anleitung von Veit D. habe ich raus bekommen, wo die
Arduino-IDE das hex-File abspeichert, kopiere es in den Projekt-Ordner
und programmiere es mit dem Atmel Studio.
Ist zwar etwas umständlich aber so klappt das wenigstens zuverlässig.
Euch allen vielen Dank für eure Hilfe!
Grüße
Tim