Elektronika GT2560 a 4x20LCD pro Rebela II

Toto fórum je věnováno sekci 3D Tisk na webu Sakul World.
  • Advertisement

Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Sakul » pát 14. dub 2017 19:01:21

V tomto tématu se budeme zabývat elektronikou GT2560 a k ní připojenému LCD displeji 4x20 znaků se čtečkou SD a ovladačem (REPRAP_DISCOUNT_SMART_CONTROLLER).
Protože tuto desku také vlastním rozhodl jsem se pro ní upravit firmware Marlin. Bohužel ač výrobce píše, že je to náhrada za Arduino MEGA s deskou RAMPS není to zcela pravda a ve spojení s displejem, který je spolu s touto deskou dodáván funguje pouze stará verze firmware Marlin. S jakýmkoli novějším se mi nepovedlo displej rozběhat. Přičemž se mi nepovedlo rozběhat tento bílý (barva PCB) displej ani s deskou Ramps. Ovšem jinou na pohled stejnou desku displeje, ovšem červené barvy jsem s deskou Ramps normálně zprovoznil. Nicméně ani tato červená deska displeje nefunguje s deskou GT2560. Takže tam bude něco zcela atypického.
Já jsem tedy stáhl doporučený firmware z výše uvedené stránky a nakonfiguroval ho tak, aby fungoval s tiskárnou Rebel II, s následujícími parametry:

Deska - GT2560
Displej - RepRapDiscount Smart Controller (bílá PCB)
Podpora SD - Zapnuta
Podpora EEPROM - Zapnuta
BaudRate - 115200 bps
Drivery - DRV8825 (mikrokrok 1/32) - možno upravovat v EEPROM
DRV8825 proud - 0,5V na běžec trimu
Osa Z - M6 se stoupáním závitu 1 mm (6400 kroků na milimetr) - možno upravovat v EEPROM
Osy X,Y - řemenice T2.5 s 16 zuby (160 kroků na milimetr) - možno upravovat v EEPROM
Extruder - 305 kroků na milimetr - možno upravovat v EEPROM
Max teplota trisky - 290°C
Min teplota trisky - 180°C (pro pohyb extruderu)
Teplota PLA - Tryska 210°C, Podložka 70°C
Teplota ABS - Tryska 260°C, Podložka 120°C

Nepoužívejte tento Firmware, pokud si nejste jisti, že jeho nastavení odpovídá nastavení Vaší tiskárny. Použití nesprávného Firmware povede k totální nefunkčnosti Vaší tiskárny.

K dispozici je jak zkompilovaná verze (HEX), tak i nezkompilovaná pro případné editace na jiné tiskárny. Současně je v tomto firmware nastavena Čeština, kterou jsem tam dodělal neb nebyla ještě podporována.
Takže třeba to někomu pomůže, kdo by chtěl něco s touto elektronikou kutit.

Nějaké další odkazy pro tuto desku:
http://www.geeetech.com/wiki/index.php/ ... side_panel
http://www.geeetech.com/forum/viewtopic ... 625#p27625
Přílohy
GT2560_sch.zip
Schéma desky
(936.89 KiB) 553 krát
Marlin GT2560.zip
Firmware pro GT2560
(7.23 MiB) 640 krát
2017-04-14 18.35.17.jpg
Deska GT2560 s displejem
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Douby » pát 14. dub 2017 21:58:46

Pokusil jsem se dle tvého návodu nahrát nový firmware a na konci při nahrávání do tiskárny mi to vyhodilo hlášku:
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
Uživatelský avatar
Douby
Chcíplotina
Chcíplotina
 
Příspěvky: 13
Registrován: pát 14. dub 2017 14:34:56

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Sakul » pát 14. dub 2017 22:31:07

No takže tato hláška se vypíše pokud je špatně nastaven ComPort, případně pokud je nastaven správně, ale je již obsazen jinou aplikací.
Proto je potřeba zkontrolovat správnost nastaveného ComPortu v Arduino IDE 1.0.6. V průběhu nahrávání do tiskárny nesmí být tiskárna propojena s programem Repetier HOST ani s žádným jiným (pouze s Arduino IDE).
V případě, že to problém nevyřeší je potřeba sem dát fotku ze správce zařízení s ComPorty a napsat nastavení Arduina IDE. Viz ukázkové foto. Samozřejmě v ukázce jsou moje Com Porty a každý bude mít zcela jiné.
Přílohy
2017-04-14 (5).png
Nastavení Arduina IDE na správný Com Port
2017-04-14 (5).png (28.73 KiB) Zobrazeno 27152 krát
2017-04-14 (3).png
Správce zařízení s Com Porty
2017-04-14 (3).png (29.82 KiB) Zobrazeno 27152 krát
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Douby » pát 14. dub 2017 22:51:29

