Keresés

Részletes keresés

ruzsa janos Creative Commons License 2017.06.19 0 0 2953

az arduinonál pl írja, hogy ha valaki az egyik arduinoval akarjaa  másikat programozni ISP-n, akkor be kell szerelni egy 10 uF-os szűrőkondit a tápra.

csak azt nem értem, miért mindig ugyanott jelentkezik a hiba a memóriában....

az infót meg köszönöm

Előzmény: barkócza (2952)
barkócza Creative Commons License 2017.06.19 0 0 2952

Nem hiszem, hogy rossz lenne  a chip-ed, nagyon valószínűtlen. Arra gondolok, hogy az ilyen kínai utángyártmányok kispórolnak egy csomó dolgot, pl. a tápfesz szűrőkondenzátorait, vagy nem olyan kerül bele, amilyen kéne. Vagy a tápegységed nem megfelelő esetleg, ellenőrizd le. A másik persze az, amit már írtam, hogy az ISP-d által kiadott jeleken az élek nem elég élesek. Nem tudom, milyen kábelt adnak hozzá, de próbálj meg minél rövidebb kábelt használni.

 

Az Atmel Studio három fájlformátumot tud kezelni, Intel, Motorola, és Generic. Alapból Intel-re fordít, ennek a leírását itt megtalálod a Wikin. A többi is meglesz, ha rákeresel. Ezek igazából nem bináris, hanem szövegfájlok.

Előzmény: ruzsa janos (2951)
ruzsa janos Creative Commons License 2017.06.19 0 0 2951

az UNO R3 panelom van, 328P vezérlővel, felületszerelt kivitel. Rendeltem most 2 darabot hogy kicseréljem, remélhetőleg ezt még nem hamisítják...

azóta megpróbáltam beleírni egy hosszabb programot az ISP-vel. belement, de szerencsére ez a programozó GUI úgy van megcsinálva, hogy vissza is ellenőrzi, és itt már hibát jelztett. Vagyis a bootloader területen van hibás szektor (mindig ugyanott), meg itt is van. Ebből arra gondolok, hogy a chip mindenképpen meghalt, viszont ha kicserélem, akkor még ISP programozással tudom használni a panelt - legfeljebb ha más része is sérült, akkor nincs többé USB programozás.

Van esetleg egy emészthető leírásod arról, hogyan épül fel a programozónak adott hex fájl, illetve a visszaolvasott fájlok? 

Az arduino klón nincs védve, ezért egy működő példányből vissza tudnám szerezni a bootloadert, de az már látom, hogy a beírt és a visszaolvasott hex nem teljesen azonos szerkezetű.

Előzmény: Gesztenye100 (2949)
barkócza Creative Commons License 2017.06.19 0 0 2950

Bocs, ez igazából én voltam, csak nem figyeltem.

Előzmény: Gesztenye100 (2949)
Gesztenye100 Creative Commons License 2017.06.19 0 0 2949

Az Atmel valóban word-ben címzi a programmemóriát. Melyik vezérlő van az áramkörödben?

 

A felprogramozásnál általában érzékeny arra, hogy szépek és gyorsak legyenek a felfutó élek, egyébként előfordulnak ilyen-olyan hibák. Ebben van különbség az egyes ISP áramkörök közt. Meg, persze, érdemes minél rövidebb madzagot használni.

 

Az xmega előtt saját felprogramozót használtam, hol printerporton keresztül (+AHC244 jelformálásnak), hol egy FT232R USB kontrollert. A felprogramozó áramkört kábel nélkül cstlakoztattam a nyákhoz, nem volt vele soha probléma.

 

Hex editornak a Norton commander egyik utánérzését szoktam használni, én szeretem. Sőt, régebben még a programot (assemblerben) is ezen írtam, és parancssoros fordítót használtam. 

Előzmény: ruzsa janos (2948)
ruzsa janos Creative Commons License 2017.06.18 0 0 2948

Nos, az UNO csak részben élte túl a műveleteket (de uyge a tudomány érdekében nincs az az ár, ami túl magas lenne...), mert megsérülta bootloadere,illetve úgy néz ki, inkább a memória, valahol a 7A80 címnél - vagyis éppen a bootloader tartományban. Töröltem az egészet. Amikor visszatöltöm rá a bootloadert (adafruitról, arduinoról, mindenhonnan) akkor 5-ből négyszer memóriahibát jelez kb ugyanazon a címen. Aztán ötödjére működik az ellenőrzés, de a programozásnál már beakad, nem tud programot betölteni. Ha az ISP-n töltök fel programot, az működik -de valószínűleg nem éri el azt a hibás címtartományt.

