ATTINY85 mit internen 8MHz - Fuses (gelöst)

Hallo,

und noch eine Frage. Ich programmiere einen ATTINY85 über einen USBtinyISP mit der Arduino-IED 1.0.1.
Als Basis dienen die ATTINY-Cores (https://github.com/damellis/attiny/zipball/Arduino1)
Das klappt auch soweit sehr gut. Nun bin ich vom Blinkenbeispiel zum Dimmen einer LED übergegangen, bzw. zum Dimmen eines LED-Streifens über einen MOSFET.
Dabei fällt auf, das die LED flackern. Vermutlich ist die PWM-Frequenz zu gering.
Hat man die Tiny-Cores installiert, gibt es den ATTINY85 mit 1 MHz und 8 MHz internem Takt zur Auswahl, zusätzlich noch 20 MHz extern.
Auffällig ist, das das Flackern bei 8 MHz (Einstellung in der IDE für den Programmer) stärker ist als bei 1 MHz.
Ich habe daraufhin mit avrdude die Fuses ausgelesen und mit dein Einträgen in der boards.txt verglichen.
Bei beiden Einstellungen ist lfuse mit 0x62 gesetzt, obwohl es bei 8 MHz 0xe2 sein sollte (laut boards.txt). Da bei 8 MHz aber die CPU-Frequenz auf 8000000L gesetzt ist, laufen die Timer vermutlich auf 1/8 Geschwindigkeit.
Bei der aktuellen Einstellung 0x62 ist CKDIV8 gesetzt und damit wird ja mein Clocksignal nochmal durch 8 geteilt, oder täusche ich mich da?

Setzt die IDE keine Fuses? Ich habe mal die Debugausgaben ausgeben lassen, vielleicht hat ja jemand einen Tip für mich.

avrdude: Version 5.11, compiled on Sep 2 2011 at 18:52:52
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is “/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf”
User configuration file is “/Users/mario/.avrduderc”
User configuration file does not exist or is not a regular file, skipping

Using Port : unknown
Using Programmer : usbtiny
avrdude: usbdev_open(): Found USBtinyISP, bus:device: 002:011-1781-0c9f-ff-00
AVR Part : ATtiny85
Chip Erase delay : 4500 us
PAGEL : P00
BS2 : P00
RESET disposition : possible i/o
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


eeprom 65 6 4 0 no 512 4 0 4000 4500 0xff 0xff
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


flash 65 6 32 0 yes 8192 64 128 4500 4500 0xff 0xff
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


calibration 0 0 0 0 no 2 0 0 0 0 0x00 0x00

Programmer Type : USBtiny
Description : USBtiny simple USB programmer, USBtinyISP - Inexpensive USB AVR Programmer
avrdude: programmer operation not supported

avrdude: Using SCK period of 10 usec
CMD: [ac 53 00 00] [ff fe 53 00]
avrdude: AVR device initialized and ready to accept instructions

Reading | CMD: [30 00 00 00] [00 30 00 1e]
CMD: [30 00 01 00] [00 30 00 93]
################CMD: [30 00 02 00] [00 30 00 0b]
################################## | 100% 0.00s

avrdude: Device signature = 0x1e930b
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
CMD: [a0 01 fc 00] [00 a0 01 ff]
CMD: [a0 01 fd 00] [00 a0 01 ff]
CMD: [a0 01 fe 00] [00 a0 01 ff]
CMD: [a0 01 ff 00] [00 a0 01 ff]
avrdude: erasing chip
CMD: [ac 80 00 00] [00 ac 80 00]
avrdude: Using SCK period of 10 usec
CMD: [ac 53 00 00] [00 ac 53 00]
avrdude: reading input file “/var/folders/9c/6qx1vrws2xb3sp_cm9zpl1xc0000gn/T/build5852274583174374975.tmp/Blink.cpp.hex”
avrdude: writing flash (1044 bytes):

Writing | CMD: [4c 00 00 00] [00 4c 00 00]
###CMD: [4c 00 20 00] [00 4c 00 20]
###CMD: [4c 00 40 00] [93 4c 00 40]
###CMD: [4c 00 60 00] [93 4c 00 60]
###CMD: [4c 00 80 00] [91 4c 00 80]
###CMD: [4c 00 a0 00] [2f 4c 00 a0]
###CMD: [4c 00 c0 00] [1d 4c 00 c0]
###CMD: [4c 00 e0 00] [05 4c 00 e0]
###CMD: [4c 01 00 00] [f0 4c 01 00]
###CMD: [4c 01 20 00] [3f 4c 01 20]
###CMD: [4c 01 40 00] [91 4c 01 40]
###CMD: [4c 01 60 00] [23 4c 01 60]
###CMD: [4c 01 80 00] [91 4c 01 80]
###CMD: [4c 01 a0 00] [7d 4c 01 a0]
###CMD: [4c 01 c0 00] [de 4c 01 c0]
###CMD: [4c 01 e0 00] [1f 4c 01 e0]
####CMD: [4c 02 00 00] [cf 4c 02 00]

| 100% 1.41s

avrdude: 1044 bytes of flash written
avrdude: verifying flash memory against /var/folders/9c/6qx1vrws2xb3sp_cm9zpl1xc0000gn/T/build5852274583174374975.tmp/Blink.cpp.hex:
avrdude: load data flash data from input file /var/folders/9c/6qx1vrws2xb3sp_cm9zpl1xc0000gn/T/build5852274583174374975.tmp/Blink.cpp.hex:
avrdude: input file /var/folders/9c/6qx1vrws2xb3sp_cm9zpl1xc0000gn/T/build5852274583174374975.tmp/Blink.cpp.hex contains 1044 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.75s

avrdude: verifying …
avrdude: 1044 bytes of flash verified

avrdude done. Thank you.

Für einen Tip, wie ich die PWM-Frequenz angepasst bekomme, wäre ich echt dankbar. Leider habe ich kein Oszi zur Verfügung um die PWM-Frequenz messen zu können.

Mario.

Ok, manchmal macht es Sinn alles zu lesen, bevor man anfängt zu basteln. :-) Auf http://hlt.media.mit.edu/?p=1695 gibt es nämlich den passenden Abschnitt zum internen 8 MHz Takt.

Der Trick ist einmal mit der Option "Burn Bootloader" den Bootloader auf den Tiny zu packen, das macht zwar nicht viel Sinn, aber dabei werden die Fuses korrekt gesetzt. Danach dann einfach nochmal den Sketch hochladen und gut ist.