ano, tak to mám, zkoušel jsem i jiné USB a pořád stejný
Přílohy
COm 1.jpg
COM.jpg
Uživatelský avatar
Douby
Chcíplotina
Chcíplotina
 
Příspěvky: 13
Registrován: pát 14. dub 2017 14:34:56

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Sakul » sob 15. dub 2017 9:14:13

Tak to je zajímavé. S programem Repetier HOST se na daném portu jde normálně s elektronikou spojit?
Pokud ano (což předpokládám) je to zajímavý problém a napadají mne 2 problémy:
1. Z nějakého důvodu nemá Arduino IDE přístup k danému portu.
2. V desce GT2560 není nahrán bootloader.
V tuto chvíli je nutné přesně popsat co se děje při pokusu o nahrání firmware. Správně by to mělo probíhat takto:
Odpojíme napájení do desky GT2560 (4pinový konektor v rohu vedle USB konektoru)
1. Otevřeme Arduino IDE v1.0.6
2. Otevřeme projekt firmware (File-Sketchbook-Marlin_GT2560/Marlin)
3. V Tools nastavíme desku (Board) na Arduino MEGA 2560 or MEGA ADK
4. V Tools pod položkou Serial port vybereme patřičná port, ke kterému je připojena deska GT2560
5. Nyní klikneme na tlačítko se šipkou vpravo (pod nápisem Edit)
6. Začne probíhat kompilace projektu. Zatím se nic moc neděje (Píše to Compiling sketch...)
7. Jakmile se to změní z Compiling sketch na Uploading... sledujeme na desce GT2560 zda problikne žlutá LED dioda a displej zda dojde k restartu procesoru (displej na chvilku zhasne a následně naskočí do úvodní obrazovky)
8. Poté již blikání žlutých diod signalizuje nahrávání firmware.

Ještě jsem připravil video na toto téma.
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Douby » sob 15. dub 2017 9:57:37

Ano, když chci tisknout přes program Repetier, tak jsem normálně připojený, vše mi přes kabel funguje i tisk přes usb. Možná, že problém bude v tom odpojení napájení v rohu desky jak píšeš, já to neodpojoval. Ale zase na druhou stranu, zkoušel jsem nahrávat firmware jak přes zaplou tak přes vyplou tiskárnu přes hlavní vypínač (kolíbku u zdroje).
Uživatelský avatar
Douby
Chcíplotina
Chcíplotina
 
Příspěvky: 13
Registrován: pát 14. dub 2017 14:34:56

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Sakul » sob 15. dub 2017 11:37:53

No ono to napájení by nemělo mít vliv. To jsem psal jen z důvodu maximální minimalizace problémů. Vždy je dobré to dělat v nejjednodušší konfiguraci pokud jsou nějaké problémy.
Ve videu v mém předešlém příspěvku přesně popisuji způsob jak firmware nahrát a jaké mohou být příčiny když to nejde. Osobně si začínám myslet, že tam prostě není v procesoru nahrán bootloader a proto nejde firmware nahrát. V tuto chvíli doporučuji přehrát do desky bootloader a teprve poté pokračovat v bádání. On tam třeba i bootloader nějaký (nestandardní) může být, ale třeba na jiné komunikační rychlosti a tak to prostě nejde.
Proto je důležité i zjistit, zda se deska při pokusu nahrát firmware restartuje. Což nám napoví kde je problém.
Pokud se restartuje je problém s bootloaderem (pravděpodobně)
Pokud se nerestartuje je problém někde jinde.
Je tu i možnost, že může být na PC nainstalován software Repetier server a ten do toho může také kecat (pokud tomu tak je je nutno ho vypnout nebo lépe odinstalovat).
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Douby » sob 15. dub 2017 12:16:50