Segítenétk nekem valamiben?

Az ISP programozónak ugye megmondom, honnan kezdődik a boot-rész, de az 3800 - 3F00 tartomány, vagyis kb a memória felétől. Ehhez képest a bootloader a programban a 7800 címtől kezdődik. Egy helyen azt találtam, azért, mert az ATMEL itt wordben számol , vagyis 2 byteban, és akkor a cím valóban a fele, mint byteban. Ez így lenne? Illetve, azt jól gondolom, hogy manuális bootloader töltéskor előbb

- törlöm a teljes tartalmat - ezzel nyitom a lockbiteket, megengedi az írás

- betöltöm a bootloadert

- zárom a lockbitet a bootloader területen

- betöltöm a programot (bootloaderrel USB-n vagy a programozóval az ISP-n)

- zárom (ha akarom) a lockbiteket a programrészen. és akkor utána már csak törléssel tudom olvasni/továbbírni a chipet.

 

Van olyan hex editor, amivel egyszerűen lehet az ATMEL chip hex fájljait szerkeszteni? Egy egyszerű editor nem tud mit kezdeni a sorok elejére írott címekkel. 

ruzsa janos Creative Commons License 2017.06.18 0 0 2947

azannya, és azért a 480 forintért legalább jelölve van a kábelen az 1-es láb :) (mert az enyémen nincs)

Előzmény: halaloszto (2945)
ruzsa janos Creative Commons License 2017.06.18 0 0 2946

még annyit, hogy az Arduino UNO és a NANO (klón) panelon biztosan működik az ISP kiolvasás. (Csak mondjuk nem kell azt hinni, hogy ugyanúgy állnak a csatlakozók a 6-pólusú aljtzatban. Mert fordítva. De még ettől sem halt meg :) )  

Előzmény: ruzsa janos (2944)
halaloszto Creative Commons License 2017.06.18 0 0 2945

nem, a legalja az ez: http://www.ebay.com/itm/USBASP-USBISP-AVR-Programmer-Adapter-10-Pin-Cable-USB-ATMEGA8-ATMEGA128-Arduino-/310506909410?hash=item484ba76ee2:g:llAAAOSwuMZZKUz7

 

