Arduino kezdő segítség

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
prmpec
DrótVégénSzéndarab
Hozzászólások: 46
Csatlakozott: 2009. december 2. szerda, 7:00

Arduino kezdő segítség

HozzászólásSzerző: prmpec » 2009. december 16. szerda, 11:46

Szasztok!
Most kaptam készhez készülékemet (AVR-Duino/8 (USB) + AVR-Duino/Ext1 + LCD). A programozáskor máris problémákba ütköztem.
A leírás szerint Deicimila board-ot kell kiválasztani erre azonban a következő hibát kapom:
avrdude: Expected signature for ATMEGA168 is 1E 94 06
Double check chip, or use -F to override this check.

Persze tovább próbálkoztam. Most az ArduinoNG/ATmega8 board-ot kiválasztva szépen programozható. Azonban ha rajta van az Ext1 shield, akkor a programozás elbukik:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Látszik, hogy nyom egy reset-et, de a feltöltés helyett a már feltöltött program indul el.

Mit csinálok rosszul?

Avatar
boczhunor
Bitmanipulátor
Hozzászólások: 110
Csatlakozott: 2009. augusztus 5. szerda, 6:00

Szia.

HozzászólásSzerző: boczhunor » 2009. december 16. szerda, 14:44

Nincs időm írni,mert nagyon sietek,mivel elkell menjek.Ezért egy dokumentációból idézek:
I had the exact same problem, and even the "geniuses" at arduino.cc didn't help.
Unfortunately, I went through about a dozen chips in trying to find the solution,
thinking that I had fried all those chips. Here is the solution:

