#1 2017-09-07 22:03:23

jirigazda
Member
Registered: 2017-01-28
Posts: 12

Arduino - nefukční nastavení pinů

Dobrý den,

po aktualizaci systému na REX 2.50.4 nefunguje nastavení pinů na připojeném Arduinu MEGA 2560. Vycházím při tom ze souboru X_MEGA2560hex_IO.

Při nastavení analogového vstupu (hodnota 6) na pinech AI0-AI7 funguje správně vždy pouze první pin s hodnotou 6. Např. při nastavení 0x66666666 funguje pouze pin AI0.

při nastavení:

0x66666660 funguje pin AI1
0x66600000 funguje pin AI6
analogicky všechny ostatní piny AI piny.

Jakákoliv jiná hodnota místo 0 zablokuje fungování pinu nastaveného na hodnot 6. Např. při nastavení 0x66600005 pin AI6 nefunguje.

Pokud použiji blok Arduino_MEGA2560 (Basic mask), piny fungují normálně, takže to není problém HW.

Můžete mi poradit v čem může být problém?

Děkuji

J. Gazda

Offline

#2 2017-09-12 08:36:20

jaroslav_sobota
Administrator
Registered: 2015-10-27
Posts: 527

Re: Arduino - nefukční nastavení pinů

Dobrý den,
rozumím tomu správně, že s blokem Arduino_MEGA2560hex ve verzi REXu 2.50.1 vše fungovalo správně a po přechodu na 2.50.4 to fungovat přestalo? Nebo jste při přechodu na novou verzi REXu chtěl přejít z Basic mask na Hexadecimal mask a narazil na tento problém?

Jinak děkuji za detailní popis problému, podívám se na to.

S pozdravem
Jaroslav Sobota

Offline

#3 2017-09-12 10:18:30

jirigazda
Member
Registered: 2017-01-28
Posts: 12

Re: Arduino - nefukční nastavení pinů

Dobrý den,

ano, je to tak, že s blokem Arduino_MEGA2560hex ve verzi REXu 2.50.1 vše fungovalo správně a po přechodu na 2.50.4 to fungovat přestalo.

S pozdravem

J. Gazda

Offline

#4 2017-09-13 12:20:27

jaroslav_sobota
Administrator
Registered: 2015-10-27
Posts: 527

Re: Arduino - nefukční nastavení pinů

Dobrý den,
vyzkoušel jsem to na Seeeduino Mega, protože Arduino Mega nemám po ruce, ale na žádný problém jsem nenarazil. Zde je testovací projekt, který, prosím, zkuste použít na vaší sestavě. U mě všechny vstupy A0, A2 a A3 ukazují korektní hodnoty.

Pak budeme vědět, kterým směrem pátrat dále.

S pozdravem
Jaroslav Sobota

Offline

#5 2017-09-17 10:48:21

jirigazda
Member
Registered: 2017-01-28
Posts: 12

Re: Arduino - nefukční nastavení pinů

Dobrý den, děkuji za zaslaný testovací projekt.

Bohužel vstupy se chovají stejně jako v mém projektu.

Při nastavení pinmodes_A0_A7 na 0x00006606 funguje pouze vstup A0, vstupy A2, A3 se chovají jakoby byly nastaveny na hodnotu 0: not connected.

Při nastavení 0x00006600 funguje pouze A2
při nastavení 0x00006000 funguje A3

Otázka: V REXduino_slave.ino je poznámka: "after updating bootloader, WORKS on Arduino MEGA2560 (see Nick Gammon's instructions at http://www.gammon.com.au/bootloader )".

Je potřeba provést update bootloaderu v souvislosti s novou verzí REX 2.50.4? Předchozí verze mně fungovala i bez update...

Děkuji

J. Gazda

Offline

#6 2017-09-18 08:53:07

jaroslav_sobota
Administrator
Registered: 2015-10-27
Posts: 527

Re: Arduino - nefukční nastavení pinů