és működik! annyira primitív, hogy nem tudja a protokollt amit minden atmel programozó, olyan progi kell, ami direkt ezt ismeri. amúgy nagyon szép történet, egy német manusz (http://www.fischl.de/usbasp/) tervezte és írta a fw-t, a kínaiak meg elkezdtek ötforintért hw-t gyártani hozzá.


Vajk

Előzmény: ruzsa janos (2944)
ruzsa janos Creative Commons License 2017.06.18 0 0 2944

ATMEL PROGRAMOZÓ
Hátha valakit még érint a kezdők közül, mint magam is vagyok:

Rendeltem egy egyszerű AVR chip programozót: USBTiny USBtinyISP AVR ISP Programmer 6/10 Pin Bootloader for Arduino UNO MEGA ami valószínűleg mindennek a legalja a maga 928 forintos árával. Ez az Adafruit USBtinyISP nevű készülékének a klónja.

Driver: https://learn.adafruit.com/usbtinyisp/drivers

Telepítés után az AVRDUDE programmal működ(-ne), ami egy kimondottan programozóknak készült dos-os alkalmazás. http://savannah.nongnu.org/projects/avrdude 

windows 7 professional rendszeren viszont nagyon jól működik az AVRDUDE alapján a  Bitburner grafikus felület.

 

Törölt nick Creative Commons License 2017.06.16 0 0 2943

Ma jött meg a Made in China Mega. Gond volt vele, mert nem csatlakozott az USB portra. Körülnéztem a fórumokon és kiderült, hogy a kínai alaplaphoz le kell tölteni installálni a drivert. Utána COM7 porton bejelentkezett. Ha valaki szintén kínai MEGA 2560-at vesz, akkor a drivert innen töltheti le:

 

http://www.wch.cn/download/CH341SER_ZIP.html

Törölt nick Creative Commons License 2017.06.11 0 0 2942

Megy! 

 

Tx:

 

#include <SoftwareSerial.h>
#include "RS485.h"

SoftwareSerial RS485Serial(0, 1); //RX, TX

int byteReceived;
int byteSend;

void setup()
{
Serial.begin(9600);
Serial.println("SoftwareSerial remote loop example");

pinMode(Pin13LED, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
RS485Serial.begin(28800);
}

void loop()
{
digitalWrite(13, HIGH);
if (Serial.available())
{
byteReceived = Serial.read();

digitalWrite(4, HIGH);
RS485Serial.write(byteReceived);

digitalWrite(13, LOW);
delay(1000);
digitalWrite(4, LOW);
}

if (RS485Serial.available())
{
digitalWrite(13, HIGH);
byteReceived = RS485Serial.read();
Serial.write(byteReceived);
delay(1000);
digitalWrite(13, LOW);
}
}

 

 

 

Rx:

 

#include <SoftwareSerial.h>
#include "RS485.h"

SoftwareSerial RS485Serial(0, 1);

int byteReceived;
int byteSend;

void setup()
{
Serial.begin(9600);
Serial.println("Serial data");

pinMode(13, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
RS485Serial.begin(28800);
}

void loop()
{
if (RS485Serial.available())
{
byteSend = RS485Serial.read();
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);

digitalWrite(4, HIGH);
RS485Serial.write(byteSend);
delay(1000);
digitalWrite(4, LOW);
}
}

 

Igaz, nem tudom, hogy mi, mert szkóppal még nem néztem rá. De, ha lekapcsolom a tápról az Rx-et, akkor megszűnik a kommunikáció, amit a Tx LED állapota mutat, nem villog. 

Törölt nick Creative Commons License 2017.06.09 0 0 2941

Végülis Profnak címeztem a kérdést, de tőled is elfogadom a választ. Mindegy kitől tanul az ember, ha okosabb :-) 

Előzmény: Törölt nick (2940)
Törölt nick Creative Commons License 2017.06.09 0 0 2940

Lehet-e külön tesztelni őket? Arra gondolok, ha csak a master vezérlőt és 485 modlut programozom fel és helyezem feszültség alá, akkor is lennie kell mérhető jelnek? Persze csak az után, hogy a leírtak szerint kimértem az alkatrészeket.

(Bocs, de azért kérdezlek, mert vasárnapig semmi időm ezekkel a cuccokkal foglalkozni.)

Nem mondom, hogy kínai cuccokkal nem szívtam meg. Pl. rendeltem egy igéretes oszcillátort, ami a reklám szerint 100kHz-1MHz-ig működik. Valóban, működik is, de 600kHz-től, hogy úgy mondjam, erősen logaritmikus, azaz, 2-3° poti elfordításra több száz kHz-et ugrik. Szép színes, jól mutat a polcon, hangfrekire jó lesz :-)

Előzmény: Vargham (2939)
Vargham Creative Commons License 2017.06.09 0 0 2939

Kínából jött már többször hibás cucc. Lábak nincsenek bekötve, kivezetve, rossz helyen van a felírat, a vezetősáv nem megy át az IC alatt, fordítva beültetett alkatrészek, stb. Ez egyértelműen a minőségbiztosítás és tesztelés hiányának tudható be. Simán küldenek 20 db egyformán rossz cuccot. Sose tesztelték...

Előzmény: Törölt nick (2938)
Törölt nick Creative Commons License 2017.06.09 0 0 2938

Köszönöm a jótanácsokat!

Műszerek vannak, szkóp is.

Arra nem is gondoltam, hogy lehetnek akár gyári hibások is a modulok.

Előzmény: Prof (2937)
Prof Creative Commons License 2017.06.08 0 0 2937

Szia,

Először ellenőrizni kell, hogy a modulok úgy vannak-e kötve, mint ahogy az a rajzon van, stimmelnek-e a feliratok stb. (Nekem van olyan DS18B20 modulom, amin az összes felirat rosszul van.)
A következő rész annak ellenőrzése, hogy az UNO--modul vezetékelés, a szoftverekben a lábak deklarálása megfelelő-e.

Aztán jön a mérés, logikai analizátorral vagy oszcilloszkóppal. Előbbi olcsóbb valamivel, utóbbi meg okosabb, bár a célnak mindkettő nagyjából megfelel. Ha ez nem áll rendelkezésre, akkor csak a try-and-error módszer marad, vagyis próbálkozni kell különböző könyvtárakkal, különböző felállásokkal stb.

