USBASP-Programmierfrequenz im Low-Speed-Modus?

The SphereX

Neues Mitglied
03. Jan. 2014
27
0
0
Sprachen
Hi Leute !!!

Ich möchte einen ATTiny45 gern mit einem 32 kHz Uhrenquarz betreiben. Ein so konfigurierter AVR darf ja dann maximal mit 8 kHz programmiert werden, richtig? So, und genau dabei erwarte ich Probleme mit meinem USBASP-Programmer. Erst kürzlich wollte ich nämlich einen ATTiny13 zu Testzwecken mal mit den internen 128 kHz takten. Entsprechend habe ich zunächst den Frequenzteiler deaktiviert (CKDIV8), und dann CKSEL auf den 128 kHz Oszillator eingestellt. Das Ganze hat auch wunderbar funktioniert, nur das der Tiny danach nicht mehr ansprechbar war :(. AvrDude z. B. brachte dann die bekannte Fehlermeldung: cannot set sck period ... target doesn't answer. Dabei war während der gesamten Aktion der Low-Speed-Jumper des Programmers gesetzt. Bei höher getakteten AVRs gab's übrigens bis jetzt keinerlei Probleme mit dem Programmieren. Der niedrigst getaktete lief dabei mit 600 kHz.

Ich wüßte deshalb jetzt gern, mit welcher Frequenz ein USBASP-Programmer normalerweise im Low-Speed-Modus arbeitet. An anderer Stelle habe ich mal etwas von 8 kHz gelesen. Das kann jedoch zumindest für meinen Programmer nicht zutreffen, ansonsten hätte er den 128 kHz getakteten Tiny ja noch ansprechen können (128 kHz : 4 = 32 kHz). Ich befürchte dementsprechend, daß ich mir auch meinen ATTiny45 unbrauchbar machen werde, wenn ich die Fuses erst mal für den Gebrauch des Uhrenquarzes gesetzt habe.

Liege ich da mit meiner Befürchtung richtig und muß folglich auf einen 4 MHz Quarz statt des Uhrenquarzes zurückgreifen?

Grüße,
The SphereX
 
Hi,

leider kenn ich mich mit dem Ding nicht aus. Ich verwende einen AVRISPmk2 und habe zusätzlich noch nen STK500 und nen Parallelport-Progger.
Ich befürchte dementsprechend, daß ich mir auch meinen ATTiny45 unbrauchbar machen werde, wenn ich die Fuses erst mal für den Gebrauch des Uhrenquarzes gesetzt habe.
also unbrauchbar wird er dadurch nicht. Da der Quarz ja extern ist kannst du ihn problemlos mit nem Quarzoszillator übersteuern für den Fall das es nicht klappt. Besorg dir doch einfach mal nen 1MHz Quarzoszillator. Dann hast du immer etwas Sicherheitr in der Hinterhand.

Gruß
Dino
 
Hmm... ich kann Dir leider nur folgendes dazu sagen:

beim AVRISP MKII kann ich die ISP Clock Frequenz zwischen 2,152kHz und 8MHz (in 10 Schritten oder so) einstellen nach der 1/4tel-Regel müßte das Target also mit mindestens 8,8kHz laufen.

Zu Deinem Progger und dessen möglichen Frequenzen kann ich nichts sagen.
Wie stehts mit der Möglichkeit, dem Controller zumindest fürs programmieren 'ne höhere Frequenz aufzuzwingen (also den mit dem externen 32kHz-Quarz - der sollte dann ja da auch auf ein Taktsignal (Quarzoszi oder externer Takt) am Clockeingang reagieren).
Such mal im FAQ-Bereich, Dino hat da definitiv einiges zum Thema wiederbeleben auf diesem Wege zu geschrieben...

Edit: Ok, hat sich währenddessen selbst gemeldet...
 
Also erst mal danke für Eure Infos. Ich dachte eigentlich, daß die USBASP-Programmer (Original Thomas Fischl oder asiatische Clone wie in meinem Fall) doch etwas weiter verbreitet sind bzw. häufiger genutzt werden. Naja, die sind dann wohl doch mehr etwas für die zeitweiligen Hobby-Bastler (wie mich), als für die Profis ;). Aber bis jetzt hat das Drei-Euro-Teil mir halt gute Dienste geleistet, nur das ich damit eben offensichtlich keine niedriggetakteten AVRs programmieren kann.

