Attiny85 Power Supply

Hallo,

1MHz deshalb, weil standardmäßig die Fuse DIV/8 gesetzt ist. Wer nackte µC verwendet muss sich mit der Fuse Einstellung befassen.

HotSystems:
Ohne Änderungen der Fuse-Bits ist der ATtiny85 bei Auslieferung auf 1MHz eingestellt.

Habe schon lange keinen neuen mehr gekauft, sind mir inzwischen zu teuer :frowning:

Danke für die Korrektur.

UnoRookie:
Die Option Bootloader brennen hab ich nicht gebraucht, ...

In der IDE ist "Bootloader brennen" und "Fuse setzen" eine Aktion, brauchst Du doch. Je nach Installation wird ein leerer Bootloader gebrannt.

Hallo,
vielen Dank für eure zahlreichen Antworten.

In der IDE ist "Bootloader brennen" und "Fuse setzen" eine Aktion, brauchst Du doch. Je nach Installation wird ein leerer Bootloader gebrannt.

Ja, das muss ich noch machen. Die "Bootloader brennen" Aktion hat mich bisl verwirrt, da ich von dem Bootloader eines Betriebssystems ausgegangen bin.

Das sagt schon aus, dass deine interne Frequenz nicht stimmt.

Wobei das doch heißen müsste, dass die Taktfrequenz intern schon auf 8 MHz gesetzt ist, oder? Beim Arduino, der 16MHz hat, dauert ein delay(1000) eine Sekunde und beim Attiny85 mit 8MHz betrieben, dann delay(100). Müsste doch stimmen, oder ?

Hallo,

das delay soll doch unabhängig vom µC Takt immer richtig sein. Ein delay(1000) soll demnach immer eine Sekunde sein. Egal ob 16MHz oder 8MHz. Bei dir ist schon der interne 8MHz Oszillator aktiv. Aber zusätzlich noch der Vorteiler 8. Deswegen taktet dein ATtiny real mit 1MHz statt mit 8MHz.

Laut deiner falschen Rechnung mit 8MHz müßte das delay(500) sein um auf 1s. zukommen. Ist aber alles Unfug. Ohne Fuseanpassung stimmt gar nix was machst. Geht mit der seriellen weiter.

Doc_Arduino:
Deswegen taktet dein ATtiny real mit 1MHz statt mit 8MHz.

Laut deiner falschen Rechnung mit 8MHz müßte das delay(500) sein um auf 1s. zukommen. Ist aber alles Unfug. Ohne Fuseanpassung stimmt gar nix was machst. Geht mit der seriellen weiter.

Falsch :slight_smile:

Die IDE nimmt an, 8MHz. Real: 1 MHz weil Vorteiler / 8

Wenn der Taktgeber einigermaßen genau rennt, dann sollte 1000 / 8 = 125 passen.

delay(125); = 1 Sekunde

Gruß, Katsumi

agmue:
Habe schon lange keinen neuen mehr gekauft, sind mir inzwischen zu teuer :frowning:

Danke für die Korrektur.In der IDE ist "Bootloader brennen" und "Fuse setzen" eine Aktion, brauchst Du doch. Je nach Installation wird ein leerer Bootloader gebrannt.

Aber gerne doch.
Ok, der Preis ist im Verhältnis zu fertigen Pro Mini Clone recht hoch. Allerdings für kleine Projekte, wo der Platz knapp ist, sind die bisher ungeschlagen und da gebe ich das Geld gerne aus.
Mein aktuelles Projekt sind per Bewegungssensor gedimmte Led-Strips für den Kleiderschrank. Ideal für den ATtiny85.
Alles andere wäre zu groß.

@UnoRookie
Bootloader ist hier eigentlich der falsche Begriff, da tatsächlich keine Software geflasht wird, wie beim Uno, sondern nur die Fuse-Bits.

Der Berechnungsfehler tritt nicht nur bei delay() auf!
Sondern auch die Baudrate, ADC , SPI und I2C Takt werden falsch berechnet.
Auch so zeitkritische Dinge wie WS2801 LEDs, der Thermosensor DS18B20, usw, werden versagen.

Und diese Probleme will man doch alle nicht!

Puh, jetzt wird die Liste lang, also :

Nochmals meinen besonderen Dank an

  • agmue
  • combie
  • Doc_Arduino
  • HotSystems
  • Katsumi_S

