Home > Technologie > ARDUINO CLONE Mit ATMEGA328-PU Nicht P

ARDUINO CLONE Mit ATMEGA328-PU Nicht P

0
Advertisement

ARDUINO CLONE Mit ATMEGA328-PU Nicht P

Eine Möglichkeit zum Booten Atmega328-PU non pico power mit Arduino 1.0.6 ISP.

Schritt 1: Der Anfang

ARDUINO CLONE Mit ATMEGA328-PU Nicht P

Letzte Woche entschied ich mich, einen klassischen Arduino Klon mit einem ATMEGA328P-PU zu machen. Ich schien so einfach und schnell zu sein, aber eine sehr schlechte Überraschung für mich: Ich bestellte das billigere ATMEGA328-PU (non P !!), das heißt: non pico power.

Der Unterschied: Dieser IC braucht ein bisschen mehr Energie und ist nicht kompatibel mit dem arduino ISP Bootloader (siehe falsche Signatur). So war ich ein wenig enttäuscht.

Ich schaute auf dem Netz für eine Methode, um diese Art von Schaltung bootload: viele Methoden gefunden, aber keiner von ihnen würde mit Arduino 1.0.6 laufen. Also habe ich eine von mir getestet: eine Art Mix zwischen all diesen Tricks. Ich werde es Ihnen jetzt geben ...

Werbung

Schritt 2: Das Schema und der Bootloader zu verwenden:

ARDUINO CLONE Mit ATMEGA328-PU Nicht P

ARDUINO CLONE Mit ATMEGA328-PU Nicht P

ARDUINO CLONE Mit ATMEGA328-PU Nicht P

Sie finden es einfach auf:

https://www.arduino.cc/de/Tutorial/ArduinoISP

Ich verwende eine Prototyp-Platine, um alle Kabel auf dem Foto zu verbinden (Komponenten auf der Oberseite der Karte sind dekorativ).

Dann müssen Sie folgende Schritte ausführen:

1- Download in Ihrem Arduino das berühmte Beispiel "arduinoISP", dann schließen Arduino 1.0.6

2- Sicherung der Arduino / Hardware / Geräte / etc / avrdude.conf und führen Sie die folgende Änderung (in Zeile 8080 für mich in Notepad ++):

# ------------------------------------------------- aufrechtzuerhalten.

# ATmega328

# ------------------------------------------------- aufrechtzuerhalten.

Teil

Id = "m328";

Desc = "ATmega328";

Has_debugwire = yes;

Flash_instr = 0xB6, 0x01, 0x11;

Eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,

0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,

0x99, 0xF9, 0xBB, 0xAF;

Stk500_devcode = 0x86;

# Avr910_devcode = 0x;

Signatur = 0x1e 0x95 0x14; # Nicht ändern

Pagel = 0xd7;

Bs2 = 0xc2;

Chip_erase_delay = 9000;

Pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",

"Xxxxxxxxxxxxxxxx";

Chip_erase = "1 0 1 0 1 1 0 0 1 0 0 xxxxx",

"Xxxxxxxxxxxxxxxx";

Timeout = 200;

Stabdelay = 100;

Cmdexedelay = 25;

Synchloops = 32;

Bytedelay = 0;

Pollindex = 3;

Pollvalue = 0x53;

Predelay = 1;

Postdelay = 1;

Pollmethod = 1;

Pp_controlstack =

0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,

0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,

0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,

0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;

Hventerstabdelay = 100;

Progmodedelay = 0;

Latchzyklen = 5;

Togglevtg = 1;

Poweroffdelay = 15;

Resetdelayms = 1;

Resetdelayus = 0;

Hvleavestabdelay = 15;

Resetdelay = 15;

Chiperasepulswidth = 0;

Chiperasepolltimeout = 10;

Programfusepulswidth = 0;

Programfusepolltimeout = 5;

Programlockpulswidth = 0;

Programlockpolltimeout = 5;

Ocdrev = 1;

Speicher "eeprom"

Paged = no;

Page_size = 4;

Grße = 1024;

Min_write_delay = 3600;

Max_write_delay = 3600;

Readback_p1 = 0xff;

Readback_p2 = 0xff;

Lesen = "1 0 1 0 0 0 0 0",

"0 0 0 xxx a9 a8",

A7 a6 a5 a4 a3 a2 a1 a0 ",

"Oooooooo";

Write = "1 1 0 0 0 0 0 0",

"0 0 0 xxx a9 a8",

A7 a6 a5 a4 a3 a2 a1 a0 ",

Iiiiiiii;

Loadpage_lo = "1 1 0 0 0 0 0 1",

"0 0 0 0 0 0 0 0",

0 0 0 0 0 0 a1 a0 ",

Iiiiiiii;

Writepage = "1 1 0 0 0 0 1 0",

"0 0 xxxx a9 a8",

A7 a6 a5 a4 a3 a2 0 0,

"Xxxxxxxx";

Mode = 0x41;

Verzögerung = 20;

Blockgröße = 4;

Readsize = 256;

;

Speicher "Flash"

Paged = yes;

Größe = 32768;

Page_size = 128;

Num_pages = 256;

Min_write_delay = 4500;

Max_write_delay = 4500;

Readback_p1 = 0xff;

Readback_p2 = 0xff;

Read_lo = "0 0 1 0 0 0 0 0",

0 0 a13 a12 a11 a10 a9 a8 ",

A7 a6 a5 a4 a3 a2 a1 a0 ",

"Oooooooo";

Read_hi = "0 0 1 0 1 0 0 0",

0 0 a13 a12 a11 a10 a9 a8 ",