Video jsem si prohlédl a musím tě pochválit za přehlednost a detailní vysvětlení.
Večer to zkusím až budu doma. Mám takový dojem, že to restartovalo a ale pak už nic, jen to asi jednou probliklo a pak nic. Ještě zkusím XLoader a pak zkusím ještě i tvůj *.HEX soubor pres XLoadra. Mam ale obavu, že já budu právě ten případ, co se bude muset dohrát Bootloader
Uživatelský avatar
Douby
Chcíplotina
Chcíplotina
 
Příspěvky: 13
Registrován: pát 14. dub 2017 14:34:56

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Sakul » sob 15. dub 2017 13:13:15

Ještě doporučuji projít TOTO fórum, kde by mohla být přímo tvoje tiskárna a tam i firmware pro ní.

Jinak do prvního příspěvku jsem doplnil pár odkazů a schéma desky GT2560, to pro případ, že by bylo třeba přehrát Bootloader, aby se vědělo kam připojit programátor do konektoru SW3 (SD CARD).
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Douby » sob 15. dub 2017 14:39:41

Ano to je moje tiskárna ;)
Nejdříve zkusím původní firmware od tebe.
když to nepůjde, tak ale já sám ten bootloader neumím nainstalovat :roll:
Uživatelský avatar
Douby
Chcíplotina
Chcíplotina
 
Příspěvky: 13
Registrován: pát 14. dub 2017 14:34:56

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Sakul » sob 15. dub 2017 16:36:14

Tak v případě zájmu je možno mi poslat tu desku a já tam ten bootloader nahraju, případně i firmware.
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Douby » sob 15. dub 2017 20:22:08

Tak jsem vše vyzkoušel a zjistil, že místo toho, aby se diodky rozblikaly zeleně, tak to blikne párkrát červeně. Displej se restartuje a nic víc. Takže moje deska nemá bootloader.

Jakou funkci má tlačítko viz příloha??
Přílohy
a.jpg
Uživatelský avatar
Douby
Chcíplotina
Chcíplotina
 
Příspěvky: 13
Registrován: pát 14. dub 2017 14:34:56

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Sakul » sob 15. dub 2017 21:24:57

No přes tuto volbu se nahraje do procesoru Bootloader. Nicméně to nelze provést přes USB, ale je k tomu nutný programátor (například oblíbený USBasp).
Připravil jsem instruktážní video, jak postupovat při nahrávání bootloaderu do desky GT2560 viz níže.

Přílohy
USBasp.zip
Drivery a zapojení programátoru USBasp
(6.59 MiB) 474 krát
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Samael » pon 15. led 2018 2:34:50

Ahojto, staci prehodit kable a vsetko funguje, displej a aj ovladanie ... Mne funguje zeleny a aj cerveny displej, prehodil som kable, otocil, zrezal a slape ... Skusal niekto natlacit do tejto dosky iny Firmware, ako Marlin ? Nasiel som, ze natlacili Repetier firmaware z Ultimakera (geeetech) a ze to slape ...
Uživatelský avatar
Samael
Chcíplotina
Chcíplotina
 
Příspěvky: 1
Registrován: pon 15. led 2018 2:29:25

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Sakul » pon 15. led 2018 9:19:13

Jo firmware Repetier funguje normálně. V případě zájmu je firmware Repetier ke stažení v tomto tématu.
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod darebak » pon 02. srp 2021 21:22:53

Takze som na tom podobne ako Douby.
Prepojim dosku GT2560 displejom.
Postupujem podla videa https://www.youtube.com/watch?v=kSKV1Jr8KTs&t=3s
Stiahol som arduino 1.0.6 https://github.com/e-Gizmo/Arduino-1.0.6-IDE-Windows
A z prveho prispevku aj marlin FW.
Ked chcem nahrat FW, tak to funguje takto:
skompiluje sa sketch a potom pise uploading
Na doske GT2560 vobec neblikaju oranzove LED, ale cervene LED (ja ich mam oznacene D4 a D5) a blika len D4 asi 1x za 10 sekund.
Ale po chvili to hodi timeout.

Je mozne, ze kable od displeja k doske mozu byt nejak zle zapojene ?
Alebo tam chyba bootloader ?

Chcel by som tam skusit nahrat bootloader, ale zatial nemam ziadny programator.
Mam jednu dosticku, vid priloha
Ak by to s tou doskou slo, tak nemam problem podla nejakeho navodu FW nahrat