I expect what's happening is that the Arduino bootloader IDE incorrectly programs
some fuses under mysterious circumstances. In particular, it selects EXTERNAL CLOCK.
Without clock, the chip will appear to be completely dead and not respond to Avrdude.
What you need to do is to connect a TLL oscillator module (or any clock <20 Mhz) above a few
megahertz (I'm using 1.8 Mhz). Use a 4 pin 5V "metal box" clock oscillator (<20 MHz) you have handy,
power it with 5V on pin "14" of DIP14 footprint, GND on "7". Connect the clock output on
pin "8" to pin 9 OSC/clockin of the ATmega168 DIP 28 . You only need to do this temporarily while you
load the bootloader. It is possible you may damage your crystal, so I suggest to lift one leg
of it out of the hole. After the bootloader is programmed, solder the crystal leg back.

You can load the bootloader directly from within the Arduino software, using:
[tools][burn bootloader][/w parallel programmer]

This is the easiest and cheapest way to program the bootloader without spending money
on a USB AVRISP programmer or fooling with Avrdude command line (though it's useful to learn how while experimenting).
DAPA information here http://www.instructables.com/id/EXIM2VJJ51EUKIKWDF/ and here
http://www.arduino.cc/en/Hacking/ParallelProgrammer

Also,
my suggestions are to build the "DAPA" parallel port programmer, and either use
short wires (<20 cm) or use series termination resistors (33 to 330 ohm).
Also some people experienced problems on the led connected to digital 13, if your clone-board has that,
you may need to disconnect the led - just lift one leg of the resistor. If that doesn't
work (wires too long maybe), you can put a 30-300 pf capacitor to ground on sclk.
Contrary to what some have written, it is NOT possible to "kill" AVR chips with improper
programming that can only be undone with a "high voltage" Atmel programmer. This is bogus.

BTW I used version 11 of the Arduino IDE since version has some problems. Those guys don't
even check things before releasing them. "Beta" means you get what you pay for!
good luck!

Avatar
prmpec
DrótVégénSzéndarab
Hozzászólások: 46
Csatlakozott: 2009. december 2. szerda, 7:00

HozzászólásSzerző: prmpec » 2009. december 16. szerda, 15:05

Nem-nem. Szerintem az én problémám sokkal egyszerűbb kell legyen. Mondom, zsír új a vas, ráadásul tudom programozni, de csak a Shiled nélkül.

Most azt látom, hogy a soros kapcsolatot sem tudja értelmezni a processzor, de ez tutira nem a kristály hibája, mert akkor programozni sem tudnám.

Gyanítom, hogy inkább olyasmi lehet a megoldás, hogy meg kell adni azt a -F parancsot neki, amit kért. Vagy ilyesmi.

Ennek az AVR-Duinonak teljesen hülyebiztosnak kell lennie. Tehát én valami dokumentációs hiányosságra gyanakszom.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10097
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2009. december 16. szerda, 15:09

A sorosportnál a jumper ne legyen az EXT1 panelen fenn! Akkor a COM/RS485 él.

(A panelen a 2*3-as tüskesoron van, most a RS232 állásban)



Duino/8-ban ATMega8-as chip van, nem ATMega168. Azaz a mega8-as valamelyik board-ot kell kiválasztani...

Avatar
prmpec
DrótVégénSzéndarab
Hozzászólások: 46
Csatlakozott: 2009. december 2. szerda, 7:00

HozzászólásSzerző: prmpec » 2009. december 17. csütörtök, 12:01

Ez volt a helyes megoldás.
Vagyis:
1. Ext1 panelről a RS232/RS485 választó jumpereket (a programozáshoz) el kell távolítani.
2. mega8-as board-ot kiválasztva kell programozni.

Kössz,
Balázs

Avatar
prmpec
DrótVégénSzéndarab
Hozzászólások: 46
Csatlakozott: 2009. december 2. szerda, 7:00

usb-soros kommunikáció

HozzászólásSzerző: prmpec » 2009. december 17. csütörtök, 13:35

A többiek okulására:
A kommunikációs demók rendre elbuknak, különös tekintettel azok, amik Processing-ből kerülnek demonstrálásra.
A jelenség oka az, hogy a board reset-elése is usb-soros kommunikációval valósul meg. Vagyis a Processing-ben megnyitott soros port folyamatosan reset-eli a board-ot.
Ha Ext1 board-od van LCD-vel, akkor láthatod a reset-et: ekkor a kijelző felén teli karakterek jelennek meg.

Megoldás: Ha leveszed a board-on lévő jumbert-t, akkor ez a jelenség megszűnik, de ekkor programozáskor magadnak kell nyomnod a reset gombot.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10097
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2009. december 17. csütörtök, 15:52

A Processing/Wiring képes a soros portot nem lezárni, hanem újranyitogatni. Ez a CTS lábon át resetet generál...

Avatar
prmpec
DrótVégénSzéndarab
Hozzászólások: 46
Csatlakozott: 2009. december 2. szerda, 7:00

Binary size

HozzászólásSzerző: prmpec » 2010. január 13. szerda, 23:41

Sziasztok írtam egy kis progit avr-duino-8-ra, történetesen ~6200 byte lefordítva (arduino gui szerint), a max 7168. Feltöltéskor azonban az avrdude hibát jelez:

avrdude: verification error, first mismatch at byte 0x1800
0x53 != 0xff
avrdude: verification error; content mismatch


Ha faragok a progiból ~60 byte-ot, akkor viszont gond nélkül feltölti. Mi lehet ennek az oka?

Kössz.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10097
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2010. január 14. csütörtök, 7:28

A chipben valamiért írási hiba lép fel.
Ezlehet a soszori írás miatt, illetve a chip öregedése miatt is. :(
Nálam ez M128-as chipnél fordult elő, hogy egy blokkot (meghatározható helyen) nem tudott írni:(.

Avatar
kormen
DrótVégénSzéndarab
Hozzászólások: 16
Csatlakozott: 2009. február 11. szerda, 7:00
Tartózkodási hely: Budapest

Kissé értetlen vagyok...

HozzászólásSzerző: kormen » 2010. február 18. csütörtök, 10:50

Sziasztok!

Elnézést ha értetlen vagyok, de olvasgattam sokat, de még mindíg nem vagyok biztos mi az az AVR-Dunio. Fejlesztő kártya? I/O kártya? Programozó? Azt látom van belőle pár fajta...

Akkor mi is ez pontosan?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10097
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2010. február 18. csütörtök, 11:36

Alappanel, rajta AVR chip (ATMega8 vagy 168 vagy 328).
A PC fele csatlakozhat USB vagy sorosporton

Ez a sokféle alappanel oka...

Az alapon rajta van:
mikrokotroiler, soros/usb illesztő, tápfeszültség részek, sallangok(resetgomb, kvarc stb) és hüvelysor az egyedi kiegészítők csatlakoztatásához.


A kiegészítőpanel lehet pl.
- ethernetre : Eth1
- kiindulásra, gyakorolni: Ext1 (sokféle típusáramkör)
- hangkezelés: WaveShield
- egyedi fejlesztésre, kísérletezni: csupalyuk.


A programozó nem kell hozzá, a chip önmaga felprogramozására elő van készítve (ún bootloader is van benne).



De az Arduino az (egyik) keretrendszer is, amivel programozni, kezelni és játszani lehet vele.

Avatar
kormen
DrótVégénSzéndarab
Hozzászólások: 16
Csatlakozott: 2009. február 11. szerda, 7:00
Tartózkodási hely: Budapest

Ezer köszönet.

HozzászólásSzerző: kormen » 2010. február 22. hétfő, 11:05

Na így már kezd érthető lenni

Robert írta:Alappanel, rajta AVR chip (ATMega8 vagy 168 vagy 328).
A PC fele csatlakozhat USB vagy sorosporton

Ez a sokféle alappanel oka...

Az alapon rajta van:
mikrokotroiler, soros/usb illesztő, tápfeszültség részek, sallangok(resetgomb, kvarc stb) és hüvelysor az egyedi kiegészítők csatlakoztatásához.


A kiegészítőpanel lehet pl.
- ethernetre : Eth1
- kiindulásra, gyakorolni: Ext1 (sokféle típusáramkör)
- hangkezelés: WaveShield
- egyedi fejlesztésre, kísérletezni: csupalyuk.


A programozó nem kell hozzá, a chip önmaga felprogramozására elő van készítve (ún bootloader is van benne).



De az Arduino az (egyik) keretrendszer is, amivel programozni, kezelni és játszani lehet vele.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3358
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2010. március 4. csütörtök, 20:55

T. boczhunor!
Ha még nem ismered ezt? Ajánlom figyelmedbe:
Arduino:
http://forum.index.hu/Article/showArtic ... 1194a33b47
:wink:

Avatar
boczhunor
Bitmanipulátor
Hozzászólások: 110
Csatlakozott: 2009. augusztus 5. szerda, 6:00

Helló!

HozzászólásSzerző: boczhunor » 2010. március 4. csütörtök, 21:06

Helló. De ez meg mi? Tehát minek adtad ezt az oldalt? Mit csináljak vele? Nem lehet valamit rosszul írtál? És másnak akartad adni? :? :?:
Na helló.





Apropó. Jó sok gond és hibaüzenet került ide be. Nem tudom mért. Én 1000000000-szer programoztam vele és semmi gondom se volt. Most persze a Decimilia-ra gondolok. Egyébként egyszer nekem is volt hiba. Az volt,hogy nem ment át a bootloader. De azért mert nem tettem fel véletlenül a frissen instalált windowsra az FTDI USB Drivert.:D:D:D:D
Egyébként én terveztem magamnak saját Arduino boardot, a neve LFRDuino(Little Future Robot=robotépítő versenyeken ez a szlogenem) és hát módosítottam egy kicsit bootloaderen meg az Arduino fejlesztőkörnyezeten. Hát bevallom voltak hibák. A 18-as verzióban azért enyhültek a dolgok és tök elfogadhatónak vélem. Az LFRDuinoban a bootloader javításán kívül az LFRDuino nem igényel FTDI chippet ami jelentősen csökkenti az áramfogyasztást és hát a kölcségeket. Ami még plusz benne,hogy van rajta egy számológépből kiszedett kis napelem amely folyamatosan tölti az aksit. És hát SDM alkatrésszel kijött ugyanabba a méretbe min egy norm Arduino. A fejlesztésben még szeretném vízteleníteni lakkréteggel meg az Arduino terhelés altt elég lassú. Ezért már készül egy gyorsabbítás. Hát ez az ötlet az instructables nézésekor jutott az eszembe mikor megláttam ezt:
http://www.instructables.com/id/Arduino-is-Slow-and-how-to-fix-it/
Csak hát nagyon mostanába nincs idő mert hát készülök a Magyarok a Marsonra,igaz már csak a robot felöli mikrokontroller program, maradt. Az áramkörök és a többi program kész van. Hát meg még ott van a suli...
Minden esetre mindenkinek sok sikert kívanok és kevesebb errort!

Avatar
prmpec
DrótVégénSzéndarab
Hozzászólások: 46
Csatlakozott: 2009. december 2. szerda, 7:00

HozzászólásSzerző: prmpec » 2010. március 4. csütörtök, 23:49

meg az Arduino terhelés altt elég lassú. Ezért már készül egy gyorsabbítás.


Ez szép gondolat, de túlmisztifikálod a problémát. A leírás szerint a digitalWrite lassú, ezért direkt port írást javasol. Nosza! De az arduino erre is mutat uniformizált megoldást, csak bele kell kukkantani.

A digitalWrite függvény kódja elérhető, ha lassúnak találod írd át, vagy használd helyette a következőt:

Kód: Egész kijelölése

#include "pins_arduino.h"
uint8_t bitMask;
volatile uint8_t *portRegister;

// -- ezt emeld ki mondjuk a setup-ba
   bitMask = digitalPinToBitMask(pin);
   portRegister = portOutputRegister(digitalPinToPort(pin));

// -- ezt használd íráskor: LOW
    *portRegister &= ~bitMask;
// -- HIGH
    *portRegister |= bitMask;

(A kód a NewSoftSerial kódja alapján lett összeollózva.)

Csak hogy ne essék félreértés: Az Arduino "lassúsága" akkor merülhet fel, ha valaki nagy frekvenciás varázslásokat akar elkövetni. Ekkor kell alkalmazni a fönti hack-et. Az általad idézett cikk nagyon félrevezető. Szerintem a fazon keveri a micro-t a milli-vel. 1000 digitalWrite-ot 4 ezredmásodperc (millisec.) alatt megcsinál, vagyis másodpercenként 250ezret. Azért annyira ezt nem nevezném lassúnak.

PS: Nekem az összes hibaüzenetemet megoldotta egy garanciális csere, szóval mondhatom, hogy az AVR-Duino hardver teljesen stabil.
A hozzászólást 2 alkalommal szerkesztették, utoljára prmpec 2010. április 18. vasárnap, 22:05-kor.


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég