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
Tessék két példa. Régiek, de remélem hasznos lesz. A "dummy" megoldás is működik, gondolom
az utolsó csatolmányod is valami ilyesmit akart takarni. Elegáns, de ritkán használják... A hozzászólás módosítva: Dec 28, 2013
IGEN! Az én eredeti mintám a második mintádra hasonlít programom csak én nem dummy-nak nevezem, hanem a rendes nevén hívom, mindegyiknek megvan a saját címke párja, de az összesnek a egy a vége: reti
(amit rolandgw mutatott minta az az én interupt kezelésemnek a legvége !, lásd az ereti programot, ne csak a kiragadott részletet) más: köszönöm az ötletet, kipróbálom az LC szűrést.
Az a baj ezzel hogy így nem látod át egyből, melyik interrupt van megvalósítva, és melyik
megy rá a "közös" dummy részre. Nézd azt az időráfordítást amit arra fordítasz hogy új interruptot szúrsz be, vagy veszel ki a programból. A sok görgetés, mire a végére érsz már elfelejted mi lett volna a következő lépés. Egyszerűbb ha minden ott van az elején!
Sziasztok! Segítségre lenne szükségem.
A hibaüzenet: Sketch mérete: 4 188 byte (maximálisan lehetséges: 30 720 byte) avrdude: stk500_getsync(): not in sync: resp=0x00 Az STK500 rá van kötve az Arduinora ICSP csatin. A bootloadert rátudtam tenni az Atmega328P-PU ra, de már a progi nem megy fel.
Hasonlít,de hibás,éppen a kiragadott részlet miatt. Ebben azért jussunk közös nevezőre
![]()
Hibásnak semmiképpen nem hibás. Lehetne szebb is (zombee ajánlása alapján), de megfelelően működik.
Hogy ezt belásd, tedd meg a következő próbát: Hozz létre 5 címkét egymás után és csak az 5. után írj egy nop-t. Ha diassemblerben visszanézed csak egy cím fog szerepelni valószínűleg, de ha programból BÁRMELYIK cimkére ugrasz, akkor az 5. címke utáni nop-re fog ugrani! Lehet tesztelni szimulátorban.
Az általam használt rész is pont ugyanígy működik. Kiborg
Az STK500 at nem akarja látni a gépem, de, hogy miért van ez azt sajnos még nem látom. Tud valaki segíteni?
Szerintem ezzel ne fárasszuk tovább a fórumozókat.Itt különálló megszakításokról van szó és pont az a lényeg mi van a disassembler-ben,tehát a példa nem jó !Márpedig a verziódnál megjelenik a felsorolt első megszakítás reti-vel lezárva és ennyi
![]()
Nem igazán ismerem az ARDuino-t, de ha van rajta bootloader,akkor a programot már nem sorosan kell rátölteni ? (STK500 nélkül)
rolandgw Szerintem se fárasszuk egymást. Kipróbáltad szimulátorban a példámat? Ha igen, akkor rájöhettél, hogy miért mondom amit mondok. Idézet: Illetve példámnál maradva a nop-ra. Számomra így megfelel, téma lezárva. „"zombee": Szerintem azért nem lesz meg a többi címke, mert az ÖSSZES címke ugyanoda mutat, arra az egy szerencsétlen "reti"-re. Ugyanis a címke az nem része a programkódnak, csak egy szimbólum amit a fordító egy valós cím-re fordít le. ”
Melyik STK500?
Doper? MKII, EverTool, Tuxgraphics, USBASP vagy eredeti gyári Atmel STK500?
Az Arduino fórumban is feltetted a kérdést. A válasz ott van.
![]()
Tavír-os USB-s, zöld.
A hozzászólás módosítva: Dec 28, 2013
Az a TuxGraphics-os. Csak FT232RL chippel szerelt.
Azzal megy.
Még szeretnék pár infót kérni az Atmega328p-Pu és az ICSP bekötésére, lábkiosztására, mely lábakat kell kivezetnem a tüskék felé. Valakinek van egy linkje, rajza ossza meg velem. Köszi.
Mire akarod használni?
Külső programozófoglalat? Tipp: Arduino kapcsolási rajz. Programozáshoz kell: - MOSI/MISO/SCK/RESET/VCC/GND - GND, Vcc közé 100nF - Aref és GND közé 100nF - Vcc és VccA ill GND és GNDA összekötendő, - xtal1/xtal2 közé kvarc (1...16 MHz tetszőleges) és az adatlap alapján a 2 db 12..33pF kondi - reset és Vcc közé 4k7...10k, - reset és gnd közé 100nF, - és vagy önálló táp, vagy mehet a programozó felől is
Sziasztok!
Feszültségmérőt készítek a tápomhoz. 32,7 a max fesz amit a táp tud. Ezt osztottam 10k-val és egy 10k-s trimmerrel. Beállítottam 5V-ot, trimmer középső lábán 500mV van. Ezzel a kóddal mérek:
Szépen írja is a kijelzőre, hogy 5V stbstb. De amint közelítek a max Uki-hez, vagy a min Uki-hez a tápon, a mérés elkezd pontatlanná válni. S a pontatlanság növekszik ahogy közeledem a szélsőértékekhez... (egyébként Atmega8 @16Mhz) Mit rontottam el?
Kérdés hogy a "közel a határhoz" az mennyire van közel, mi van ilyenkor az osztó kimenetén.
Szia!
Nos, megcsináltam a méréseket: Ube (táp), Utr (trimmer), Um (avr-el mért fesz) Ube: 5,06V Utr: 0,509V Um: 4,95V Ube: 2,57V Utr: 0,259V Um: 2,38V Ube: 1,03V Utr: 0,104V Um: 0,91V Ube: 0,514V Utr: 0,049V Um: 0,36V 5V-tól mentem lefelé. Felfelé kicsit nagyobb léptékekkel. Ube: 10,00V Utr: 1,00V Um: 9,91V Ube: 14,95V Utr: 1,50V Um: 14,8V Ube: 19,95V Utr: 2,00V Um: 19,8V Ube: 24,95V Utr: 2,51V Um: 24,9V Ube: 29,99V Utr: 3,00V Um: 29,9V Ube: 32,42V Utr: 3,25V Um: 32,4V A tápból "kijövő" feszt egy maxwell-el mértem, szóval én azt veszem valódinak. Picit tévedtem, mert a max érték felé közeledve "pontos" az avr. A rizikós rész a 10V és környéke. Az alsó tájékot kellene pontosítanom. 8 bites ADC van jelenleg. 4,68V van az Aref lábon, ezt osztom 255-el, 18,3mV-os pontosság. Jól gondolom? Mit kellene másként csinálnom? A hozzászólás módosítva: Dec 30, 2013
Sziasztok! Atmega328P-PU nál , ha már arduinón kívűl használom egy kapcsolásban, akkor mind a 2 db GND ot be kell kötnöm (GND, AGND)? Meg még van a VCC és az AVCC . Ezek legyenek mindíg összekötve? Még egy kérdés, hogy az arduino2009 miért használ LM358 at, amikor ott van mellette a 7805 stab IC. Köszönöm.
Sziasztok! Segítséget kérnék egy atmega 162 felprogramozásában. Minipro programmal és programozó eszközzel csinálnám, meg van az atmega eeprom és fw tartalom is, viszont a programnál olyat választhatok a "buff select"-nél, hogy "code memo" és "data memo". A data memo az eeprom (az az a flash tartalom lenne)? A code memo pedig az fw tartalom lenne?
Válaszokat előre is köszönöm.
Hol találok egy 8bites LCD meghajtot aktiv busy flaggal?
4 bitesem van. Kösz
Szia!
Az ADC minden esetben 10 bites. De valószínűleg te akkor csak a felső 8 bitet veszed figyelembe.(a felbontás növelésével lehet növelni a pontosságot) A/D-nél alapszabály, hogy minimum 1 bitnyi pontatlansága lehet! Nálad ez már 18 mV ami már erősen összemérhető a bemeneti feszültségeddel 49mV-al. Itt már egy bitnyi eltérés is viszonylag nagy eltérést okoz. Az AVCC-t megfelelően szűrted(LC szűrés)? Külső vagy belső referenciát használsz? Az AD átalakítás idejére le lehet állítani az MCU-t, így a többi részegységek nem zavarják az AD átalakítót.(ADC Niose Canceler) Egyébként a legkisebb bit értéke 4,57mV, csak ez nem megfelelő szűrés esetén hajlamos ugrálni, neked meg kellene, mert elég nagy tartományt akarsz mérni. Üdv Kiborg
Használd a válasz gombot !!!
Annak a tápfeszültsége kellően szűrve van? És a többiről infó ? Kiborg A hozzászólás módosítva: Dec 31, 2013
Aref szűrve van. Közvetlenül a lábnál, van egy 100nF-os kondi.
Vcc szűrve, szintén 100nF-al. A hozzászólás módosítva: Dec 31, 2013
Biztos, hogy elég? Soros 100uH induktivitás és utána a 100nF szűrés.
Ha ez nem elég, akkor marad az ADC Noise Canceler.
A feszültségmérés az igencsak kemény dolog AVR alatt. Nálam a 6. próbálkozásra sikerült odáig eljutnom, hogy rendesen mérjen (ne +/- 1.5V pontossággal). Mutatja a min-maxot, felismeri a négyszögjelet, a szinuszt, méri a frekvenciát, kitöltési tényezőt négyszögjelnél és képes átlag/effektívértéket számolni +- 40V között. Minél kisebb a feszültség, annál pontosabb.
Megosztom a tapasztalataimat: - Ha +/- 32V-ot mérsz, akkor 0.0625V egy osztás. Az ADC a legjobb esetben is 3 kvantumot ugrál, szóval máris 0.2V-nál jársz, ami valljuk be elég durva. A 4.8V és az 5V nem ugyanaz. - Arduino-n lehet feszültséget mérni, de a kimeneteket ne váltogasd menet közben, mert a VCC és az AVCC össze van kötve, tehát a digitális zaj azonnal megjelenik az analóg eszközökön. A végleges nem Arduinos megoldásnál le lesz az AVCC aluláteresztő szűrővel választva. - Külső referenciát érdemes használni a tápfesz helyett, ez nálam 2.5V - Az ADC bemeneti ellenállása 10k körüli értékre lett optimaliálva, ami valljuk be feszültségmérésre alkalmatlan, ezért erősítened kell. Hogyan csináltam én? - 2.5V-os referencia előállítása: MCP1525 IC segítségével - ezt ellenállásosztóval osztom 2-vel (az lesz a nulla pontod) - műveleti erősítővel erősíted a referenciát és a nulla pontod (ami 1.25V). (MCP6024-es műveleti erősítő, 10MHz, 10 Gohm bemeneti ellenállás, rail-to-rail). - LM324 közelébe ne nézz, a valaha készített legzajosabb műveleti erősítő, ADC-re alkalmatlan Feszültség mérése: - Két ellenállásos osztó 330k / 10k (1%) ref/2-re - ez 33-mal osztja a bemenő feszültséget - MCP6S26 SPI-n programozható erősítésű műveleti erősítő, képes 1x, 2x, 4x, 5x, 8x, 10x, 16x, 32x szorzásra, de nálam breadboardon 8x volt elérhető, ami még pontos, a 10x nálam már időnként mellészámolt - ez ugyanúgy 10Gohm/10MHz/R2R, 6 programból állítható csatornája van - a 2.5V-ra meg az 1.25V-ra azért kellett műveleti erősítő, mert az MCP6S26 megköveteli a 0.1 ohmos ellenállást VREF-re Amikor mérek, akkor az 1x-szel kezdem a mérést, ha a jel kicsi 1s-en át, akkor beállítom hogy szorozzon 1x, 2x, 4x, 8x-szel. Nézz utána, mert az oszcilloszkópokban az MCP6S26-ot használnak. Lehet, hogy elsőre brutális amit leírtam, de legalább megy. Hidd el, szívtam eleget az ADC-vel, ez volt az első sikeres próbálkozásom, ami nem csinálta orrba-szájba a zajt. A hozzászólás módosítva: Jan 1, 2014
Átlagolás is volt? Egyébként butaság a 100nF, szerintem egy ilyenhez nagyon kevés! Én minimum 1µF-t használok a szűrésnél. Az AVCC-re kell a táp szűrés(100-220uH tekercs és 1-10µF kondi), az AREF-re CSAK kondi kell, oda 100-220nF. Az AREF-re NE köss tápot! Mikor beállítod a referenciát, várni kell míg a kondi is felveszi az értéket. Én általában a 2.56V-os referenciát használom.
ÉS ÁTLAGOLOK!!! A hozzászólás módosítva: Jan 1, 2014
Átlagolni nem tudsz min-max számításnál. Az effektívértéket és az átlagértéket az áramkör zaja nem zavarja túlzottan.
Rengeteget szívtam azzal, hogy a multiméter kiírta, hogy 4.7V magas, tehát minden rendben. Akkor miért nem megy? Az, hogy 4.7V nem jelent semmit, mert mi van ha 1-2ms-re leesik a feszültség 2.2V-ra, ami már alacsony. Ezért van szükségem rendes min-max számításra. Mettől-meddig és milyen. Emellett kirajzolom az LCD-re 3 karakteren (15x8 pont) a jel változó részét (miniszkóp). Az LM324 átlagban rendesen mért, de a zaj rajta 20-30 fokozat simán megvolt. Amikor min-maxot mértem, akkor simán mellélőtt, de a torzítása is brutális. Mérsz 17V-ot, megfordítod a vezetéket és -15.8 lesz. Most jutottam el addig, hogy minden egyes mintavétel tökéletes, ezzel a megoldással. Nyilván nem olcsó, a felsorolt IC-k összesen 1300 Ft-ba kerültek, de megy. A hozzászólás módosítva: Jan 1, 2014
|
Bejelentkezés
Hirdetés |