Prikladam aj obrazok aby bolo vidno, ze mam dobre nastaveny COM3 port
arduino1.0.6.jpg
Přílohy
IMG_20210802_211527.jpg
Uživatelský avatar
darebak
Chcíplotina
Chcíplotina
 
Příspěvky: 4
Registrován: pon 02. srp 2021 19:07:49

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Sakul » pon 02. srp 2021 21:51:34

Tak rozhodně doporučuji přehrát ten bootloader. Máš desku Arduino MEGA, takže do ní nahraj ze složky Příklady program ArduinoISP (vše je již součástí Arduino IDE), pak propoj dle instrukcí uvedených v tom programu ArduinoISP s deskou GT2560 a nahraj bootloader pro desku ATMEGA2560. Pak ti již musí jít nahrát firmware přes USB. Jo a ještě mě napadá, že některé desky GT2560 měli Jumper, který se musel osadit, aby šel aktualizovat firmware. Takže to možní zkontroluj jako první.
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod darebak » úte 03. srp 2021 7:41:25

Samael píše:Ahojto, staci prehodit kable a vsetko funguje, displej a aj ovladanie ... Mne funguje zeleny a aj cerveny displej, prehodil som kable, otocil, zrezal a slape ... Skusal niekto natlacit do tejto dosky iny Firmware, ako Marlin ? Nasiel som, ze natlacili Repetier firmaware z Ultimakera (geeetech) a ze to slape ...

Neviem ako to kolega myslel, ze
prehodil som kable, otocil, zrezal a slape

Podla toho som pochopil, ze vymenil kable medzi SD a LCD potom zrezal zarazku, ktora zabranuje otoceniu konektora a nasledne ich otocil.
Ja sice neviem, kto tieto kable vyrabal (kupil som to uz hotove), ale ked pozeram to video tak Sakul ma tie kable k doske GT2560 pripojene tak, ze cerveny drot (kablu) ma pripojeny na opacnej strane konektoru ako ja. Ale zase aj na displeji to mam opacne, takze by to zrejme nemalo vadit.
Skusim este pomocou arduino mega flashnut bootloader
Uživatelský avatar
darebak
Chcíplotina
Chcíplotina
 
Příspěvky: 4
Registrován: pon 02. srp 2021 19:07:49

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod darebak » úte 03. srp 2021 14:09:53

Sakul píše:Tak rozhodně doporučuji přehrát ten bootloader. Máš desku Arduino MEGA, takže do ní nahraj ze složky Příklady program ArduinoISP (vše je již součástí Arduino IDE), pak propoj dle instrukcí uvedených v tom programu ArduinoISP s deskou GT2560 a nahraj bootloader pro desku ATMEGA2560. Pak ti již musí jít nahrát firmware přes USB. Jo a ještě mě napadá, že některé desky GT2560 měli Jumper, který se musel osadit, aby šel aktualizovat firmware. Takže to možní zkontroluj jako první.

V arduino ide 1.0.6 prejdem do

Kód: Vybrat vše
File -> Examples -> ArduinoISP

natiahne sa mi tento zdrojak
Kód: Vybrat vše
// ArduinoISP version 04m3
// Copyright (c) 2008-2011 Randall Bohn
// If you require a license, see
//     http://www.opensource.org/licenses/bsd-license.php
//
// This sketch turns the Arduino into a AVRISP
// using the following arduino pins:
//
// pin name:    not-mega:         mega(1280 and 2560)
// slave reset: 10:               53
// MOSI:        11:               51
// MISO:        12:               50
// SCK:         13:               52
//
// Put an LED (with resistor) on the following pins:
// 9: Heartbeat   - shows the programmer is running
// 8: Error       - Lights up if something goes wrong (use red if that makes sense)
// 7: Programming - In communication with the slave
//
// 23 July 2011 Randall Bohn
// -Address Arduino issue 509 :: Portability of ArduinoISP
// http://code.google.com/p/arduino/issues/detail?id=509
//
// October 2010 by Randall Bohn
// - Write to EEPROM > 256 bytes
// - Better use of LEDs:
// -- Flash LED_PMODE on each flash commit
// -- Flash LED_PMODE while writing EEPROM (both give visual feedback of writing progress)
// - Light LED_ERR whenever we hit a STK_NOSYNC. Turn it off when back in sync.
// - Use pins_arduino.h (should also work on Arduino Mega)
//
// October 2009 by David A. Mellis
// - Added support for the read signature command
//
// February 2009 by Randall Bohn
// - Added support for writing to EEPROM (what took so long?)
// Windows users should consider WinAVR's avrdude instead of the
// avrdude included with Arduino software.
//
// January 2008 by Randall Bohn
// - Thanks to Amplificar for helping me with the STK500 protocol
// - The AVRISP/STK500 (mk I) protocol is used in the arduino bootloader
// - The SPI functions herein were developed for the AVR910_ARD programmer
// - More information at http://code.google.com/p/mega-isp

