Good bye Arduino / Umstieg auf tinyAVR: UPDI Programmierung

Sdílet
Vložit
  • čas přidán 10. 11. 2023
  • Der "neue" tinyAVR ersetzt bei mir die Arduinos. Kleiner, einfacher, besser! Ich zeig Euch die wie einfach die UPDI Programmierung ist.
    Lesestoff gibt's heir: github.com/SpenceKonde/megaTi...
    Ich teile hier meine Tricks, meine Meinung und meine Erfahrungen - Gute wie Schlechte. Nachmachen, nachbauen, nachkaufen bitte immer auf eigenes Risiko. Ich übernehme keine Haftung. Egal wobei: Bitte IMMER aller Sicherheitsvorschriften beachten.
  • Věda a technologie

Komentáře • 35

  • @lotenmann1655
    @lotenmann1655 Před 7 měsíci +1

    Auch von meiner Seite danke für das tolle Video! Ich hab mich die letzten Tage durch deinen Kanal "durchgeschaut" und dadurch schon viel Neues gelernt. Ich nutze jetzt den ATTiny 1614, den ich selbst auf eine Adapter Platine gelötet habe. Da hätte ich mich ohne Deine Videos nie rangetraut. Dann habe ich UPDI mit VS Code hinbekommen (inkl. Serieller Monitor). Die erste Schaltung mit KiCaD habe ich auch schon angefangen, Ziel ist hier auch eine eigene Platine fertigen zu lassen. Ich hatte vorher schon einiges an E-Technik Wissen und Werkzeug, hatte aber aus verschiedenen Gründen immer wieder zu wenig Zeit und Motivation, da dran zu bleiben. Deine Videos sind für mich super verständlich, nachvollziehbar und das Beste: sie motivieren. ;-)

  • @Thommelbommel
    @Thommelbommel Před 8 měsíci +1

    Danke für die hervorragenden Videos!!
    Ich möchte auch mit der Attiny 1-series und AVR DB beginnen.
    Diese sollen mit CAN Kommunikation die Basis in meiner Home-Automatisierung bilden. Anbindung an ESPHome und Home Assistant.
    Mein Ziel ist eine Lösung ohne Funk mit hoher Zuverlässigkeit, wenig Udates und geringem Stromverbrauch.
    Freue mich auf die nächsten Videos!

    • @maker-garage-de1060
      @maker-garage-de1060  Před 8 měsíci +1

      Danke und gutes Gelingen 👍

    • @Thommelbommel
      @Thommelbommel Před 8 měsíci

      Was hälst du von der DD und DB Serie?

    • @maker-garage-de1060
      @maker-garage-de1060  Před 8 měsíci

      Hab ich ja auch vor einiger Zeit schon ein Video zu gemacht. Würde auch gerne die vermehrt nutzen, allerdings ist die Verfügbarkeit eine Katastrophe

  • @user-fi2et6js1j
    @user-fi2et6js1j Před 8 měsíci

    Gut erklärt, bei mir läuft der ATtiny auch beim programmieren mit 3,3V.

    • @maker-garage-de1060
      @maker-garage-de1060  Před 8 měsíci

      Gute Frage! Ich hab im Datasheet nichts gegenteiliges gefunden. Habe nur gelesen, dass erase scheitert, wenn BOD (Burn out detection ist zwangsweise an) triggert also Spannung unter 1.8 V fällt. Scheint also möglich

  • @losmanus730
    @losmanus730 Před 8 měsíci +2

    Danke für das schöne Video.
    Lassen sich die neuen Controller auch noch über die Anschlüsse MISO MOSI SCK programmieren?
    Zum Beispiel mit einem USBasp Programmiergerät?

    • @maker-garage-de1060
      @maker-garage-de1060  Před 8 měsíci

      Ich glaube das geht nicht mehr. Ist mir jedenfalls noch nicht über den Weg gelaufen 🤔

    • @andreasgerth3654
      @andreasgerth3654 Před 8 měsíci +1

      Die meisten Programmer von DIAMEX lassen sich sowohl im ISP wie auch UPDI Mode betreiben. Daher ist die Frage vollkommen überflüssig, weil es je nach Tiny Modell kein festgelegten Standard-SPI Ports gibt, die für SPI benötigt werden. Diese Müssen je nach TINY und PIN-Out erst festgelegt werden. Dabei können ja nach TINY mehrere MOSI / MISO u. SCL PIN-Paare in Frage kommen.
      Ja man könnte eine Boot-Loader schreiben, der mit dem Power-ON Init 3 PIns als SPI-Schnittstelle fest definiert, ebenso das man den UPDI Port an RESET Pin via FUSE ummünzt, aber was bringt es dir ? Du belegst mehr Pins, du verlierst eine USART und knallst dir zudem den Flash zu !? Sinnvoll ? Aus meinen Augen nicht.

  • @spreeuferberlin
    @spreeuferberlin Před 8 měsíci +1

    danke

  • @Spoxi12
    @Spoxi12 Před 3 měsíci

    Wie würde man den SerialPrint ausgeben in einer dedizierten schaltung? Umstecken geht dann ja nicht?

    • @maker-garage-de1060
      @maker-garage-de1060  Před 3 měsíci +1

      Schau mal mein Experimentierboard (Video+GitHub) an, da hab ich es mit einem Schalter gelöst. Könne man auch einen Jumper nehmen.

  • @yay8507
    @yay8507 Před 5 měsíci

    hi, kenne mich mit dem Thema überhaupt nicht aus. Kann ich als Diode auch eine Schottky oder Zenerdiode nehmen?

    • @maker-garage-de1060
      @maker-garage-de1060  Před 5 měsíci

      Schottky wäre optimal, eine simple 1n4148 tuts bei mir aber auch. Zener sind für was anderes.

    • @yay8507
      @yay8507 Před 5 měsíci

      @@maker-garage-de1060ok danke 👌

  • @user-qe9fy9fv8v
    @user-qe9fy9fv8v Před 14 dny

    I managed to do this only by replacing R4 - TX (1.5k) with a 330 Ohm resistor and possibly removing the LEDs to increase speed.

    • @maker-garage-de1060
      @maker-garage-de1060  Před 12 dny

      More speed is always welcome :-) Can you please explain more details?

  • @ElektrischInkorrekt
    @ElektrischInkorrekt Před 8 měsíci

    Hab mich gestern tatsächlich genau zu dem Thema auf 'ner Fachmesse beraten lassen.
    Die Arduino-Variante ermöglicht nämlich dooferweise kein Live-Debugging.
    Empfehlung des Herstellers ist entweder der Curiosity Nano, der wohl auch live debugbar ist. (Hier könnte man z.B. den Programmierpart aus dem Schaltplan in die eigene Schaltung übernehmen; Kostenpunkt für den Curiosity Nano: etwa 30€)
    Variante 2 ist die Nutzung des PicKit 4 (liegt wohl bei etwa 100€, ist aber auch schon EOL/abgekündigt).
    -----
    *Mit Debugging meine ich die Funktionalität, den Code u.a. auf dem Controller auszuführen und an einer beliebigen Stelle pausieren zu können.

    • @maker-garage-de1060
      @maker-garage-de1060  Před 8 měsíci

      Mit Debugging hab ich keine Erfahrung, komme halt eher aus der Arduino Welt. Grundsätzlich sollte es über UPDI funzen. Müsste man mal rauskriegen wie 🫣

    • @ElektrischInkorrekt
      @ElektrischInkorrekt Před 8 měsíci

      @@maker-garage-de1060 Ist grundsätzlich immer dann sinnvoll, wenn man nicht genau die Ursache eines Softwarefehlers kennt, oder der Code entsprechend umfangreich ist.
      D.h. man kann in der IDE an den gewünschten Zeilen eine Flag (rote Flagge oder roter Punkt) anbringen.
      Dann läuft das Programm bis zu dem Punkt und man kann dann dieses Programm dann auch Schritt für Schritt durchgehen, um den Fehler zu finden. Teilweise gibt es hier sogar Zusatzfunktionen, wie z.B. dass man sich Variablenwerte und den Speicherinhalt zu diesem Zeitpunkt anschauen kann.
      Teilweise ist das auch in der Arduino IDE verbaut, dort habe ich das leider ebenfalls nicht mit dem Attiny zum funktionieren gebracht.

    • @ElektrischInkorrekt
      @ElektrischInkorrekt Před 8 měsíci

      @@chrissold5957 Äh, ist leider ein wenig am Thema vorbei.
      Weder ist auf dem Arduino Zero ein ATtiny verbaut, noch hat dieser die UPDI-Schnittstelle.
      Es ging hier speziell um diese 1-Wire-Programmierschnittstelle.
      (Ist so, wie wenn man eigentlich über alternative Kraftstoffe bei Benzinern redet - dann kommt jemand und meint, "also ich kann mein Fahrzeug auch mit Sonnenblumenöl fahren"...)

  • @tobi9648
    @tobi9648 Před 8 měsíci

    was ist denn jetzt der Vorteil von so einem tinyAVR im Vergleich zum Arduino?

    • @maker-garage-de1060
      @maker-garage-de1060  Před 8 měsíci +3

      Die Arduinos basieren meist auf dem ATmega328p -- der ist schon echt angestaubt. Der TinyAVR ist schneller, eigene Boards werden wegen UPDI kleiner, er hat Custom Logic, er hat das Event System, man kann die Pins umlegen, schneller ADC, DAC, verschiedene Timer, usw. Schau mal meine letzten beiden Videos.

    • @Henry-sv3wv
      @Henry-sv3wv Před 8 měsíci

      Naja 3 bit RAM für 30 Euro ist doch cool im vergleich zum ESP32 der auch noch bluetooth und wifi kann für nen Zener.

    • @andreasgerth3654
      @andreasgerth3654 Před 8 měsíci

      @@Henry-sv3wv 3 Bit das ist schon einmal eine Aussage die dich als Troll qualifiziert.
      Unabhängig es geht um eine Ersatz für einen angetagten ATMega328 und nicht um dieses Tinys mit einen ESp zu vergleichen !
      Wenn du nicht den Horizont hast, was der Unterschied zwischen einem AVR und einem ESP ist, sowie nicht nachvollziehen kannst, das es immer noch Aufgaben- und Anwendungsbereiche gibt die ein solcher AVR besser, kleiner und vor allem mit einem deutlich geringeren Strombedarf erledigen kann, dann hast du wieder einmal nichts begriffen.
      Diese AVRs ATTINY, sind in der RAM Ausstattung, Flash-Speicherausstattung inzwischen auf dem Niveau eines 328UP angekommen. Da muss man nicht mit einen ESP wenn es keine Bedarf an WLAN und Bluetooth gibt mit Kanonen auf Spatzen schießen.
      Spätestens wenn du einmal mit einer Autarken Schaltung gekämpft hat, wo Betriebszeit und damit Akkulaufzeit, sowie Ausfallsicherheit das höhere Anforderungskriterium ist, wirst du merken, das dein ganzes Gesapple nur sinnloses Gesülze ist. Dort wo es mit einem aktiven Core dein ESP nicht mehr unter 80 mA macht, da werkelt so ein Tiny schon mit nur noch knappen 2,8 mA und erfüllt genau die selben Aufgaben im Rahmen seiner Programmspeicherkapazitäten ! Und wenn du mal deine rosarote Brille absetzen würdest, dann würdest du merken, das sich ein solcher TINY sehr, sehr gut als SUB System eignet, um den ESP oder andere größere µC bei Teilaufgaben zu unterstützen.
      Aber wenn man nur reine Leistungszahlen als Vergleichsmaßstab ansetzt, nach dem Motto höher schneller weiter, aber dabei den Platzbedarf, den Strombedarf und die Leistungsskalierung vollkommen außer Acht läßt, dann hat man nicht in der Waffel, nur eine große Menge Quark.

  • @hiennguyenminh9214
    @hiennguyenminh9214 Před 4 měsíci

    I followed the steps as you instructed, but for ATTINY3224 it gave me the error
    Traceback (most recent call last):
    File "C:\Users\Golde\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10/tools/prog.py", line 286, in
    main()
    File "C:\Users\Golde\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10/tools/prog.py", line 128, in main
    return_code = pymcuprog_basic(args, fuses_dict)
    File "C:\Users\Golde\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10/tools/prog.py", line 201, in pymcuprog_basic
    args_start)
    File "C:\Users\Golde\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\pymcuprog_main.py", line 545, in _start_session
    backend.start_session(sessionconfig)
    File "C:\Users\Golde\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\backend.py", line 362, in start_session
    sessionconfig.interface_speed)
    File "C:\Users\Golde\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\programmer.py", line 83, in setup_device
    options=self.options)
    File "C:\Users\Golde\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog
    vm.py", line 42, in get_nvm_access_provider
    accessprovider = NvmAccessProviderSerial(transport, device_info, baud=frequency, options=options)
    File "C:\Users\Golde\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog
    vmserialupdi.py", line 54, in __init__
    self.avr = UpdiApplication(port, baud, self.dut)
    File "C:\Users\Golde\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\serialupdi\application.py", line 79, in __init__
    datalink.init_datalink()
    File "C:\Users\Golde\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\serialupdi\link.py", line 44, in init_datalink
    raise PymcuprogError("UPDI initialisation failed")
    pymcuprog.pymcuprog_errors.PymcuprogError: UPDI initialisation failed
    Failed programming: uploading error: exit status 1
    And I tried with Arduino nano and it also gave me an error?

    • @maker-garage-de1060
      @maker-garage-de1060  Před 4 měsíci

      Hmm, bad 😕 I don’t have Windows (only Linux). But looks like you have not the “correct” Arduino IDE: Do you use the “golden” version 1.8.13?

    • @hiennguyenminh9214
      @hiennguyenminh9214 Před 4 měsíci

      Hello, I am using arduino 2.3.2 on windows 11. I have watched many videos but still there is no better way to load the program into attiny3224. I will try something else with the pickit 4 which may have something to do with the cost to buy

    • @maker-garage-de1060
      @maker-garage-de1060  Před 4 měsíci

      Hi, the MagaTinyCore won’t work with this Version.

    • @hiennguyenminh9214
      @hiennguyenminh9214 Před 4 měsíci

      @@maker-garage-de1060 I just tried again with version 1.8.13, I tried it before and this time I tried again and it still showed the error "pymcuprog.pymcuprog_errors.PymcuprogError: UPDI initialization failed"
      This is the actual capacity
      Sketch uses 18530 bytes (56%) of program storage space. Maximum is 32768 bytes.
      Global variables use 227 bytes (7%) of dynamic memory, leaving 2845 bytes for local variables. Maximum is 3072 bytes.

    • @hiennguyenminh9214
      @hiennguyenminh9214 Před 4 měsíci

      Looks like the updated changes in megatinycore? I will find a way because it is an indispensable part of the mini Reflow soldering project