Dobrý den,
děkuji za otestování. Musíme tedy krok za krokem:

  • REXduino_slave sketch jsem nahrával pomocí Arduino IDE 1.8.4.

  • REXduino_master jsem spouštěl na Raspberry Pi jak ve verzi REXu 2.50.4, tak v nejnovější 2.50.5.

  • Na A0 přivádím GND, na A2 3.3V, na A3 5V.

  • Na výstupu comm_status bloku REXduino je trvale hodnota 3, na chybových výstupech err_code a err_subcode se neobjevují žádné chyby.

  • Na AI_demux1:AIa dostávám 0, na AI_demux1:AIc dostávám 676 a na AI_demox2:AIa hodnotu 1023.

Prověřte, prosím, že máme vše stejně (až na poslední bod, předpokládám).

Pokud nenarazíte na žádný rozdíl, postupujte, prosím, dle Kapitoly 5 v příručce REXduino a aktivujte debugovací zprávy do logu REXu. Tím uvidíme veškerá data, která chodí mezi REXem a Arduinem a budeme snad o trochu chytřejší.

Provedl bych to sám, ale protože nejsem schopen chybu replikovat, potřebuji vaši spolupráci. Děkuji.

S pozdravem
Jaroslav Sobota

Offline

#7 2017-09-19 00:52:57

jirigazda
Member
Registered: 2017-01-28
Posts: 12

Re: Arduino - nefukční nastavení pinů

Dobrý den,

provedl jsem všechny kroky, vše mám stejné jako Vy - až na poslední bod, na AI_demux1:AIc dostávám 0 a na AI_demox2:AIa také hodnotu 0.

Při testování jsem zjistil, že na AI_demux1 AIc a AI_demox2:AIa se nakonec správné hodnoty objeví, ale až cca po třech minutách. Pokud změním vstupní úroveň napětí, opět dojde ke změně po této době. Změna vstupního napětí na A0 se projeví okamžitě.

System log je přiložen, nový start je od řádku 4053. Do syslogu jsem nechal zapsat všechna dostupná hlášení.

S pozdravem

J.Gazda

Last edited by jirigazda (2017-09-19 08:48:22)

Offline

#8 2017-09-19 12:19:18

jaroslav_sobota
Administrator
Registered: 2015-10-27
Posts: 527

Re: Arduino - nefukční nastavení pinů

Dobrý den,
děkuji za test a zároveň se omlouvám, u bloku REXLANG nebylo zaškrtnuto "Logging", takže log neobsahuje potřebné informace.

Zde je aktualizovaný testovací projekt, kde už je vše nastaveno a kam jsem přidal debug výpisy, abychom přesně věděli, co se děje. Stačí tedy nahrát na RPi a potom v RexDraw v menu Target->Configure system log zapnout logovací úrovně Info a Verbose v sekci Function block messages:
mini_system-log-rexlang-debug.png

V logu (v RexDraw menu Target->Show system log) byste pak měl vidět veškerou komunikaci mezi RPi a Arduinem, např. takto:
mini_rexduino_log.png

Nahrajte sem, prosím, výsledky vašeho vyšetřování, pak budeme pátrat dále.

Jinak už mám originál Arduino MEGA2560 a stále nejsem schopen chybu reprodukovat. Máte k RPi připojeny ještě nějaké další USB periferie?

S pozdravem
Jaroslav Sobota

Offline

#9 2017-09-19 17:34:45

jirigazda
Member
Registered: 2017-01-28
Posts: 12

Re: Arduino - nefukční nastavení pinů

Děkuji za nový testovací projekt.

Pořídil jsem si druhé Arduino MEGA 2560 R3 a otestoval ho taky. Podotýkám, že nové Arduino není zcela identický klon původního Arduina. Zároveň jsem testoval původní a nový testovací projekt. V původním projektu jsem se snažil nastavit všechno podle nového projektu, syslogy ale přesto vypadají odlišně, nicméně detaily syslogů mně moc neříkají...

Pro přehlednost:

První Arduino Mega = Arduino A
Nové Arduino Mega = Arduino B

Původní testovací projekt = Projekt A
Nový testovací projekt     = projekt B