#include "pins_arduino.h"
#define RESET     SS

#define LED_HB    9
#define LED_ERR   8
#define LED_PMODE 7
#define PROG_FLICKER true

#define HWVER 2
#define SWMAJ 1
#define SWMIN 18

// STK Definitions
#define STK_OK      0x10
#define STK_FAILED  0x11
#define STK_UNKNOWN 0x12
#define STK_INSYNC  0x14
#define STK_NOSYNC  0x15
#define CRC_EOP     0x20 //ok it is a space...

void pulse(int pin, int times);

void setup() {
  Serial.begin(19200);
  pinMode(LED_PMODE, OUTPUT);
  pulse(LED_PMODE, 2);
  pinMode(LED_ERR, OUTPUT);
  pulse(LED_ERR, 2);
  pinMode(LED_HB, OUTPUT);
  pulse(LED_HB, 2);
}

int error=0;
int pmode=0;
// address for reading and writing, set by 'U' command
int here;
uint8_t buff[256]; // global block storage

#define beget16(addr) (*addr * 256 + *(addr+1) )
typedef struct param {
  uint8_t devicecode;
  uint8_t revision;
  uint8_t progtype;
  uint8_t parmode;
  uint8_t polling;
  uint8_t selftimed;
  uint8_t lockbytes;
  uint8_t fusebytes;
  int flashpoll;
  int eeprompoll;
  int pagesize;
  int eepromsize;
  int flashsize;
}
parameter;

parameter param;

// this provides a heartbeat on pin 9, so you can tell the software is running.
uint8_t hbval=128;
int8_t hbdelta=8;
void heartbeat() {
  if (hbval > 192) hbdelta = -hbdelta;
  if (hbval < 32) hbdelta = -hbdelta;
  hbval += hbdelta;
  analogWrite(LED_HB, hbval);
  delay(20);
}


void loop(void) {
  // is pmode active?
  if (pmode) digitalWrite(LED_PMODE, HIGH);
  else digitalWrite(LED_PMODE, LOW);
  // is there an error?
  if (error) digitalWrite(LED_ERR, HIGH);
  else digitalWrite(LED_ERR, LOW);

  // light the heartbeat LED
  heartbeat();
  if (Serial.available()) {
    avrisp();
  }
}

uint8_t getch() {
  while(!Serial.available());
  return Serial.read();
}
void fill(int n) {
  for (int x = 0; x < n; x++) {
    buff[x] = getch();
  }
}

#define PTIME 30
void pulse(int pin, int times) {
  do {
    digitalWrite(pin, HIGH);
    delay(PTIME);
    digitalWrite(pin, LOW);
    delay(PTIME);
  }
  while (times--);
}

void prog_lamp(int state) {
  if (PROG_FLICKER)
    digitalWrite(LED_PMODE, state);
}

void spi_init() {
  uint8_t x;
  SPCR = 0x53;
  x=SPSR;
  x=SPDR;
}

void spi_wait() {
  do {
  }
  while (!(SPSR & (1 << SPIF)));
}

uint8_t spi_send(uint8_t b) {
  uint8_t reply;
  SPDR=b;
  spi_wait();
  reply = SPDR;
  return reply;
}

uint8_t spi_transaction(uint8_t a, uint8_t b, uint8_t c, uint8_t d) {
  uint8_t n;
  spi_send(a);
  n=spi_send(b);
  //if (n != a) error = -1;
  n=spi_send(c);
  return spi_send(d);
}

