Kérdés:
Az egyedi Arduino tábla sípol és a folyamat lefagy, miközben feltöltök egy rajzot. Miért?
Ricardo
2014-02-12 07:10:47 UTC
view on stackexchange narkive permalink

A legfurcsább dolog egy önálló Arduino táblával történik, amelyet én terveztem és építettem. Az alaplap (amelynek vázlata az alábbiakban látható) a következő tulajdonságokkal rendelkezik:

  1. ATmega328P-vel rendelkezik, 5 V-os feszültségszabályozóval és szokásos áramkörökkel, ha önálló vezérlőnek van beállítva.
  2. Olyan eredménytáblát irányít, amelyben több 7 kijelzős számjegy van összekapcsolva a jobb oldali csatlakozókon (JP1 – JP12).
  3. Kurzor gombokkal van ellátva, amelyek feszültséglétrán keresztül vannak dekódolva az ANALOG_0 (A0) úton.
  4. Valós idejű órával rendelkezik, hogy időt tartson, amikor kikapcsol.
  5. RF vevő modulja van.
  6. UART fejléccel (JP17) rendelkezik, így soros port használatával programozhatom az alaplapot.
  7. Hangszóró van csatlakoztatva a 3. digitális tűhöz ( D3).

Controller schematics

Vázlatokat töltök fel egy RS232-TTL adapter segítségével, amelyet szintén felépítettem (sematikus ábrák is lent vannak) és egy Serial-to -USB kábel. A programozáskor a tábla nagyjából úgy viselkedik, mint egy Severino tábla.

enter image description here

A furcsa, hogy amikor vázlatot töltök fel, közepén szünetel, majd a hangszóró folyamatosan sípolni kezd. A következő avrdude üzenetekkel szünetel:

avrdude: 5.11-es verzió, összeállítva 2011. szeptember 2-án, 19:38:36 Szerzői jog (c) 2000-2005 Brian Dean, http: // www. bdmicro.com/ Szerzői jog (c) 2007-2009, Joerg Wunsch

  A rendszer egészére kiterjedő konfigurációs fájl a "C: \ arduino-1.0.3 \ hardware / tools / avr / etc / avrdude.conf "A Port használata: \\. \ COM1 A Programmer használata: arduino Átbocsátási sebesség: 115200  

Amikor megnyomom a reset gombot a táblán, az avrdude folytatja üzeneteinek kiadását (például az alábbiakban) , a hangjelzés leáll, a feltöltés folytatódik, és a vázlat sikeresen feltöltésre kerül a táblára.

  avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: Küldés: 0 [30] [20] ... üzenet és a feltöltés folytatódik és sikeresen befejeződik.  

Itt nincs kéznél a többi üzenet, de remélem, hogy megkapja az ötletet.

