Forum: Mikrocontroller und Digitale Elektronik AtTiny13 Clock auf 128kHz und Division = 0/1


von Alexander G. (Gast)


Lesenswert?

Hallo,

ich habe um Strom zu sparen versucht die Fequenz meines Tinys auf 128kHz 
zu stellen und und den Division Factor auf 1 gestellt.

Seit her funktioniert die Kommunikation mit meinem USBASP nicht mehr.
Ich bekomme immer nur Chip = 00000

Hab ich es vermurkst?

Grüße
Alex

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Nö, du darfst dann nur nicht schneller als 32 kHz ISP Frequenz ran (max 
1/4 clock).

von Alexander G. (Gast)


Lesenswert?

Tim T. schrieb:
> Nö, du darfst dann nur nicht schneller als 32 kHz ISP Frequenz ran (max
> 1/4 clock).

Hab ich versucht - funktioniert leier nur nicht.
Muss es genau 1/4 der tatsächlichen Tiny13 Frequenz sein?
oder ist jeder Wert keliner als 1/4 CPU Clock in Ordnung?

Grüße
Alexander

von c-hater (Gast)


Lesenswert?

Alexander G. schrieb:

> Muss es genau 1/4 der tatsächlichen Tiny13 Frequenz sein?

Nein, es muss WENIGER sein. Exakt 1/4 ist ein Grenzfall, bei dem es 
theoretisch noch gehen würde, aber praktisch nicht gehen wird, weil es 
keine Synchronisation der beiden Takte gibt.

Es sollte immer ein deutlicher Sicherheitsabstand zum Grenzfall 
eingehalten werden, mindestens in der Größenordnung der Ungenauigkeit 
des Taktes. Da die interne 128kHz-Taktquelle nicht gerade sehr genau 
ist, sollte der Sicherheitsabstand also gerade in dieser Situation 
relativ groß sein. Grob über den Daumen sollte man also so ab 28kHz 
abwärts auf der sicheren Seite sein.

Wenn's trotzdem nicht geht, wurde sehr wahrscheinlich auf die falsche 
Taktquelle gefused oder ein Taktteiler >1:1 ist aktiv.

von Peter R. (Gast)


Lesenswert?

Im Datenblatt des atmega 13 stehen bei den errata (S.166) "device may 
lock for further programming" einige Fälle. Als Abhilfe: vor dem 
Programmieren die genannten Einstellungen ändern.

von Georg M. (g_m)


Angehängte Dateien:

Lesenswert?

Ich habe es mit dem ATtiny13A probiert, und jetzt ist der Chip nicht 
mehr erreichbar, obwohl der ISP-Takt schon ganz unten ist (<2kHz).

von Jacko (Gast)


Lesenswert?

Wenn es mit 128 kHZ / 4 = 32 kHz
und mit 32 kHz / 8 = 4 kHz (CKDIV8...)
und noch mal die Hälfte davon (< 2 kHz) nicht geht,
haste wohl noch mehr verfused...

Das Lehrgeld (ca. 1 EU) musste wohl zahlen und beim nächsten
mal programmierst du dem Tiny13 mit der vermuteten (!)
Systemfrequenz erst mal einen Sekunden-Takt an irgendeinem
Port-Pin, um Irrtümer vor dem "kaputt-fusen" zu erkennen.

Das nennt man defensives Vorgehen.
Kostet 2% mehr Zeit und einige 100% Kaufpreis...

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Georg M. schrieb:
> Ich habe es mit dem ATtiny13A probiert, und jetzt ist der Chip nicht
> mehr erreichbar, obwohl der ISP-Takt schon ganz unten ist (<2kHz).

Dann eben mit HVSP zurücksetzen: 
http://homepage.hispeed.ch/peterfleury/avr-hvsp-fuse-restore.html

von Rudi D. (rulixa)


Lesenswert?

>
> Dann eben mit HVSP zurücksetzen:
> http://homepage.hispeed.ch/peterfleury/avr-hvsp-fuse-restore.html