void empty_reply() {
  if (CRC_EOP == getch()) {
    Serial.print((char)STK_INSYNC);
    Serial.print((char)STK_OK);
  }
  else {
    error++;
    Serial.print((char)STK_NOSYNC);
  }
}

void breply(uint8_t b) {
  if (CRC_EOP == getch()) {
    Serial.print((char)STK_INSYNC);
    Serial.print((char)b);
    Serial.print((char)STK_OK);
  }
  else {
    error++;
    Serial.print((char)STK_NOSYNC);
  }
}

void get_version(uint8_t c) {
  switch(c) {
  case 0x80:
    breply(HWVER);
    break;
  case 0x81:
    breply(SWMAJ);
    break;
  case 0x82:
    breply(SWMIN);
    break;
  case 0x93:
    breply('S'); // serial programmer
    break;
  default:
    breply(0);
  }
}

void set_parameters() {
  // call this after reading paramter packet into buff[]
  param.devicecode = buff[0];
  param.revision   = buff[1];
  param.progtype   = buff[2];
  param.parmode    = buff[3];
  param.polling    = buff[4];
  param.selftimed  = buff[5];
  param.lockbytes  = buff[6];
  param.fusebytes  = buff[7];
  param.flashpoll  = buff[8];
  // ignore buff[9] (= buff[8])
  // following are 16 bits (big endian)
  param.eeprompoll = beget16(&buff[10]);
  param.pagesize   = beget16(&buff[12]);
  param.eepromsize = beget16(&buff[14]);

  // 32 bits flashsize (big endian)
  param.flashsize = buff[16] * 0x01000000
    + buff[17] * 0x00010000
    + buff[18] * 0x00000100
    + buff[19];

}

void start_pmode() {
  spi_init();
  // following delays may not work on all targets...
  pinMode(RESET, OUTPUT);
  digitalWrite(RESET, HIGH);
  pinMode(SCK, OUTPUT);
  digitalWrite(SCK, LOW);
  delay(50);
  digitalWrite(RESET, LOW);
  delay(50);
  pinMode(MISO, INPUT);
  pinMode(MOSI, OUTPUT);
  spi_transaction(0xAC, 0x53, 0x00, 0x00);
  pmode = 1;
}

void end_pmode() {
  pinMode(MISO, INPUT);
  pinMode(MOSI, INPUT);
  pinMode(SCK, INPUT);
  pinMode(RESET, INPUT);
  pmode = 0;
}

void universal() {
  int w;
  uint8_t ch;

  fill(4);
  ch = spi_transaction(buff[0], buff[1], buff[2], buff[3]);
  breply(ch);
}

void flash(uint8_t hilo, int addr, uint8_t data) {
  spi_transaction(0x40+8*hilo,
  addr>>8 & 0xFF,
  addr & 0xFF,
  data);
}
void commit(int addr) {
  if (PROG_FLICKER) prog_lamp(LOW);
  spi_transaction(0x4C, (addr >> 8) & 0xFF, addr & 0xFF, 0);
  if (PROG_FLICKER) {
    delay(PTIME);
    prog_lamp(HIGH);
  }
}

//#define _current_page(x) (here & 0xFFFFE0)
int current_page(int addr) {
  if (param.pagesize == 32)  return here & 0xFFFFFFF0;
  if (param.pagesize == 64)  return here & 0xFFFFFFE0;
  if (param.pagesize == 128) return here & 0xFFFFFFC0;
  if (param.pagesize == 256) return here & 0xFFFFFF80;
  return here;
}


void write_flash(int length) {
  fill(length);
  if (CRC_EOP == getch()) {
    Serial.print((char) STK_INSYNC);
    Serial.print((char) write_flash_pages(length));
  }
  else {
    error++;
    Serial.print((char) STK_NOSYNC);
  }
}

uint8_t write_flash_pages(int length) {
  int x = 0;
  int page = current_page(here);
  while (x < length) {
    if (page != current_page(here)) {
      commit(page);
      page = current_page(here);
    }
    flash(LOW, here, buff[x++]);
    flash(HIGH, here, buff[x++]);
    here++;
  }

  commit(page);

  return STK_OK;
}