Leider läßt sich was die Programmierfrequenz angeht auch nur der besagte Low-Speed-Jumper setzen, wobei ich eben nicht weiß, welche Frequenz dann damit genau eingestellt wird.

" ... Da der Quarz ja extern ist kannst du ihn problemlos mit nem Quarzoszillator übersteuern ... "

Heißt das also, ich brauche einfach nur einen Quarzoszillator temporär (zusätzlich zum 32 kHz Quarz) an XTAL1 anschließen, und der würde dann den Quarztakt so überlagern, daß der Tiny wieder höher taktet, trotz der für "Low-Frequency Crystal Oscillator" gesetzten Fuses (CKSEL) :confused:? Ich bin eigentlich davon ausgegangen, das der Tiny dann auch einen entsprechend niedrigfrequenten Takt erwartet?

Grüße,
The SphereX
 
Hi,

" ... Da der Quarz ja extern ist kannst du ihn problemlos mit nem Quarzoszillator übersteuern ... "

Heißt das also, ich brauche einfach nur einen Quarzoszillator temporär (zusätzlich zum 32 kHz Quarz) an XTAL1 anschließen, und der würde dann den Quarztakt so überlagern, daß der Tiny wieder höher taktet, trotz der für "Low-Frequency Crystal Oscillator" gesetzten Fuses (CKSEL) :confused:? Ich bin eigentlich davon ausgegangen, das der Tiny dann auch einen entsprechend niedrigfrequenten Takt erwartet?
Durch die Oszillatoreinstellung stelllst du die Taktquelle ein. Außerdem stellst du die Verstärkung und Bürdekapazitäten für den Quarz ein da dort für verschiedene Frequenzen evtl verschiedene Werte benötigt werden. Du stellst aber nicht die eigentliche Frequenz ein weil die nur vom extern angeschlossenen Quarz bestimmt wird. Du kannst also problemlos einen externen Takt von nem Quarzoszillator auf XTAL1 aufzwingen.

Gruß
Dino
 
Aha, das ist ja sehr interessant. Wieder was dazugelernt. Demnach könnte ich meine Schaltung mit dem Uhrenquarz also theoretisch fertig zusammenbauen (löten), und wenn ich dann nachträglich am Programmcode des Tiny noch was ändern muß, einfach den Quarzoszillator an XTAL1 anschließen. Der wäre dann für den Moment wieder ausreichend hoch getaktet, so daß mein Programmer ihn beschreiben kann. Danach den Quarzoszillator wieder abklemmen, und der Tiny läuft wieder mit 32 kHz.

Habe ich das so richtig verstanden?

Grüße,
The SphereX
 
Ja.
Die einzige Einschränkung ist aber, daß der Controller überhaupt erst einen Takt an diesem Pin erwartet. Wenn der Pin (wie das bei vielen kleineren Controllern möglich) als I/O oder so verwendet wird, und ein interner Taktgeber gewählt ist, geht das natürlich nicht. Im schlimmsten Fall arbeitet der externe Taktgeber dann sogar gegen den Pin-Ausgangstreiber...
 
" ... Wenn der Pin ... als I/O oder so verwendet wird, und ein interner Taktgeber gewählt ist ... "

Das dürfte ja dann bei mir sowieso nicht der Fall sein, wenn ich den Uhrenquarz angeschlossen und die Fuses korrekt gesetzt habe.

Dann besorge ich mir jetzt also einen Quarzoszillator. Muß es unbedingt 1 MHz sein? Ich nehme mal an, daß höhere Werte auch funktionieren?

Grüße,
The SphereX
 
1MHz würde ich (gefühlt) als Minimum wählen. Das Maximum ist glaub ich bei allen AVR Chips mit 20MHz gleich.