für eure Beiträge !!

(nach dem Alphabet geordnet :slight_smile: )

Ich hoff ich hab jetzt keinen vergessen :o . Falls ja, bitte bei mir beschweren.

Werd das ganze dann heute Abend mit Bootloader brennen übernehmen.

Viele Grüße an euch,
Uno_Rookie

HotSystems:
Mein aktuelles Projekt sind per Bewegungssensor gedimmte Led-Strips für den Kleiderschrank. Ideal für den ATtiny85.

Erst wollte ich nicht glauben, daß das geht, aber ich habe es ausprobiert, es funktioniert :slight_smile:

HotSystems:
@UnoRookie
Bootloader ist hier eigentlich der falsche Begriff, da tatsächlich keine Software geflasht wird, wie beim Uno, sondern nur die Fuse-Bits.

Das kommt drauf an. Auf meinem PC mit ATTiny Core gibt es empty_all.hex (28 Bytes) und optiboot_attiny85.hex1) (7216 Bytes). Je nach Auswahl in der IDE wird der Optiboot-Bootloader oder ein "leerer"2) zusammen mit den Fuse-Bits übertragen.


  1. Dieser steht nun bei mir gerade bei unsupported, aber für andere ATtiny kann ich den Optiboot auswählen.

  2. Irgendwas steht da drin, möglicherweise ein Sprung oder ein Sprungvektor oder die Adresse eines Sprungvektors, aber eben nicht die Funktionalität eines Bootloaders.

agmue:
Erst wollte ich nicht glauben, daß das geht, aber ich habe es ausprobiert, es funktioniert :slight_smile:

Was hast du probiert bzw. was funktioniert ?

Das kommt drauf an. Auf meinem PC mit ATTiny Core gibt es empty_all.hex (28 Bytes) und optiboot_attiny85.hex1) (7216 Bytes). Je nach Auswahl in der IDE wird der Optiboot-Bootloader oder ein "leerer"2) zusammen mit den Fuse-Bits übertragen.


  1. Dieser steht nun bei mir gerade bei unsupported, aber für andere ATtiny kann ich den Optiboot auswählen.

  2. Irgendwas steht da drin, möglicherweise ein Sprung oder ein Sprungvektor oder die Adresse eines Sprungvektors, aber eben nicht die Funktionalität eines Bootloaders.

Ja, davon habe ich auch gelesen, aber der Standard ist wohl ohne die genannten "Funktionalitäten".

HotSystems:
Was hast du probiert bzw. was funktioniert ?

Meine neun PTH_RGB_LED_WS2812 (siehe Avatar) habe ich an einen ATtiny85 angeschlossen. Es hat mich beeindruckt, daß es funktioniert.

HotSystems:
Ja, davon habe ich auch gelesen, aber der Standard ist wohl ohne die genannten "Funktionalitäten".

Hier im Forum tauchen auch immer mal Fragen zu Adafruit Trinket und vergleichbaren auf, welche einen Bootloader verwenden. Daher wollte ich nur darauf hinweisen, daß es ATtinys mit und ohne Bootloader gibt. Selbst habe ich sie allerdings nur ohne verwendet, mein Arduino UNO mit Nullkraftsockel erledigt die Programmübertragung bestens.

Hallo,
also ich hab jetzt den Bootloader auf den ATtiny85 gebrannt (mit 8 MHz) und jetzt funktioniert delay(1000) auch einwandfrei.
Anschließend habe ich den Takt des ATtiny85 wieder zurück auf 1 MHz gesetzt und den Bootloader wieder gebrannt, was zwar funktioniert, aber den Takt anscheinend nicht wieder zurück auf die 1 MHz setzt.
Die Einstellungen liegen auf dem Bildschirmfoto unten vor.
Hab es so nochmal gebrannt, den Sketch nochmal hochgeladen und der ATtiny85 scheint weiterhin mit 8 MHz zu laufen, anstatt wie eingestellt, mit 1 MHz.
Wo liegt der Fehler ?

P.S. : Über Sinn und Unsinn, die MHz-Zahl wieder zurückzusetzen, kann man jetzt streiten, mir gehts nur darum zu verstehen.

Vielen Dank,
UnoRookie