#define EECHUNK (32)
uint8_t write_eeprom(int length) {
  // here is a word address, get the byte address
  int start = here * 2;
  int remaining = length;
  if (length > param.eepromsize) {
    error++;
    return STK_FAILED;
  }
  while (remaining > EECHUNK) {
    write_eeprom_chunk(start, EECHUNK);
    start += EECHUNK;
    remaining -= EECHUNK;
  }
  write_eeprom_chunk(start, remaining);
  return STK_OK;
}
// write (length) bytes, (start) is a byte address
uint8_t write_eeprom_chunk(int start, int length) {
  // this writes byte-by-byte,
  // page writing may be faster (4 bytes at a time)
  fill(length);
  prog_lamp(LOW);
  for (int x = 0; x < length; x++) {
    int addr = start+x;
    spi_transaction(0xC0, (addr>>8) & 0xFF, addr & 0xFF, buff[x]);
    delay(45);
  }
  prog_lamp(HIGH);
  return STK_OK;
}

void program_page() {
  char result = (char) STK_FAILED;
  int length = 256 * getch();
  length += getch();
  char memtype = getch();
  // flash memory @here, (length) bytes
  if (memtype == 'F') {
    write_flash(length);
    return;
  }
  if (memtype == 'E') {
    result = (char)write_eeprom(length);
    if (CRC_EOP == getch()) {
      Serial.print((char) STK_INSYNC);
      Serial.print(result);
    }
    else {
      error++;
      Serial.print((char) STK_NOSYNC);
    }
    return;
  }
  Serial.print((char)STK_FAILED);
  return;
}

uint8_t flash_read(uint8_t hilo, int addr) {
  return spi_transaction(0x20 + hilo * 8,
  (addr >> 8) & 0xFF,
  addr & 0xFF,
  0);
}

char flash_read_page(int length) {
  for (int x = 0; x < length; x+=2) {
    uint8_t low = flash_read(LOW, here);
    Serial.print((char) low);
    uint8_t high = flash_read(HIGH, here);
    Serial.print((char) high);
    here++;
  }
  return STK_OK;
}

char eeprom_read_page(int length) {
  // here again we have a word address
  int start = here * 2;
  for (int x = 0; x < length; x++) {
    int addr = start + x;
    uint8_t ee = spi_transaction(0xA0, (addr >> 8) & 0xFF, addr & 0xFF, 0xFF);
    Serial.print((char) ee);
  }
  return STK_OK;
}

void read_page() {
  char result = (char)STK_FAILED;
  int length = 256 * getch();
  length += getch();
  char memtype = getch();
  if (CRC_EOP != getch()) {
    error++;
    Serial.print((char) STK_NOSYNC);
    return;
  }
  Serial.print((char) STK_INSYNC);
  if (memtype == 'F') result = flash_read_page(length);
  if (memtype == 'E') result = eeprom_read_page(length);
  Serial.print(result);
  return;
}

void read_signature() {
  if (CRC_EOP != getch()) {
    error++;
    Serial.print((char) STK_NOSYNC);
    return;
  }
  Serial.print((char) STK_INSYNC);
  uint8_t high = spi_transaction(0x30, 0x00, 0x00, 0x00);
  Serial.print((char) high);
  uint8_t middle = spi_transaction(0x30, 0x00, 0x01, 0x00);
  Serial.print((char) middle);
  uint8_t low = spi_transaction(0x30, 0x00, 0x02, 0x00);
  Serial.print((char) low);
  Serial.print((char) STK_OK);
}
//////////////////////////////////////////
//////////////////////////////////////////