Ezen túl nem nagyon van ötletem, a kód és a kapcsolás a leírtak alapján láthatóan működik, működnie kell.

Előzmény: Törölt nick (2936)
Törölt nick Creative Commons License 2017.06.08 0 0 2936

Köszönöm!

A példádban lévő kapcsolást is megcsináltam a hozzá mellékelt szoftverekkel és az sem megy. Igaz, a busz végére nem tettem se lezáró, se le- és felhúzó ellenállásokat, mivel azok a kis modulokba be vannak építve. A buszon két UNO van.

A modul rajza:

innen: https://arduino-info.wikispaces.com/RS485-Modules

Előzmény: Prof (2935)
Prof Creative Commons License 2017.06.07 0 0 2935

Mert ez nem RS485 protokoll.
A Serial alap esetben (pl. Uno, Nano stb.) a soros kommunikációra van fenntartva (az IDE termináljára küld és onnan fogad). Nyilván használható két kártya között is adatkommunikációra, erre is millió példa van a neten. Ha két kártyát megfelelő módon kötsz össze, ezzel az eljárással, amit a példában hoztál, tudsz közöttük kommunikációt csinálni.

Az RS485 kicsit más. Nem túl részletes és gyors keresés eredménye, de hátha: https://arduino-info.wikispaces.com/SoftwareSerialRS485Example

Ehhez viszont hardver kell.

Előzmény: Törölt nick (2934)
Törölt nick Creative Commons License 2017.06.05 0 0 2934

Miért nem megy? Ez és még más hasonló RS485 kommunikációs programok csak az Arduino IDE soros monitorával hajlandók kommunikálni. Ha leválasztom az USB portról és önálló tápot adok neki, meg se nyekken.

 

int enablePin = 2; // use pin 2 for enable pin

void setup() {
// initialize serial:
Serial.begin(9600);
// setup enable pin for server (always high)
pinMode(enablePin, OUTPUT);
delay(10);
digitalWrite(enablePin, HIGH);
}

void loop() {
// send message to slave ("A") with different value
for (int i = 0; i < 5; i++) {
switch (i) {
case 0 : Serial.println("A1000"); break;
case 1 : Serial.println("A0100"); break;
case 2 : Serial.println("A0010"); break;
case 3 : Serial.println("A0001"); break;
}
delay(2000);
}
}

ruzsa janos Creative Commons License 2017.06.05 0 0 2933

valahogy továbbra sincs kedve az arduino "rendes" programfelületét használni (valaki azt írta, olyan, mintha a McDonaldsban akarnád megtanulni a főzést...), használom  a modult, mert kényelmes, hogy nyákon van, viszont néha jó lenne belenézni egy két library assembly kódjába, már csak ötletek miatt is.

van olyan forrásotok, ahol ilyenek vannak? pl most éppen a "wire" érdekelne.  

ruzsa janos Creative Commons License 2017.05.28 0 0 2932

koszonom!

 

Előzmény: Prof (2931)
Prof Creative Commons License 2017.05.28 0 0 2931

Ez az új (1.4 utáni) Arduino IDE-vel nem működik.
Ez az Atmel AVRISP-mkII-vel műszaki tekintetben többé-kevésbé azonos: https://www.hestore.hu/prod_10035315.html# Atmel Studioban látod a Fuse biteket, tudsz teljes másolást (clone) csinálni stb.

Az Arduino IDE-vel nem fogsz tudni Fuse bit-eket olvasni és a kódot sem tudod kiolvasni (pláne nem visszafordítani olvasható kódra).

Előzmény: ruzsa janos (2930)
ruzsa janos Creative Commons License 2017.05.27 0 0 2930

jól gondolom, hogy pl az arduino NANO-ban a "normális" USB- s programozásra az RX/TX lábakat használja, és nem a MOSI/MISO lábakat, tehát valószínűleg ezért nem lehet kiolvasni a tartalmat, és akkor valószínűleg a FUSE-okat sem lehet piszkálni. Következő kérdés: ajánljatok egy nagyon egyszerű (olcsó) programozót is, ami képes erre. ilyet találtam: https://www.banggood.com/USBtinyISP-AVR-ISP-Programmer-Bootloader-USB-Download-Interface-p-929287.html?rmmds=search

 