Du könntest mal prüfen, ob die Fuses in der boards.txt korrekt eingetragen sind.
Denn die IDE tut das, was da eingetragen ist

Da könnte der Fuse Calculator helfen. Bitte beachte den roten Hinweis.

Bei mir steht in der boards.txt:

attinyx5.menu.clock.8internal=8 MHz (internal)
attinyx5.menu.clock.8internal.bootloader.low_fuses=0xE2
attinyx5.menu.clock.8internal.build.f_cpu=8000000L

attinyx5.menu.clock.1internal=1 MHz (internal)
attinyx5.menu.clock.1internal.bootloader.low_fuses=0x62
attinyx5.menu.clock.1internal.build.f_cpu=1000000L

agmue:
Meine neun PTH_RGB_LED_WS2812 (siehe Avatar) habe ich an einen ATtiny85 angeschlossen. Es hat mich beeindruckt, daß es funktioniert.

Ok, alles klar.

Hier im Forum tauchen auch immer mal Fragen zu Adafruit Trinket und vergleichbaren auf, welche einen Bootloader verwenden. Daher wollte ich nur darauf hinweisen, daß es ATtinys mit und ohne Bootloader gibt. Selbst habe ich sie allerdings nur ohne verwendet, mein Arduino UNO mit Nullkraftsockel erledigt die Programmübertragung bestens.

Stimmt, diese Teile haben ja auch einen USB-Anschluss zum flashen, da geht es nicht ohne.
Das trifft auf meine Projekte nicht zu, somit brauche ich diese Bootloader sicher nicht. :wink:

Bei mir gibt es in der Board.txt einen einzigen Abschnitt, wo "attiny" gefunden wird. Da steht folgendes drin :

##############################################################

gemma.vid.0=0x2341
gemma.pid.0=0x0c9f

gemma.name=Arduino Gemma

gemma.bootloader.low_fuses=0xF1
gemma.bootloader.high_fuses=0xD5
gemma.bootloader.extended_fuses=0xFE
gemma.bootloader.tool=avrdude
gemma.bootloader.lock_bits=
gemma.bootloader.unlock_bits=
gemma.bootloader.file=gemma/gemma_v1.hex

gemma.build.mcu=attiny85
gemma.build.f_cpu=8000000L
gemma.build.core=arduino
gemma.build.variant=gemma
gemma.build.board=AVR_GEMMA

gemma.upload.tool=avrdude
gemma.upload.maximum_size=5310

##############################################################

Ist meine heruntergeladene Boards.txt defekt, oder warum unterscheidet die sich so von deinen attiny*- Einträgen ?
Vielleicht könntest du mir den Link von deiner Boards.txt geben, wo du sie heruntergeladen hast, denn meine scheint sich nicht um die Einstellungen im Arduino IDE zu richten...

Vielen Dank,
UnoRookie

Google: "attiny core github"
Es gibt derer einige.

Ich verwende für Attinys (1634, x313, x4, x41, x5, x61, x7, x8, 828) zum Beispiel die Core von DrAzzy (Spence Konde) - der ist recht aktiv im englischsprachigen Teil des Forums.

[GitHub - SpenceKonde/ATTinyCore: Arduino core for ATtiny 1634, 828, x313, x4, x41, x5, x61, x7 and x8](http://Brauchbare Cores für Attiny (1634, x313, x4, x41, x5, x61, x7, x8, 828) gibt es zum Beispiel von DrAzzy (Spence Konde) GitHub - SpenceKonde/ATTinyCore: Arduino core for ATtiny 1634, 828, x313, x4, x41, x5, x61, x7 and x8)

UnoRookie:
Bei mir gibt es in der Board.txt einen einzigen Abschnitt, wo "attiny" gefunden wird. Da steht folgendes drin :

gemma.build.mcu=attiny85
gemma.build.f_cpu=8000000L

Nur die Fuses für 8 MHz sind bekannt, dann kannst Du die für 1 MHz auch nicht setzen. Das dürfte Deine Probleme erklären.

UnoRookie:
... denn meine scheint sich nicht um die Einstellungen im Arduino IDE zu richten...

Was nicht definiert ist, kann man nicht einstellen.

UnoRookie:
Vielleicht könntest du mir den Link von deiner Boards.txt geben, wo du sie heruntergeladen hast,

Siehe #22, die nutze ich auch.