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
Ezt nem igazán értem!
Saját magát akarod botloaderen felprogramozni? Ezt nem támogatja az AtmelS. Ha már tovább akarsz lépni ajánlott valamilyen támogatott Jtag programozót beszerezni, mert azon tudsz debugolni is.
Arduino megát szeretném használni programozóként.
edit: Egy ilyen megfelelő lenne? JTAG, és a leírás szerint támogatja az AVRstudio. A hozzászólás módosítva: Szept 30, 2014
Elvileg igen. (Gyakorlatilag ocó kici kinai?)
Esetleg ha valakinek már van ilye, vélemény?
De ha csak az ott felsorolt típusokat tudja programozni akkor ez nekem nem jó.
Üdv!
Egy háromfázisú hidat szeretnék meghajtani atmega 2560 mikrovezérlővel és DRV8303 driver IC-vel eddig sajnos nem sok sikerrel. Megvettem hozzá minden alkatrészt, szépen bekötöttem, az egyetlen dolog amit nem használok az IC-ből az a 2db erősítő ami a fázisok jeleit csatolja vissza ADC re (ezt máshogy oldanám meg). A probléma hogy az IC-be bemenő PWM jel nem jön ki egyáltalán, nemhogy erősítve. Van valakinek tapasztalata ezzel az IC vel, vagy esetleg tudna ajánlani egy másikat ? (gyakorlatilag olyan IC is jó lenne ami 4-6 PWM jelet tudna erősíteni)
Sziasztok. Belefutottam egy számomra érthetetlenek tűnő hibába.
Adott a
függvény, ami bizonyos bemenő paramétereknél (14,10,1,13,21,0) hülyeséget számol (465419324). Napok óta szenvedek vele, hogy mi lehet a hiba, és rájöttem, hogy ha átkonvertálom az értékeket 32 bitesre, attól megjavul:
Ugyanolyan bemenő paraméterek mellett így már 465484860-at számol. Az lenne a kérdésem, hogy mi okozza ezt? Miért nem tud típuskonverziók nélkül is jól számolni? Továbbá ahová nem írtam be a konverziót (pl az ev és a table elé), oda is érdemes beírni, mert okozhat még meglepetéseket?
Szia! Milyen szint van a /FAULT lábon?
A C fordítók a kifejezések kiszámításánál vagy egy default típusból (16 bites int) vagy a paraméterek típusát tekintik az eredmény típusának, ha nincs más előírva.
Itt már az ev * 365 -nél gondok lehetnek, hiszen az ev 8 bites. A 86400 -zal való szozásról nem is beszélve. Tovább kellene folytatni a konverzió előírását. (uint16)ev * 365 ... stb. A saját másodperces idő helyett célszerűbb egy szabványosat használni. Pl. Julian Day Number. Még a hét napja is kiszámolható belőle egy mod 7 művelettel. Bővebben: Link A hozzászólás módosítva: Okt 1, 2014
Rendben, így lesz, csak arra gondoltam, hogy mivel a fgv visszatérési értéke 32 bites, ezért 32 biten fogja végigszámolni a kifejezést. De úgy tűnik mégsem...
A FAULT egyszerűen csak Vcc-re van kötve egy 10kOhm-os ellenálláson keresztül.
Sziasztok!
ATtiny2313 miért melegszik? Egy óra kijelzőt hajt meg, de a szegmensek vannak meghajtva tranzisztorral. Ez az oka, vagy a gyors órajellel egybekötött lábkapcsolgatás? (van az ic-n kristály, de ennek kell valami külön script, hogy azt használja?) Üdv: Dávid
Fuse biteket be kell állítanod, különben a belső RC oszcillátort használja.
Az egy kimenet. Milyen szint van a /FAULT lábon?
A C fordito eleve minden int-nel kisebb adatot int-re konvertal, tehat a 8 bites ev-et elobb 16 bites intre konvertalja, azutan szoroz vele. Mivel a napok szama boven elfer 16 biten, ezzel nincs semmi baj. A 86400-zal valo szorzassal sincs semmi baj, mert az eleve egy 32 bites int konstans, es ezert az ezzel szorzott operandust is 32 bites intre fogja konvertalni szorzas elott. Ezert persze a szorzas eredmenye is 32 bites lesz. Ennek eredmenyekeppen az utana kovetkezo osszeadasok is 32 bitesek lesznek, mert a muvelet mindket operandusat egyforma tipusra hozza a fordito a muvelet elott.
A baj abbol adodik, hogy az ora, ami jelen esetben 13, int-re konvertalas utan meg mindig 13, de a * 3600 utan 16 bites int-kent ertelmezve mar negativ szam, (50400 = -15136), es ezert jon ki rossz eredmeny. Eleg lenne a 3600 utan irni egy u-t, tehat ora * 3600u, mert akkor az orat int-rol unsigned int-re konvertalja a fordito (mert ha egy muveletben signed es unsigned operandus keveredik, akkor az int-bol unsigned int lesz), es csak utana szoroz.
Alacsony szint van. (0,1 V)
Összedobtam itthon a kapcsolást... ez a kód megy nekem. (atmega8, belső 8MHz, max6675)
A hozzászólás módosítva: Okt 3, 2014
Forgatok egy tárcsát, van rajta 4 db kis mágnes. Kontroller megszakítható lábára egy Hall ic-t kötök. Tud valaki olyan kapcsolást, ami a HALL ic kimenetét csak egy impulzusra szűkíti le? Mert ha épp' úgy áll meg a tárcsa, hogy a mágnes az IC előtt van akkor folyamatosan van kimenet, és ilyenkor gondolom a megszakítás is folyamatosan menne.
Monostabil aramkorrel el lehet erni, hogy csak egy impulzlust adjon, de ez csak akkor szukseges, ha pergese van a Hall cellanak. A megszakitas felfuta (vagy lefuto) elre tortenik, ha folyamatosan egy szinten van, akkor nem marad a megszakitasban.
Akkor AVR-nél ha int0-át magas szinten tartom akkor is csak egyszer fut le, hiába van folyamatosan rajta jel? Akkor jó, mert akkor nem kell foglalkoznom vele. De akkor viszont 2 szer fog megszakítani? (fel és lefutó élre is)
Csak egyszer hivodik meg a megszakitas. Atmega tipusu AVR-nel az MCUCR regiszterben tudod beallitani, hogy milyen esemenyre tortenjen megszakitas, itt a te esetetben az utolso keto hasznalhato, vagyis valamelyik elre tortenjen a megszakitas.
Köszönöm a segítséget, nincs szükségem akkor külső áramkörre, szoftveresen kell beállítani majd hogy fel vagy lefutóélre reagáljon. Köszi még egyszer!
Az Atmel gyári PID szabályzó algoritmusával (AVR221) próbálok majd egy adott területen egyenletes megvilágítást tartani egy ledsor segítségével. Most a kisérlet egy ledből és a fényérzékelő ellenállásból áll. Az ellenállás éppen fordítva ad jelet, mert így egyszerűbb a kapcsolás, tehát ha nő a fény akkor csökken az ADC mért értéke. Ezt a 10 bites számot kellene megfordítanom, hogy 0 esetén 3FF és 3FF esetén 0 legyen a változó.
Biztos egyszerű de nem tudok rájönni. Az algoritmus int16 változókkal dolgozik. Van egy kis segítségetek? A hozzászólás módosítva: Okt 4, 2014
Köszi. Na ezt hívják blokknak. Már reciprokot vadásztam feleslegesen.
Bitenkénti invertálás nem működne? Az egyszerűbb és szerintem ugyanaz az eredménye (de persze lehet, hogy nem).
Mivel int szám így negatív eredményt kapsz invertálásra.
De uint számnál se lenne jó, mert akkor 65525-böl vonná ki.
Sziasztok!
Lehet, hogy nem a legjobb helyen teszem fel a kérdésem, ezért előre is elnézést kérek mindenkitől ha így lenne. Arduino fejlesztő panelt szeretnék vásárolni, de nem tudom pontosan, hogy melyiket lenne érdemes. Amivel szemezgatek az ebay-ről "New SainSmart Mega2560 R3 ATmega2560-16AU + ATMEGA16U2 + USB Cable For Arduino". ebay link Így rögtön két kérdésem lenne. Érdemes-e erre a panelre beruházni vagy van jobb választás is? Másik ebay-ről vettetek-e már ilyet és bejött-e a vásárlás. Az ár töredéke az itthoni áraknak. Korábban már foglalkoztam PIC fejlesztéssel akkor a saját magam szórakoztatására. Ezzel a lehetőséggel a gyermekeimet szeretném rávenni egy kis kreatív alkotásra
Szia, én már vettem, méghozzá ilyet (nem ettől az eladótól, de gondolom ugyan azok). Tökéletesen működik, semmi probléma vele.
A hozzászólás módosítva: Okt 5, 2014
Szia, ezeket az ebay kompatibilisnek írja. Programozásnál 100% a kompatibilitás?
|
Bejelentkezés
Hirdetés |