Fórum témák
» Több friss téma |
WinAVR / GCC alapszabályok: 1. Ha ISR-ben használsz globális változót, az legyen "volatile" 2. Soha ne érjen véget a main() függvény 3. UART/USART hibák 99,9% a rossz órajel miatt van 4. Kerüld el a -O0 optimalizációs beállítást minden áron 5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás 6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et Bővebben: AVR-libc FAQ
Tegyél be egy szintillesztést 2db FET-tel, egyik felét 5V-ra másik felét 3V-ra felhúzva, és mindenki happy.
Azért lesz kb 3.8V, mert az i2c bemenet védődiódáján(+0.6V) keresztül folyik a felhúzó ellenállás villanya a 3.3V tápba.... Én nem hagynám így...
Ismereteim szerint ... Ez az ATMega csip tudtommal a 3.3V-ot már egyértelmű magasnak érzékeli. Az I2C protokollban a PIN-ek csak lehúzzák a vonalat, sose húzzák fel - azt a felhúzó ellenállás csinálja. Tehát ha a felhúzót a 3.3V tápra teszed az 5V helyett, akkor minden működni fog, és minden a speckón belül marad. és még bonyolultabb sem lesz semmi.
A 3.8V a 3.3V-nak a 115%-ka, tehát 15%-kal magasabb feszültség van lábakon. Minden adatlapon megadott feszültségnek van toleranciája. Ez a 0.5V pedig valószínűleg a dióda, ami a pin-ről a táp felé mutat. Tehát te most kicsit megtáplálod a pin-en keresztül a 3.3V-os tápot (kevesebbet fog a stabilizátor dolgozni). Ha mindig van annyi fogyasztásod, hogy a felhúzó ellenálláson kb. 2V essen (kiszámolhatod az áramot), akkor sosem lesz a 3.3V-os vonalodon 5V. Lehet, hogy egy LED elég, vagy egy kicsi ellenállás. Szerintem nem gond. Amikor le van húzva a vonal GND-re, akkor azonos ellenállásokat összehasonlítva az 5V-os tápból kicsit több áram folyik/folyhat. De alap esetben a pin-en levő védődióda teszi a dolgát. Én így hagynám. Olyan meg nincs, hogy 2 év múlva meg fog pusztulni... Vagy megpusztul gyorsan (mondjuk 1 hónap használat után), vagy nem lesz baja (vagyis más baja lesz).
A hozzászólás módosítva: Jan 20, 2022
Idézet: „Tisztában vagyok vele hogy az ESP32 alapból 3,3-on megy. De nekem mégis kellett a Mega.” Azt kérdeztem, hogy a Mega miért nem 3,3 voltról megy.
Én vagyok a béna vagy levették az Atmel (mikrocsip) Studio-t a letöltésekből?
Gyorsan kellene, nem találom.
Nálam Google első találat. Microchip saját keresőjét nem használom.
https://www.microchip.com/en-us/tools-resources/archives/avr-sam-mcus
Köszi, de ezek a régiek. 7.0.2542 kellene.
Itt lehetne letölteni: Bővebben: Link A hozzászólás módosítva: Jan 22, 2022
Köszönöm, megvan. Amit linkeltél, onnan kell a 7.0.2389 és telepítés elején rákérdez, hogy kell-e a frissebb.
Tippet, megoldási ötletet keresek a következő problémámra:
Adott egy STK500 + AVR Studio 4.19-es verzió, amit korábban nagy megelégedésemre használtam. Pár év után most ismét szeretném használni, de rendszeresen lefagy a program. Van, amikor 10 másodperc után, de van, amikor akár 1-2 óráig sincs vele baj. Most Win 10 alatt használnám, de lehetséges, hogy amikor korábban használtam, még 8.1-es Windows volt a gépemen. Lehetséges, hogy az AVR Studio és a Win10 összeakad? Tapasztalt más is ilyet? Van erre megoldás? Esetleg újabb változat az AVR Studio-ból elérhető és működik Win10 alatt? Találtam egy 5.1-es verziót, de a Windows veszélyre figyelmeztet és nem akarja letölteni... (A Microchip Studiot telepítettem, de NAGYON szeretném elkerülni a használatát!) A hozzászólás módosítva: Feb 10, 2022
Idézet: „A Microchip Studiot telepítettem, de NAGYON szeretném elkerülni a használatát!” Miért? Azzal sem működik?
Sikerült letölteni és telepíteni az AVR Studio 5.1-es verzióját, és az pont úgy néz ki, mint a Microchip Studio, és ugyanaz a problémám vele.
Megmondom őszintén: használni szeretném a Studio-t, és nem azzal eltölteni heteket, hogy megtanuljam a kezelését. A 4.1-es verzióból a következőket használom: Megírom a programot, lefordítom (ekkor kiderülnek a félregépelések, szintaktikai hibák, amiket javítok), csatlakoztatom az STK500-at (tesztként beolvasom a uC azonosítóját), beégetem a uC-be a programot. Gyakorlatilag 2-3 klikkelés az egész... Ezzel szemben az 5.1 és a Microchip-esnél: Már sikerült megtalálnom, hogy hogyan lehet megmondani neki, hogy STK500-at használok. De nem találtam meg azt a részt, ahol megnézni / beállítani tudom pl. a fuse biteket, kiolvasni a uC azonosítóját. Melyik az az 1 (egy) gomb, amire klikkelve megmutatja a gépelési és szintaktikai hibákat? Melyik az a gomb, ami betölti a programot? Én AVR-t akarok programozni asm-ben. Minek nekem az MPLAB XC8-as, meg a SAM? "Találomra" próbálkozok dolgokkal, de többnyire megnyit egy webes oldalt, vagy teljesen mást csinál, mint ami (az én elképzelésem szerint) logikus lenne. Mi az az ASF? Mi az a Solution? Nem projekt, mert az külön menü. Nem az általam írt program, mert a Build menüben van Build Solution és Build "sajátprogram". De akkor meg mi az? És akkor még nem beszéltem arról, hogy a korábban megírt dolgaimat nem olvassa be, mert a régi projekt-file formátumát nem ismeri. (Az azért elvárható lenne egy programtól, hogy a korábbi változatával készült tartalmakat tudja kezelni! Végülis ez egy ingyenes program: nincs szüksége arra, hogy rákényszerítsen a kétévenkénti vásárlásra.) Az a problémám, hogy sokkal többet tud, mint amire nekem szükségem van! (Az MS termékeivel is az a problémám, hogy mindegyik mindent akar csinálni, miközben egy átlagos felhasználónak a töredékére sincs szüksége...) Valahol láttam utalást egy 4.9-es verzióra, ami talán még a 4.1-es verzióra hasonlít, de amit találtam, bár 4.9-nek hirdeti magát, letöltéskor már az 5.1-es érkezik. Tudom, hogy úgy hangzik ez az egész, mint egy hisztis gyerek szövege... De már két napja szenvedek a 4.19-es lefagyásaival. Végre rászánom magamat az újabb verzió telepítésére, azt meg nem tudom használni a fentiek miatt. (Az már csak hab a tortán, hogy van 2 db. AT90S2313-es, amiknek a kimenetei nem reagálnak, pedig most vettem elő a tárolócsőből őket... ) Tehát: tapasztalt-e más is olyat, hogy az AVR Studio 4.19-es lefagyogat WIN 10 alatt? Van-e rá megoldás?
Sok próbálkozás után nekem a 4.14 jött be, megvan 4.19-g az összes, de azokat a nem használom címkével jelöltem. 4.14 + 4.14SP1.
Viszont tapasztalatom nem sok van, párszor használtam win10 alatt,de akkor nem volt gond. Plusz ami nekem fontos volt, hogy még támogatja a JTAG ICE-t is Ha kell, elérhetővé tudom tenni számodra őket.
Köszi, megpróbálom letölteni ezt a 4.14-est. Az SP1 jól hangzik, hátha az megoldja a gondomat. Ha nem sikerül, kereslek.
ATmega328P-vel, a belső oszcillátorról, tudok olyan pontos órát csinálni ami 1 napig nem téved 1 percnél többet?
Kívülről venném a pontos időt, de ha nincs kapcsolat azért ne akadjon már meg az óra feltűnően! Fél másodpercenként kellene egy megszakítás.
Nem tudsz. A gyári kalibráció az adatlap szerint +/-10%-os, amit akár 1%-ra javíthatsz, ha külön kiméred különböző hőmérsékleteken. Neked 0,07%-nál nagyobb pontosságra van szükséged.
A jó hír, hogy többféle kristályt is használhatsz (kis sebességű órakristályt 32,768kHz vagy 8-16MHz nagy sebességűt is).
Ha kalibrálod, szerintem az 1mp-nél kisebb hiba/nap is sikerülni fog. Ehhez csak fix hőmérséklet kell a uC körül, meg a tápfesz se ingadozzon nagyon.
Minden keresésre az 5.1-est akarja letölteni... Nem is értem! Na, mindegy...
Végül csak nekiláttam a Microchip-es változatnak. Bár továbbra sem tetszik több minden, de legalább tudom használni. Pl. ha változtatok a programon és be akarom "égetni", akkor mindig újra ki kell választani az STK500-at, mert nem jegyzi meg, hogy 1 perccel előtte mit használtam - nincs 1 db gomb, amivel égetni lehet (5x kell klikkelni). És továbbra sem tudom mi az a "solution" és miért jó az nekem, de nem használom és kész... Valamint több dolognál a netet akarja használni, pedig "ránézésre" az valamilyen funkció lehetne. Köszönöm, aki segíteni próbált! A hozzászólás módosítva: Feb 14, 2022
Egy solutionon belül több projekt is lehet. Olyasmi, mint az Eclipse workspace.
Nekem eddig mindig megjegyezte, hogy milyen debuggerrel mire akarok feltöteni. És csak 1 klikk. Te hogy csinálod?
Elindítom a Microchip Studio-t.
Még semmit sem csináltam, de a nyitó oldalon, alul kiír több sornyi hibát, aminek a vége: "SystemError: Object reference not set to an instance of an object." Az "Open Project..."-ben megnyitom, amit használni szeretnék: valami.atsln. Betölti a programot, tudom szerkeszteni. Amikor "készen vagyok", jön a "Build valami" (MS1.jpg képen "1" jelöli). Ha (miután) sikeresen megcsinálta jön az égetés (MS1.jpg képen "2" jelöli). Megjelenik a következő ablak ("Device Programming"), ahol 1. ki kell választani a "Tool"-ban az STK500-at, majd 2. "Apply". Ekkor megjelenik az ablakon belül kilenc lehetőség, amiből 3. kiválasztom a "Memories"-t. Itt 4. ráklikkelek a "Program" gombra és ekkor "beégeti". Ezután be kell rázni ezt az ablakot, különben semmit mást nem tudok csinálni vele. Viszont miután javítottam a programomon, és ismét "égetni" szeretnék, megint megnyitva az előbbi ablakot ismét ki kell választani a programozót, vagyis végig kell csinálni az előző lépéseket. Ezzel szemben az AVR Studio 4 esetében a Build (AVRS1.jpg képen "1" jelöli) után behoztam a programozó ablakát (AVRS1.jpg képen "2"jelöli), majd egy gombbal "beérgettem" (AVRS1.jpg képen "3" jelöli). De itt nem kellett bezárni a programozó oldalát, azalatt is lehetett szerkeszteni a programot. Így amikor újabb próbálkozást akarok "égetni", akkor elég csak arra az egy ikonra klikkelni (AVRS1.jpg képen "3" jelöli).
A zöld play gomb a feltöltés, nem az, amire te klikkelsz.
Melyikre gondolsz:
Tele zöld háromszög - Start Debugging (F5) Üres zöld háromszög - Start Without Debugging (Ctrl+Alt+F5) És ez miért a Debug - hibakeresés menü alatt van??? Én nem hibát akarok keresni, hanem a programomat beletölteni a uC-be! Helyből feltételezi, hogy a programom hibás! (Igen, az... de ezt ne ők döntsék el!) Ez nem neked szól, hanem a Microchip-nek... Köszi a segítséget!
Ha csak feltölteni akarsz, akkor üres zöld.
Az általam ismert összes embedded IDE-ben a run/debug menüben található a run és a debug is. Ez vonatkozik az aktuális projektre. A device programming az arra való, hogy piszkáld a fuse biteket, és tetszőleges hex állományt tölts fel.
Jol mondod, a run/debug szinte az osszes ide-ben egyutt van, maskepp nem nagyon lenne ertelme
En eleg sok (java, python, C/C++,JS,php) ide-t hasznalok, tobb gyartotol es mind hasonlo.
Egy olyan programkörnyezet esetében, ahol a gépen fut a program, vagyis az ide valóban tudja futtatni, lépésenként végrehajtani, szimulálni a programot, ott valóban logikus a run/debug összevonása. De ahol a szimuláció és a tényleges futtatás alapvetően külön van, ott én az elkészült programot nem futtatni szeretném, hanem betölteni egy uC-be, ahol a PC-mtől függetlenül fut. De a megírt programom futását már nem az ide vezérli, hiszen az akkor is fut, amikor megszüntetem a kapcsolatot a PC és a uC között.
Igen, tudom, hogy az STK500 pont képes a lépésenkénti végrehajtásra is... De arra is, hogy SPI-n keresztül egy külső áramkörben lévő uC-t programozzon fel. Éppen ezért logikusan a run/debug arra lenne való, hogy szimulálva fusson a program, míg az amikor a programot belegyömöszölöm a uC-be, ettől el kellene különülnie. Leginkább azért, hogy egyértelmű legyen: most már az áramkörben lesz a program, nem csak a szimulátorban. De sajnos a világban egyre több dolog nem logikus, mert a fejlesztőknek mindig ki kell találni valami újat. Ami két éve ugyanolyan, az elavult. A lényeg, hogy tudom használni!
Szerintem ez megszokás kérdése. Nekem például tök logikus.
STM32 CubeIDE-ben például nincs se device programming, se szimulátor. Kizárólag run és debug. Mindkettő feltölti az MCU-ra a programot, és futtatja. A run parancs utána bontja a kapcsolatot, míg a debug nyitva hagyja. MCU programozásra önálló szoftver van CubeProgrammer néven. De hasonlóan van más gyártóknál is.
Továbbra sem nyűgözött le a Microchip Studio...
Lenne egy kérdésem: Hogyan tudok kiválasztani régebbi eszközöket? Konkrétan az AT90S2313 érdekelne (de jó lehet tudnom még az AT90S8515 és az AT90S4433 esetében is). Ha az ATTiny2313-at választom ki, akkor nem fog egyezni a signatura. Attól még más rendben lesz?
Üdv!
A következő problémába ütköztem. AVR <> ESP8266 közötti kommunikációt szeretnék implementálni, AT parancsokkal. A parancsokat az AVR flashben tárolom.
Ez rendben is van. De pár kódhoz nekem ezt valahogy for() ciklusban kéne lefuttatnom. Itt találtam egy megoldást, ami valahogy így néz ki:
Ha jól értem, így egy pointer tömböt kapok, amit már hasznosíthatnék. Teszt:
A teszt során, azt tapasztalom, hogy a for() ciklus max 4-ig hajlandó jól lefutni. Ha i < 5-t vagy többet írok, be akkor az UART-ot teleszemeteli. Output: // for(u8b i = 0; i < 4; i++) start > AT busy p... CIFSR // for(u8b i = 0; i < 4; i++) vége CIPCLOSE // DEBUGGER_UART_TXFS((const unsigned char*)strmx[4]); CIPDNS // DEBUGGER_UART_TXFS((const unsigned char*)strmx[5]); CIPDOMAIN // DEBUGGER_UART_TXFS((const unsigned char*)strmx[6]); // for(u8b i = 0; i < 10; i++) ����Ϳߑϑ�������������'�������'����'�o_O����Q�)�:�K�\�m�~������m&� (csak részlet) majd a "szemét" végén: CIPSTAMAC // DEBUGGER_UART_TXFS((const unsigned char*)strmx[11]); CIPSTART // DEBUGGER_UART_TXFS((const unsigned char*)strmx[12]); CIPSTATUS // DEBUGGER_UART_TXFS((const unsigned char*)strmx[13]); A kérdésem, hogy mi okozhatja ezt? SB
Én erre a célre vettem egy p4-es vacak laptopot 3 ezer ft-ért a műhelybe, azon van egy xp, windows7, linux, nyák tervező, szimulációs programok, egy IDE, avr studio 4, pickit, stb
Megy minden mint a szél. |
Bejelentkezés
Hirdetés |