Ich würde entweder 7,3728MHz oder 11,0592MHz nehmen. Da bist du gut im Mittelfeld, und mit diesem Wert kommst du auch exakt auf die Baudraten von RS232, solltest du es mal brauchen. Vielleicht willst du den ja später mal in einer anderen Schaltung verbauen :)


Edit weil vergessen: Willkommen im Forum :)
 
...Maximum ist glaub ich bei allen AVR Chips mit 20MHz gleich....
Nein, gibt auch viele, bei denen bei 16MHz Ende ist. Inwiefern die sich übertakten lassen, weiß ich nicht...
8MHz (oder meinetwegen auch irgedwas krummes) ist sicher ganz ok...
Wenn kein Oszillator zur Hand ist, kann man ja auch schnell mal 'n anderen Controller dazu programmieren (auch, wenn der dann beleidigt ist).
Oder 'n NE555 entsprechend beschalten, oder 'n Multivibrator basteln, oder... aber das hat Dino ja alles in besagtem FAQ-Topic beschrieben...
 
Alles klar! Dann weiß ich jetzt erst mal, was ich zu tun habe. DANKE noch mal an Euch.

Grüße,
The SphereX
 
Nein, gibt auch viele, bei denen bei 16MHz Ende ist.
Huch, ist mir noch nicht untergekommen, aber gut zu wissen :)

Wenn kein Oszillator zur Hand ist, kann man ja auch schnell mal 'n anderen Controller dazu programmieren (auch, wenn der dann beleidigt ist).
:D

Aber das eigentliche Problem hier kenn ich. Ich hatte auch mal die glorreiche Idee die interne 32KHz Clock zu aktivieren, mit dem /8 Teiler, damit man mehr sieht. Das mehr sehen hat geklappt, ich hatte den Fehler sogar gefunden und beseitigt, aber dann war Bascom am zicken und wollte den Chip nicht mehr erkennen (weil zu langsam getaktet). Einzige mögliche Lösung war HVSP (war ja auf interne Clock gestellt).
 
Hi,

denkt denn dran das manche Atmels in der Low-Power-Version nur 8MHz verkraften oder bei 3,3V zB noch weniger.

Ich würde also eher bis maximal 4MHz mit dem Quarzoszillator gehen. Wenn der nur mit 5V läuft sollte das auch kein Problem sein. Ich habe es zwar noch nicht ausprobiert aber mit nem niederohmigen Spannungsteiler (Widerstände bei 330-820 Ohm) sollte man dann den Ausgang auch auf 3,3V bekommen und der Strom sollte trotzdem noch für genug Zwang am XTAL1 reichen. Könnte ja mal jemand ausprobieren :p :rolleyes:

Gruß
Dino
 
µC auch mit Quarzoszillator nicht mehr ansprechbar

Hi Leute !!!

Der Fall "X" ist jetzt leider eingetreten, d. h. ich habe meine ATTiny45-Schaltung mit einem Uhrenquarz erfolgreich zum Laufen gebracht, möchte nun allerdings nachträglich den Code anpassen. Wie gesagt, mein USBASP-Programmer kann keine niedrigstgetakteten AVRs ansprechen. Demnach stehe ich jetzt natürlich vor dem erwarteten Problem, daß ich auch keinen Kontakt mehr zu meinem 32 kHz getakteten Tiny bekomme. Also erst mal alles wie erwartet.

Entsprechend dem Hinweis von dino03 habe ich mir nun einen 7 MHz Quarzoszillator gekauft und entsprechend der Vorgabe in die Schaltung eingebaut. In froher Hoffnung, den Tiny jetzt wieder beschreiben zu können, habe ich zunächst den üblichen Kommunikationstest mittels AVRDude gemacht:

avrdude -c usbasp -p t45