Tehát a kérdéseim a következők: Mi miatt szünetel a feltöltési folyamat?

  • Miért sípol a hangjelzés, amikor a folyamat szünetel?
  • Az IDE beállításaiban kapcsolja be a Verbose feltöltését. Ennek a naplónak némi betekintést vagy több nyomot kell nyújtania.
    A JP4 (automatikus visszaállítás) zárva van a soros átalakító kártyán? Azok az arduinosok, akiknek nincs ilyen luxusuk, megállnak, amíg vissza nem állítják őket, majd feltöltik a vázlatot. Ami a csipogást illeti, fogalmam sincs.
    Megpróbált diódát adni párhuzamosan az SP1-gyel? A hangszóró olyan, mint egy motor: az indukció visszavezethet áramot, a dióda hozzáadásával megvédhetjük. A hangszóró közvetlen meghajtása a tűről (nincs áramerősítés pl. Tranzisztorral) is problémát jelenthet a kártya számára.
    Hülye kérdés: Beprogramozta az ATmega328p-t boot betöltővel?
    @TheDoctor - Igen, a JP4 (automatikus visszaállítás) mindig zárva van.
    @jfpoilpret - Úgy gondoltam, hogy a hangjelzés indukciójának köze lehet a sípoláshoz. Megpróbálok betenni egy diódát. Ez nem egy hangszóró, ahogy azt a sematikus rajzok jelzik, hanem csak egy kis 5 V-os hangjelző. Átmásoltam azt az ötletet, hogy digitális tűről hajtsam végre valami pajzsról ...
    @TheDoctor - Igen, feltöltöttem egy bootloadert az MCU-ra. Vázlatok feltöltése rendben van, ha beteszem egy UNO táblába. És a feltöltés ezen a táblán is rendben van, kivéve a csipogást és a szünetet (de nem késik el, ami nagyon szép).
    @mpflaga - A részletes beállítás be van kapcsolva a feltöltéshez. Megpróbálom ellenőrizni, hogy a feltöltés során hol történik a probléma, de abban biztos vagyok, hogy amikor az avrdude megpróbálja elküldeni a kódot a táblára. Háromszor mondja a "Küldés" lehetőséget, majd szünetet tart. Egy Severino táblában van, amikor az automatikus visszaállítás sikertelen, általában ugyanazon a ponton, ahol megjelenik a "Küldés" üzenet, az időzítés kimarad, és a "nem szinkronban" üzenetet ad, és kilép. Ezzel a táblával csak ott lóg, amíg vissza nem állítom.
    "tökéletesen működik UNO-ban" - Ez hasznos információ. Tehát a táblának rendelkeznie kell egy aljzattal. Ha igen - Gyorsabb kísérlet segítségével meghatározhatja a forrást. Az IO-csapok mindegyikéhez hajlítsa ki a csapot, hogy ne érintkezzen. Úszó! Amint behelyezi az IC-t a foglalatába. Végül az összes csap lebegésével az áramkör nem lesz kérdéses. És mivel a késés / csipogás közötti pontnak le kell állnia És jelentse vissza.
    @mpflaga Minden táblámnak van aljzata! Eszembe sem jutott, hogy az ATmegáimat közvetlenül a táblákra forrasztjam! Ezenkívül nem hajlítanék ki szegeket a szegényekre ... ez olyan lenne, mintha megkínoznák őket. Most komolyan, ez egy jó ötlet. Kipróbálom, ha elég bátor vagyok.
    @jfpoilpret, ha a hangszóró valójában zümmögő (piezo), akkor nincs indukció, ezért nincs szükség diódára. Felejtsd el az eredeti megjegyzésemet.
    Az @Ricardo az avrdude teljes kimenetének másolása a feltöltés során segíthet megtalálni a lehetséges válaszokat.
    Egy barátom, aki fiatalkorában rengeteg elektronikával foglalkozott, egyszer azt mondta nekem: "ha nem úgy működik, ahogyan azt elvárhatnánk, adjunk hozzá egy leválasztó kondenzátort". Sokszor nagy sikerrel követtem ezt a tanácsot! A vázlatában azonban nem világos számomra, hová tehetne szétválasztási kapacitást. Kipróbáltad // a hangjelzővel? Kipróbálhat 2-et is (egyet alacsony frekvenciákhoz, egyet magas frekvenciákhoz): egy elektrolitikus legalább 1uF, egy kerámia 100nF. Legrosszabb esetben semmi hatása nem lesz :-)
    Három válaszokat:
    zmo
    2014-03-02 19:05:59 UTC
    view on stackexchange narkive permalink

    Mi miatt szünetel a feltöltési folyamat?

    Nos, a kérdésedhez fűzött összes megjegyzés alapján ez mindenképpen trükkös. Esetleg megpróbálhat hozzáadni egy leválasztó kondenzátort, amint azt a @jfpoilpret javasolja, bár sematikája rendben van nekem ... (esetleg kérjen egy áttekintést az EE SE oldalon).

    Azt is tanácsolom, hogy másolja át az avrdude parancsot az Arduino IDE kimenetéből (a tetején találja), és futtassa az alacsonyabb bitrátájú parancssorban:

      avrdude -v -v -v -v -C "C: \ arduino-1.0.3 \ hardware / tools / avr / etc / avrdude.conf" -P COM1 -patmega328 -U… -B3 -b115200  

    minél magasabb a -B értéke, annál alacsonyabb a bitrátája. és a -b értéket a rendszerbetöltőjének megfelelő sebességére ( biztos benne, hogy ez 115200? gyakrabban látja az 57600-at).

    helyesen állítsa be a biztosítékokat? Érdemes ellenőrizni a biztosítékok értékeit, és megnézni, hogy az órák helyesen vannak-e beállítva:

      avrdude -U lfuse: r: -: i -U hfuse: r: -: i -U efuse: r: -: i  

    amely a biztosítékok értékeit adja ki. Ezután az értékek olvashatóvá tételéhez tegye az értékeket az űrlap aljára a biztosítékkalkulátor webhelyén, miután kiválasztotta az Atmega328P MCU elemet a legördülő listából.

    Ellenőrizze még egyszer, hogy:

    • van-e elegendő mérete a rendszerbetöltőhöz (általában minél többet ad meg, annál jobb);
    • helyesen állította be a kristályok konfigurációja a tervedhez (ami nem biztos, hogy kompatibilis az alapértelmezett Uno beállításokkal, amelyeket az Arduino IDE állít be), annak ellenőrzése, hogy helyesen állítottad-e be a külső kristályt 16 MHz-en ... sípol a hangjelzés, amikor a folyamat szünetel?

      Ennek az az oka, hogy amikor a processzor nem állítja be a kimenetet, a nyilvántartások értékei meghatározatlan és kiszámíthatatlan állapotban vannak. Ami azt jelenti, hogy rendszerint megőrzi az utolsó értéket, amely valamilyen elektrosztatikus furcsaság miatt megváltozott, vagy megváltozott, vagy furcsa PWM kimenetet ad a közelben lévő óra hatása miatt.

      Tehát alapvetően: valami baj történik, amikor feltöltöd a kódodat, és ez a rossz dolog közvetett hatással van a hangra. Nem nagyon aggódnék ezek miatt a dolgokért, de inkább a szüneteltetés okáért.

      Sajnos nincs közvetlen válaszom az Ön számára, de jobb esetben néhány utat érdemes jobban megvizsgálnia. HTH

    +1 Köszönöm a tippeket! Nagyon hasznos. Kipróbálom mindet, és pár nap múlva jelentést teszek.
    Csak azt akartam tudatni veled, hogy megoldottam a problémát. Lásd erre a kérdésre adott válaszomat. Mindenesetre köszönöm!
    Ricardo
    2014-05-03 22:29:20 UTC
    view on stackexchange narkive permalink

    Végül rájöttem, hogy mi okozta a problémát: a DB9-Female csatlakozó 4-es érintkezőjének (DTR - Data Terminal Ready) visszaállítási jele 10 V-ig terjedt, mielőtt 0 V-ra váltott volna, és nagyfeszültségű programozást indított el az ATmegán. . Az alábbiakban egy hatókör felvétel mutatja a helyzetet:

    Scope shot showing voltage spike to 10V

    A sárga nyom DTR jel, míg a zöld nyom a RESET jel az ATmega-n.

    Az Atmel Atmel AVR042: AVR hardvertervezési szempontokat alkalmazó megjegyzése szerint hozzá kell adni egy ESD diódát az ATmega RESET code közé. > és Vcc , hogy megakadályozzák a visszaállító jel nagyfeszültségű programozási mód elindítását, például:

    Recommended RESET pin connection for ATmegas

    Egy ilyen kis jeldióda hozzáadása után (1N4148), mint az alkalmazás megjegyzésének ajánlása, kijavítottam a problémát. Lásd az alábbiakban a dióda hozzáadása után készített felvételt.

    Scope shot after fixing the board

    Most eltűnt a 10 V csúcs.

    Ez trükkös volt !! De soha nem tudtam megtalálni, mi a baj kutatások és megfelelő eszközök nélkül. A hatókörbe tartozó pénz jól elköltött pénz !!

    Ez azért következik be, mert a visszaállítási sorban nincs olyan szintű fordító, amelyet a soros adatsorra alkalmaznak. A legtöbben egy szintfordítót használnak, és ennek a csatornáján keresztül futtatják a visszaállítást.
    @Chris - Igen, emlékszem, hogy azt mondtad, hogy a 2. MAX232 átalakítót használjam ennek kijavítására. Megnézem még egyszer és megnézem, hogy sikerül-e kijavítanom ezt a tervet. Köszönöm!!
    Ricardo
    2014-04-01 17:24:59 UTC
    view on stackexchange narkive permalink

    Nem vagyok biztos benne, de a probléma az átalakító kártya automatikus visszaállításának funkciójával is összefüggésben lehet.

    Az átalakító kártya kialakítását az Arduino Severino oldalról másoltam át. és a kézikönyve szerint a soros kommunikációt 19 200 bps-re kell állítani, hogy működjön az automatikus visszaállítás.

    Győződjön meg arról, hogy a számítógép COM portjának sebessége be van állítva. 19200 bps-ig, különben az automatikus visszaállítás nem fog megfelelően működni.

    Nos, 115 200-at használok, tehát ez biztos probléma lehet.



    Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
    Loading...