Hat vielleicht jemand eine .hex file für ATmega8 und 16 MHz Takt?
In AVRDude kann ich ja dann B3000 setzen.

Mein ATtiny13 läuft mit 2 kHz clock, weil ich per SW den Teiler nicht 
auf 1 gesetzt habe sondern auf 64 stehen ließ. Muss wohl das Programm 
von p.Feury nehmen, da es AVRStudio 7 nicht auf 400 Hz clock bringt.

: Bearbeitet durch User
von Alexander S. (alesi)


Angehängte Dateien:

Lesenswert?

Rudi D. schrieb:
> Hat vielleicht jemand eine .hex file für ATmega8 und 16 MHz Takt?

Hallo,

ich habe http://homepage.hispeed.ch/peterfleury/HvspFuseRestore.zip
von http://homepage.hispeed.ch/peterfleury/avr-hvsp-fuse-restore.html
heruntergeladen und im Makefile
1
MCU = atmega8
2
F_CPU = 16000000
gesetzt.
1
Compiling: HvspFuseRestore.c
2
avr-gcc -c -mmcu=atmega8 -DF_CPU=16000000UL   -I.  -std=gnu99 -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=HvspFuseRestore.lst -save-temps -MD -MP -MF .dep/HvspFuseRestore.o.d HvspFuseRestore.c -o HvspFuseRestore.o
3
Linking: HvspFuseRestore.elf
4
avr-gcc -mmcu=atmega8 -Wl,-Map=HvspFuseRestore.map,--cref    -lm HvspFuseRestore.o --output HvspFuseRestore.elf 
5
Creating load file for Flash: HvspFuseRestore.hex
6
avr-objcopy -O ihex -R .eeprom HvspFuseRestore.elf HvspFuseRestore.hex
7
Creating load file for EEPROM: HvspFuseRestore.eep
8
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex HvspFuseRestore.elf HvspFuseRestore.eep 
9
avr-objcopy: --change-section-lma .eeprom=0x0000000000000000 never used
10
Creating Extended Listing: HvspFuseRestore.lss
11
avr-objdump -h -S HvspFuseRestore.elf > HvspFuseRestore.lss
12
Creating Symbol Table: HvspFuseRestore.sym
13
avr-nm -n HvspFuseRestore.elf > HvspFuseRestore.sym
14
AVR Memory Usage
15
----------------
16
Device: atmega8
17
18
Program:     664 bytes (8.1% Full)
19
(.text + .data + .bootloader)
20
21
Data:          0 bytes (0.0% Full)
22
(.data + .bss + .noinit)

Im Anhang die .hex Datei. Die habe ich selber nicht getestet.

von rulixs (Gast)


Lesenswert?

Alexander S. schrieb:
> Device: atmega8
>
> Program:     664 bytes (8.1% Full)
> (.text + .data + .bootloader)
>
> Data:          0 bytes (0.0% Full)
> (.data + .bss + .noinit)
>
> Im Anhang die .hex Datei. Die habe ich selber nicht getestet.

Das ist aber sehr freundlich. In der Zwischenzeit, da der t13 ja 
ansprechbar wäre, sollte es mit avrdude  auch gehen.
https://logbuch.dmaertens.de/elektronik-hardware/microcontroller/fuse-eines-microcontrollers-mit-avrdude-auslesen-und-beschreiben.
Obwohl ich es nicht verstehe, da keine Taktrate im command vorkommt.

Oder mit avrdude das korrigierte Programm eben ganz langsam in den tiny 
bringen.

Werde berichten, wie deine Großzügigkeit es auch tut. Respekt!

von Malte _. (malte) Benutzerseite


Lesenswert?

Falls Interesse besteht:
Für den HV Modus hatte ich übrigens auch mal einen kompletten Programmer 
erstellt. Inklusive .hex für einen Mega8:
Beitrag "Kleiner ISP programmieradapter + serielles HV prog"

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Georg M. schrieb:
> Atmel_Studio_Error.png

Ich kann im Programmierdialog des AVRISP MkII auch jede beliebige 
Taktrate einstellen. Dazu muss man den Wert dann statt mit dem 
Schieberegler händisch in die Hertzanzeige eintippen. Kannste ja mal 
probieren.

von Rulixa (Gast)


Lesenswert?

Matthias S. schrieb:
> Georg M. schrieb:
> Atmel_Studio_Error.png
>
> Ich kann im Programmierdialog des AVRISP MkII auch jede beliebige
> Taktrate einstellen. Dazu muss man den Wert dann statt mit dem
> Schieberegler händisch in die Hertzanzeige eintippen. Kannste ja mal
> probieren.

Oh, das wusste ich nicht. Danke für den Ti p.

von Rudi D. (rulixa)


Lesenswert?

>> Georg M. schrieb:
>> Atmel_Studio_Error.png
>>
>> Ich kann im Programmierdialog des AVRISP MkII auch jede beliebige
>> Taktrate einstellen.
>
> Oh, das wusste ich nicht. Danke für den Tip.

Der Wert wird, was ich auch eingebe, auf 51 Hz gesetzt.Und es gibt 
Fehlermeldungen.
Leider...

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Rudi D. schrieb:
> Der Wert wird, was ich auch eingebe, auf 51 Hz gesetzt

Gut, das muss aber in jedem Fall reichen, solange die Oszillator Fuses 
nicht auf externem Oszillator stehen. Ob Freund Fischl (USBASP) 
allerdings diese Settings vom STK500 auch unterstützt, kann ich dir 
nicht sagen.
Wenn das der Fall ist, speist du an XTAL1 einen Generator ein und hast 
die freie Wahl für die Taktfrequenz. Wenn du allerdings an der RST_DIS 
Fuse rumgespielt hast, gehts nicht ohne HV Programmer.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Ich hatte das gleiche Problem mal mit einem Programmieradapter von 
In-Circuit, die waren damals so nett, mir kurzfristig die Firmware 
anzupassen und Ersatz zu schicken.

von Rudi D. (rulixa)


Lesenswert?

>> Der Wert wird, was ich auch eingebe, auf 51 Hz gesetzt
>
> Gut, das muss aber in jedem Fall reichen, solange die Oszillator Fuses
> nicht auf externem Oszillator stehen.

Hab den DIAMEX Adapter. Low fuse ist 7B =128 kHz aber, siehe vorher, per 
SW /64 geteilt also 2 kHz Clock.
Das Programm wird auch brav ausgeführt, eben sehr langsam.

Warum Studio7 400 Hz nicht akzeptiert ist merkwürdig. ist 1/5 von 2 kHz.

Werde als nächsten Step avrdude nehmen.
An sich alles sportlich zu sehen, da der t13 ja wirklich den Aufwand 
kaum rechtfertigt.

Im Hintergrund gibts auch noch die Hilfe von Alexander S.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Rudi D. schrieb:
> An sich alles sportlich zu sehen, da der t13 ja wirklich den Aufwand
> kaum rechtfertigt.

Das sehe ich auch so. Erst wenn du innerhalb eines Jahres 5 Stück 
verfust hast, wird es peinlich :-)

von rulixa (Gast)


Lesenswert?

an sich ist er ja nicht verfused, nur die clock ist durch Unachtsamkeit 
eben 2 kHz

von Rudi D. (rulixa)


Lesenswert?

rulixa schrieb:
> an sich ist er ja nicht verfused, nur die clock ist durch Unachtsamkeit
> eben 2 kHz

Ich hab ja erst so um 2003 mit µC's begonnen mit Franzis Lernpaket 
Mikrocontroller als Honorar.
Habe also die PC-Baudrate auf 2400 Bd gesetzt und mit dem LPmikros.exe 
den t13 initialisiert. Das Programm setzt ihn auf den Ausflieferzustand. 
All o.k.

Mit avrdude bin ich nicht zurechtgekommen mit dem Programmierdevice.
Ich danke für die vielen Vorschläge und Hilfen.

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.