Előzmény: ruzsa janos (2928)
Törölt nick Creative Commons License 2017.05.27 0 0 2929

Megmondom őszintén, elég sokat bírkóztam az ötleteddel, aztán sikerült is túlbonyolítanom a progit. A végén mégis az előző elgondolás győzött. Egy olvtárs segített a Tavir Fórumon és kiemelte a szükséges részletet, ez már jól működött, több bemenetre is:

 

int buttonStateRising=1;
int buttonRisingEdge = 1; 
int lastButtonStateRising = 1; 
...

//Here starts the code for detecting a rising edge on pin 11
buttonStateRising = digitalRead(11);
  if (buttonStateRising != lastButtonStateRising) {
    if (buttonStateRising == LOW) {
      buttonRisingEdge = 0;
      Ide teszed a te feladataid megoldását
      Serial.println("There was a rising edge on pin 11");
    }
  }

 

Végülis ebben is változóba van mentve a bemenet állapota. Csak a Serial.println parancssor helyére a végrehajtandó programot írtam be.

De azért kösz a segítséget :-)

Előzmény: tibi-d (2918)
ruzsa janos Creative Commons License 2017.05.27 0 0 2928

akkor összefoglalnám, amit ebből leszűrtem:

- az Arduino-n lévő interfész, meg a benne lévő bootloader csak egyirányú kommunikációra alkalmas, adat BETÖLTÉSRE (én a PICIKIT2-t használom PIC-hez, ott ez nem így van)

- az ATMEL chipekhez is létezik olyan eszköz, ami be is ír, meg vissza is olvas.

- az Arduino modulok ugyan nem használhatók kiolvasásra, de a rajta lévő chipet egy "rendes" programozóval ki lehet olvasni

 

Én magam nagyon alapszinten játszom vele, bár készítettem már olyan eszközt, ami az adott célra nagyon is jl használható (mondjuk eredetileg PIC-el), viszont egyszerűen nincs időm a nyákkal vacakolni, ezért kezdtem el egyáltalán az Arduinot.

 

Az arduinot (klónt) NEM a saját programnyelvén programozom, mert van egy AVR simulator nevű programom (megvásárolva :)) http://www.oshonsoft.com/, ami egyszerűbb. Ez hex fájlt generál, a betöltésre meg az XLOADER-t használom.

 

És akkor újra a kérdés, és higgyétek el, nem lustaságból, egyszerűen nincs időm rá, hogy kikísérletezzem (viszont mondjuk canon javítás területen pontosan így szoktam segíteni...) : megmondaná valaki, hogy pl. egy xloader progival van e olyan lehetőség, hogy azokat a számomra szükséges fuse-okat úgy beállítsam, hogy többé ne lehessen kiolvasni az ATMEL chipet, de továbbra is lehessen újraprogramozni?  Gondolok itt arra, hogy egy kis asm-szekvencia, amit beillesztek a programba, ami a hex-szel együtt átmegy és a programozás zárásaként ezt megoldja? 

tibi-d Creative Commons License 2017.05.26 0 0 2927

Köszi, ma is tanultam valamit.

Előzmény: Vargham (2926)
Vargham Creative Commons License 2017.05.26 0 0 2926

> Ez egy profi programozónak jelenthet valamit, de egy kezdőnek nem mond semmit.

Ezt írtam én is. Lehetséges, de egy kezdő nem ér vele semmit. De ettől még nem lehetetlen...

> A profi nem is kezd Arduinot programozni.

Néha jól jön az, ha gyorsan össze lehet dobni valamit, kipróbálni egy ötletet, stb.

Előzmény: tibi-d (2925)
tibi-d Creative Commons License 2017.05.26 0 0 2925

Ez egy profi programozónak jelenthet valamit, de egy kezdőnek nem mond semmit. A profi nem is kezd Arduinot programozni.

Előzmény: Vargham (2924)
Vargham Creative Commons License 2017.05.26 0 0 2924

Ha nincs letiltva a kiolvasás, akkor ki lehet olvasni. Kell egy ISP programozó (pl AVR dragon), meg mondjuk az Atmel Studio. Egy hex fájl lesz az eredmény, amit aztán vissza lehet alakítani gépi kóddá. Aki csak Arduino sketch-et látott eddig, annak ez nem fog sokat segíteni.

Előzmény: tibi-d (2922)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!