"A7 a6 a5 a4 a3 a2 a1 a0",

"Oooooooo";

Loadpage_lo = "0 1 0 0 0 0 0 0",

"0 0 0 xxxxx",

"Xx a5 a4 a3 a2 a1 a0",

Iiiiiiii;

Loadpage_hi = "0 1 0 0 1 0 0 0",

"0 0 0 xxxxx",

"Xx a5 a4 a3 a2 a1 a0",

Iiiiiiii;

Writepage = "0 1 0 0 1 1 0 0",

0 0 a13 a12 a11 a10 a9 a8 ",

"A7 a6 xxxxxx",

"Xxxxxxxx";

Mode = 0x41;

Verzögerung = 6;

Blockgröße = 128;

Readsize = 256;

;

Speicher "lfuse"

Größe = 1;

Min_write_delay = 4500;

Max_write_delay = 4500;

Gelesen = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",

"Xxxxxxxxoooooooo";

Schreiben = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",

"Xxxxxxxxiiiiiiii";

;

Speicher "hfuse"

Größe = 1;

Min_write_delay = 4500;

Max_write_delay = 4500;

Gelesen = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",

"Xxxxxxxxoooooooo";

Write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",

"Xxxxxxxxiiiiiiii";

;

Speicher "efuse"

Größe = 1;

Min_write_delay = 4500;

Max_write_delay = 4500;

Gelesen = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",

"Xxxxxxxxxxxxxooo";

Schreiben = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",

"Xxxxxxxxxxxxxiii";

;

Speicher "Sperre"

Größe = 1;

Min_write_delay = 4500;

Max_write_delay = 4500;

Gelesen = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",

"Xxxxxxxxxxoooooo";

Schreiben = "1 0 1 0 1 1 0 0 1 1 1 xxxxx",

"Xxxxxxxx 1 1 iiiiii";

;

Speicher "Kalibrierung"

Größe = 1;

Gelesen = "0 0 1 1 1 0 0 0 0 0 0 xxxxx",

"0 0 0 0 0 0 0 0 oooooooo";

;

Speicher "Signatur"

Größe = 3;

Gelesen = "0 0 1 1 0 0 0 0 0 0 0 xxxxx",

"Xxxxxx a1 a0 oooooooo";

;

;

Teil-Elternteil "m328"

Id = "m328p";

Desc = "ATmega328P";

#signature = 0x1e 0x95 0x0F; # Ändern Sie dies in:

Signatur = 0x1e 0x95 0x14;

Ocdrev = 1;

;

# ------------------------------------------------- ---------------------------------------------

# ------------------------------------------------- ---------------------------------------------

Ich gebe Ihnen die anfängliche avrdude.conf und die geänderte Datei in zwei Archiven.

3- Lauf ARDUINO 1.0.6

4- wählen Sie das Brett Arduino Duemilanove oder Diecemilia

5- die gute pprocessor wählen: Atmega328

6- wählen Arduino s ISP

7- den Bootload brennen

8- absperren ARDUINO 1.0.6 avrdude durch die ursprüngliche Datei , die Sie wieder nach oben geändert ersetzen.

9- jetzt müssen Sie die Datei Arduino / Hardware ändern / Arduino / avr / boards.txt mit dieser Art von Schaltung , die die neuen Board Namen erscheinen zu lassen. Ich nannte es: Arduino Uno w / ATmega328 (Nicht-P)

Der Text, den Sie in ihn einfügen müssen:

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

Uno328.name = Arduino Uno w / ATmega328 (nicht-P)

Uno328.upload.tool = avrdude

Uno328.upload.protocol = arduino

Uno328.upload.maximum_size = 32256

Uno328.upload.speed = 115200

Uno328.bootloader.low_fuses = 0xff

Uno328.bootloader.high_fuses = 0xde

Uno328.bootloader.extended_fuses = 0x05

Uno328.bootloader.path = optiboot

Uno328.bootloader.file = optiboot_atmega328.hex

Uno328.bootloader.unlock_bits = 0x3F

Uno328.bootloader.lock_bits = 0x0F

Uno328.build.mcu = atmega328

Uno328.build.f_cpu = 16000000L

Uno328.build.core = arduino

Uno328.build.variant = standard

Speichern.

Ich gebe die Datei in das mitgelieferte Archiv.

10- Jetzt können Sie ARDUINO 1.0.6 verwenden , um entweder programmieren UNO - Board mit Arduino uno - Karte oder dem ATmega328-pu / 16MHz mit Arduino Uno w / ATmega328 (Nicht-P) Karte mit USBasp in meinem Beispiel.

Schritt 3: Das Schema eines Beispiels des Klons: aus Atmega328-PU non P! Na sicher

ARDUINO CLONE Mit ATMEGA328-PU Nicht P

ARDUINO CLONE Mit ATMEGA328-PU Nicht P

ARDUINO CLONE Mit ATMEGA328-PU Nicht P

Diese Karte wird auf einem meiner Projekte verwendet: dem 6-Achsen-Roboter. Es benötigt eine leistungsfähige 5V DC Versorgungsspannung.

Auf dem Bild habe ich ein ETHERNET-Schild leicht auf die Oberseite des Klons montiert und Sie können die USBasp sehen, um das entsprechende Programm herunterzuladen.

Schritt 4: Fazit:

Ich hoffe, es hilft einigen Leuten, die das falsche aber preiswerteste atmega328-PU nicht P kaufen!

Vielen Dank an alle anregenden Tutorial alle über das Netz.

Glücklich instructable !!!!

Related Reading