Toto jsou výsledky:

Projekt A + Arduino A ...................... nefunkční - viz detailní popis včera ........... Syslog_A-Arduino_A.7z
Projekt A + Arduino B ...................... všechno funguje                           ........... Syslog_A-Arduino_B.7z

Projekt B + Arduino A ...................... všechno funguje                           ........... Syslog_B-Arduino_A.7z
Projekt B + Arduino B ...................... všechno funguje                           ........... Syslog_B-Arduino_B.7z

Žádné další periferie k USB RPi připojeny nemám.

Dá se říct, že jsme zprovoznili fungování původního Arduina A použitím nového projektu B. Mně osobně není jasné, v čem je projekt B odlišný od projektu A.... Nechám na Vás, jestli chcete investovat další čas a hledat příčinu rozdílného fungování. Pokud ano, rád udělám další testy.

Děkuji

S pozdravem

J.Gazda

Last edited by jirigazda (2017-09-19 23:07:59)

Offline

#10 2017-09-20 12:05:43

jaroslav_sobota
Administrator
Registered: 2015-10-27
Posts: 527

Re: Arduino - nefukční nastavení pinů

Dobrý den,
ještě prosím zkuste Projekt B + Arduino A, ale aktivujte tam i ostatní piny, tak jako jsou v Projektu A.

Z logu "A+A" vidím, že REX se ptá na A0 ("A 54 ;"), A2 ("A 56 ;") i A3 ("A 57 ;"):

...
REXLANG[00048,00805,0011]: 65 (0x41)
REXLANG[00048,00805,0011]: 54 (0x36)
REXLANG[00048,00805,0011]: 59 (0x3B)
REXLANG[00048,00805,0011]: 65 (0x41)
REXLANG[00048,00805,0011]: 56 (0x38)
REXLANG[00048,00805,0011]: 59 (0x3B)
REXLANG[00048,00805,0011]: 65 (0x41)
REXLANG[00048,00805,0011]: 57 (0x39)
REXLANG[00048,00805,0011]: 59 (0x3B)
...

ale dostává odpověď pouze na některé z těchto příkazů a navíc ne vždy:

...
19.9.2017	17:39:57.816	Info	REXLANG[01867,00798,0088]: 65 (0x41)
19.9.2017	17:39:57.816	Info	REXLANG[01867,00798,0088]: 57 (0x39)
19.9.2017	17:39:57.816	Info	REXLANG[01867,00798,0088]: 3 (0x3)
19.9.2017	17:39:57.816	Info	REXLANG[01867,00798,0088]: 255 (0xFF)
19.9.2017	17:39:57.816	Info	REXLANG[01867,00798,0088]: 59 (0x3B)
...

Důvod mi ale také není jasný. Bylo by potřeba se podívat logickým analyzátorem, co se na komunikační lince přesně děje. Někde po cestě se ztrácí data, ale nevím, zda už po cestě do Arduina nebo až při jejich zpracování na Arduinu nebo až na cestě zpátky z Arduina.

S pozdravem
J.Sobota

Offline

#11 2017-09-20 22:44:10

jirigazda
Member
Registered: 2017-01-28
Posts: 12

Re: Arduino - nefukční nastavení pinů

Dobrý den,

zkusil jsem Projekt B + Arduino A s nastavením pinů podle projektu A.

Výsledek: Arduino A se začne chovat jako v Projektu A, tzn. nefunguje správně...

Pro kontrolu jsem znovu otestoval Aruino B, funguje bez problémů.

Syslog_B-Arduino_A-1 a Syslog_B-Arduino_B-1 jsem nahrál do příloh.

Takže mně vychází, že je to problém hardware Arduina A. Proč se projevil při přechodu na nový systém je otázka, ale vzhledem k zanedbatelné ceně klonu považuji za zbytečné se jí dál zabývat. Pokud se problém neobjeví i u jiných uživatelů....

Děkuji za Váš čas a vstřícnost při hledání příčiny

S pozdravem

Jiří Gazda

Offline

Board footer

Powered by FluxBB