Tja, aber leider ... Pustekuchen. Es erscheint dieselbe Fehlermeldung wie auch ohne den Quarzoszillator :(:

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: programm enable: target doesn't answer. 1


Scheint folglich irgendwie nicht zu funktionieren mit dem Übersteuern des Uhrenquarzes. Kann ich demnach jetzt meinen nächsten Tiny zu Grabe tragen und muß künftig meinen Code erst mit einem anderen Takt bis zur finalen Version programmieren, bevor ich ihn ein letztes Mal in den Tiny schreibe und danach die Fuses auf "Low-Frequency Crystal Oscillator" setze? Oder was mache ich momentan falsch mit dem Quarzoszillator?

Grüße,
The SphereX
 
Du hast den Crystaloszillator an den korrekten Pin mitangeschlossen (CLKI)?
Außerdem natürlich auch Vcc und Gnd?
Kannst Du den Ausgang (und damit das ganze Netz) auf die 7MHz testen? (mit'nem LA oder so)
(7MHz - sowas gibts?)
Versorgungsspannung ist 5V? oder Du verwendest nicht die V-Version des Controllers?
Läßt sich aus der bisherigen Version ableiten, mit welcher Frequenz der Tiny jetzt effektiv läuft?

Wie sind denn nun die Fuses gewesen?
Mal versucht, statt des Uhrenquarzes 'nen schnelleren Quarz einzusetzen (1MHz oder 4MHz oder 8MHz)?

'n Fall für die Tonne ist nicht der Tiny, sondern höchstens der Programmer (bzw dessen Firmware):p.
Man kann so'n Controller auch ohne Computer, ohne Entwicklungsumgebung und ohne Programmer programmieren. Zwei simple Taster (und etwas Hardware-Entprellung) reichen da aus - ok, und viel Zeit.
War meiner Meinung nach irgendwo mal 'n Projekt, wo einer das mit'nem Tiny13 gemacht hatte. Hab ich irgendwo bei Burkhardt Kainka gefunden, denk ich...

Edit: gefunden
 
" ... Du hast den Crystaloszillator an den korrekten Pin mitangeschlossen (CLKI)? ... "

JA

" ... Außerdem natürlich auch Vcc und Gnd? ... "

LOGISCH

" ... Kannst Du den Ausgang (und damit das ganze Netz) auf die 7MHz testen? ... "

Naja zumindest habe ich mal einen jungfräulichen Tiny45 genommen und mit dem 7 MHz Quarzoszillator (gibt's tatsächlich ;)) getestet, um auszuschließen, daß dieser evtl. sogar defekt ist. Aber alles in Ordnung. Der funktioniert also ganz hervorragend.

" ... Versorgungsspannung ist 5V? oder Du verwendest nicht die V-Version des Controllers? ... "

Ich habe die "normalen" Tinys (2,7 V - 5 V), wobei ich verblüfft feststellen mußte, daß der Quarzoszillator sogar bei 3,3 V noch funzt.

" ... Läßt sich aus der bisherigen Version ableiten, mit welcher Frequenz der Tiny jetzt effektiv läuft? ... "

Mit 32,768 kHz! Und wie gesagt, mit dem Uhrenquarz dran läuft mein Programm auch anstandslos. Nur wollte ich eben noch einige Modifikationen daran vornehmen.

" ... Wie sind denn nun die Fuses gewesen? ... "

> Ext. Low-Freq. Crystal; Start-Up Time PWRDWN/RESET: 32K CK/14 CK + 64 ms
> Clock Divider: OFF

" ... Mal versucht, statt des Uhrenquarzes 'nen schnelleren Quarz einzusetzen (1MHz oder 4MHz oder 8MHz)? ... "

Ja, und zwar mit einem 4 MHz Quarz. Funktioniert leider auch nicht!

" ... 'n Fall für die Tonne ist nicht der Tiny ... "

Schon klar. Aber ohne entsprechenden Programmer ist der jetzt für mich genauso nutzlos, als wäre er defekt.

" ... Man kann so'n Controller auch ohne Computer, ohne Entwicklungsumgebung und ohne Programmer programmieren. ... "

!!! :fie: HARDCORE :fie: !!!

Kann es vielleicht doch sein, daß ich mit meiner ursprünglichen Vermutung richtig lag, und diese Wiederbelebung mittels externer Taktquelle in meinem speziellen Fall einfach nicht funktioniert? Mir kommt es so vor, als ob der Tiny nach den obengenannten Fuses-Einstellungen ganz einfach auf einen "Low-Frequency Crystal Oscillator" Takt "besteht", wenn ich das als Laie mal so formulieren darf. Sonst bräuchte man die Fuses ja überhaupt nicht erst setzen, wenn man dann sowieso jegliche Taktquelle anschließen kann. Korrigiert mich bitte, wenn ich da auf dem Holzweg bin!

Grüße,
The SphereX
 
Vielleicht ist ja doch die interne 32KHz Clock aktiviert worden statt die externe. Ich weiß nicht ob das mit dem Oszillator denn was bringt.
Nur zur Klarstellung: Ich meine jetzt nicht dass du einen Fehler gemacht hast. Wir haben hier auch schon Bugs im Atmel Studio Simulator und in den Include Dateien gefunden. Wer weiß...

Wegen avrdude hatte ich mal nachgeschaut und etwas über eine -i (Wert) Option gelesen. Dummerweise mal soll die gehen, mal soll die unbekannt sein (neuere Version?) womit man den ausbremsen kann, zumindest bei manchen Programmern. Vielleicht ein letzter Anker vor der Hardcore Variante mit HVSP.
 
Hi,

also nach dem Blockschaltbild sollte es möglich sein.
Tiny45-Osc.png

Hast du die Fuses wirklich auf externen Quarz eingestellt?
Wenn man den internen Oszillator und die PLL verwendet,
dann wird es natürlich nicht funktionieren.

Gruß
Dino
 
" ... Hast du die Fuses wirklich auf externen Quarz eingestellt? ... "

Ganz sicher! Die Schaltung funktioniert ja auch einwandfrei. Und klemme ich den Uhrenquarz ab, läuft nichts mehr, der Tiny startet also nicht. Uhrenquarz wieder dran, und das Teil läuft wieder.

Die Fuses sind also DEFINITIV richtig gesetzt und der Quarzoszillator funktioniert auch problemlos, wie bereits erwähnt. Es kann also folglich nur noch so sein, daß ein einmal auf "Low-Frequency Crystal Oscillator" eingestellter ATTiny (zumindest aus der ATTinyX5 Reihe) mit einem anderen externen Takt als eben einem niedrigfrequenten nicht betrieben werden kann, bevor man nicht die Fuses wieder entsprechend ändert. Anders kann ich mir das nicht erklären.

Schade, denn ich hatte mich eigentlich darauf verlassen, daß das Ganze so klappt :confused:.

Grüße,
The SphereX
 
Fazit !!!

So, ich hab's jetzt aufgegeben mit dem Quarzoszillator. Es funktioniert halt einfach nicht :(. Stattdessen werde ich mir noch einen zweiten USBASP-Programmer bestellen, der dann evtl. sogar bereits eine aktuellere Firmware besitzt, welche eine Anpassung der Schreibgeschwindigkeit per Software erlaubt (AVRDude: -B). Ansonsten würde ich diesen nutzen, um bei meinem jetzigen Programmer die Firmware auf den neuesten Stand zu bringen. Dann sollte es entsprechend auf jeden Fall funktionieren mit den niedriger getakteten AVRs (< 400 kHz).

Vielleicht ist die Erkenntnis aus diesem Thread an entsprechender Stelle (z. B. FAQ) sogar auch eine Erwähnung wert?

Ein auf die Taktung durch einen externen Uhrenquarz (32,768 kHz) eingestellter AVR (nachweislich aus der ATTinyX5-Reihe) kann mit keinem anderen externen Takt (Quarzoszillator, höherfrequenter Quarz) betrieben werden, um ihn für einen Programmer, der nicht in der Lage ist, niedrigsgetaktete AVRs anzusprechen, temporär wieder verfügbar zu machen.

Aber trotzdem nochmal DANKE an Euch!


Grüße,
The SphereX
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)