Montag, 2. Mai 2022

UPDI mit Arduino IDE programmieren am Beispiel des Attiny406er Boards

 Alles was hier beschrieben ist, habe ich mit Arduino 1.18.19 getestet und programmiert.

1.Schritt: Einen Arduino Nano zum jtag2updi Programmer machen:


            Lade die Zip-Datei von meinem Github-Verzeichnis herunter:

            SpenceKonde_-_jtag2updi.zip

            Expandiere die Datei und öffne die Datei jtag2updi.ino in der Arduino IDE. Programmiere den             Arduino Nano damit. (Die Hauptdatei ist leer, das ist ok so.)

                



2.Schritt: megaTinyCore in Arduino IDE laden:

            In der Arduino IDE unter "Datei" -  "Einstellungen" im Feld
            "Zusätzliche Boardverwalter-URLs" folgendes Verzeichnis hinzufügen:

            http://drazzy.com/package_drazzy.com_index.json

            Dann unter "Werkzeuge" - "Board" die "Boardverwaltung" öffnen.
            Hier nach megaTinyCore suchen und installieren.



3.Schritt: Ein kleines Programm testen:




Beim Programmieren der physischen IO Pins in der Arduino IDE studiere die obige Grafik. Die neue Generation der Attiny´s hat keine eigenen analogen Pins. Ob ein Pin analog oder digital ist, hängt von seiner Programmierung ab.

Um das jtag2updi-Programm des Arduino Nano beim Programmieren des Attiny nicht zu überschreiben, müssen wir den RESET deaktivieren. Mit einem 10µF Elektrolytkondensator zwischen RESET und GND kann man das bewerkstelligen.
Mit einem 4k7 Widerstand verbinden wir D7 des Arduino NANO mit dem UPDI Eingang am 406er Board. 
GND und +5V noch vom NANO mit dem 406er Board verbinden, und wir können mit dem Programmieren beginnen.



In der Arduino IDE öffnen wir unter "Datei" - "Beispiele" - "01.Basics" das Blink Programm.

Hier fügen wir vor der setup Funktion folgenden Befehl ein:

#define LED_BUILTIN 4 //PB5 (Pin 2)

Das komplette Skript:

-----------------------------------------------------------------------------------------------------------------------------

/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink
*/
#define LED_BUILTIN 4 //PB5 (Pin 2)

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

-----------------------------------------------------------------------------------------------------------------------------

Nun wählen wir unter "Werkzeuge" das richtige "Board" den "Prozessor" und "Port" aus, als ''Programmer'' wählen wir jtag2updi aus.
 

  

Nach dem Hochladen haben wir erfolgreich das 406er Board zum Blinken gebracht.






Keine Kommentare:

Kommentar veröffentlichen