////////////////////////////////////
////////////////////////////////////
int avrisp() {
  uint8_t data, low, high;
  uint8_t ch = getch();
  switch (ch) {
  case '0': // signon
    error = 0;
    empty_reply();
    break;
  case '1':
    if (getch() == CRC_EOP) {
      Serial.print((char) STK_INSYNC);
      Serial.print("AVR ISP");
      Serial.print((char) STK_OK);
    }
    break;
  case 'A':
    get_version(getch());
    break;
  case 'B':
    fill(20);
    set_parameters();
    empty_reply();
    break;
  case 'E': // extended parameters - ignore for now
    fill(5);
    empty_reply();
    break;

  case 'P':
    start_pmode();
    empty_reply();
    break;
  case 'U': // set address (word)
    here = getch();
    here += 256 * getch();
    empty_reply();
    break;

  case 0x60: //STK_PROG_FLASH
    low = getch();
    high = getch();
    empty_reply();
    break;
  case 0x61: //STK_PROG_DATA
    data = getch();
    empty_reply();
    break;

  case 0x64: //STK_PROG_PAGE
    program_page();
    break;

  case 0x74: //STK_READ_PAGE 't'
    read_page();   
    break;

  case 'V': //0x56
    universal();
    break;
  case 'Q': //0x51
    error=0;
    end_pmode();
    empty_reply();
    break;

  case 0x75: //STK_READ_SIGN 'u'
    read_signature();
    break;

    // expecting a command, not CRC_EOP
    // this is how we can get back in sync
  case CRC_EOP:
    error++;
    Serial.print((char) STK_NOSYNC);
    break;

    // anything else we will return STK_UNKNOWN
  default:
    error++;
    if (CRC_EOP == getch())
      Serial.print((char)STK_UNKNOWN);
    else
      Serial.print((char)STK_NOSYNC);
  }
}




Chlapik vo videu ma iny zdrojak https://youtu.be/yVgReNF1KQA?t=82 a on odkomentoval

Kód: Vybrat vše
#define USE_OLD_STYLE_WIRING


V mojom kode to nikde nevidim, takze neviem ci ten zdrojak bootloadera je OK.
On to na doske mega2560 napychal do pinov 10,11,12,13
Tu https://youtu.be/yVgReNF1KQA?t=167 to pekne ukazal ktory pin je rest, mosi, miso a sck.
Ja vo svojom zdrojaku mam sice na zaciatku uvedene
Kód: Vybrat vše
// pin name:    not-mega:         mega(1280 and 2560)
// slave reset: 10:               53
// MOSI:        11:               51
// MISO:        12:               50
// SCK:         13:               52

ale mam to odkomentovat, zapojit podla toho?
Ak ano:
Tak potom staci nastavit - Tools -> serial number a Board ?
Klik na upload pre kompilaciu zdroja a burn bootloader ?
thx
Uživatelský avatar
darebak
Chcíplotina
Chcíplotina
 
Příspěvky: 4
Registrován: pon 02. srp 2021 19:07:49

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod Sakul » úte 03. srp 2021 15:55:44

Takže pro názornost jsem udělal video kde popisuji postup jak z Arduino MEGA udělat programátor. Takže jen ve zkratce:
1. Připoj Arduino MEGA k PC skrze USB.
2. Stáhni nejnovější verzi Arduino IDE a pust ho (takže cokoli novějšího než 1.8.13)
3. Otevři příklady a vyber příklad 11. Arduino ISP
4. Nahraj to tak jak to je do Arduino MEGA.
5. Propoj to s programovaným procesorem takto:
Arduino MEGA / Programovaný procesor (ATMEGA2560)
MOSI (pin51) / MOSI
MISO (pin50) / MISO
SCK (pin52) / SCK
+5V / +5V
GND / GND
pin 10 (reset) / Reset
6. V Arduino IDE v Nástroje/ programátor vyber Arduino as ISP
7. Pak klikni zapsat zavaděč.
8. Pokud to klapnemáš v procesoru ATMEGA2560 nahrán bootloader a je možno přes UART0 (USB) nahrávat firmware.
9. Pokud to selhalo kup si jinou desku co funguje.

Link na instruktážní video: https://uloz.to/file/WizBH3uu5E29/ardui ... MvZwEzLt==

Bohužel nemám víc co bych k tomu mohl říct.
Přílohy
Arduino MEGA ISP programátor.jpg
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Elektronika GT2560 a 4x20LCD pro Rebela II

Příspěvekod darebak » úte 03. srp 2021 18:56:43

very thx ;)

Podla tvojich instrukcii som tam nahral bootloader.
Potom som dosku mega 2560 odpojil a GT2560 pripojil cez USB k PC a FW isiel nahrat bez problemov (displej je pri flashi FW potrebny?).
Vdaka aj za instruktazne video (stahovanie trvalo dlho, takze ak som ho dotahal uz som mal v gt2560 novy FW).
Uživatelský avatar
darebak
Chcíplotina
Chcíplotina
 
Příspěvky: 4
Registrován: pon 02. srp 2021 19:07:49


Zpět na 3D Tisk


  • Advertisement

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 14 návštevníků

cron