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
A relés kapcsolást nem tudom ellenőrizni, próbáld meg, hogy helyette egy ledet kötsz a lábra, így látszik majd, hogy a program a hibás vagy a kapcsolás.
Szia.Köszönöm.
Akkor azért nem azt csinálja amit akarok És ezt hogy lehetne megoldani?
Sziasztok!
Gépcsere után telepítettem a atmel studio 7-et. Viszont nem tudom megnyitni a 6.2-ben elkészített és működő solution file-kat. Találkozott már valaki ezzel a problémával?
Szükséged lesz még egy optocsatolóra, a reléket ne úgy kösd hogy az egyik a másikat kapcsolja, hanem az egyik avr láb az egyik relét a másik a másikat vezérelje.
Onnan már csak programozni kell. A diódát meg úgy oda ne tegyél. Vagy oda rakd ahol nem váltasz polaritást, vagy sehova. a relék lábára viszont csak kéne.
A fuse biteknek nem vagyok mestere, de függ magától a programtól, hogy elég az avr belső órajele, vagy (különleges értékű) külső kristályról kell járatni. Le tudod tiltani rajta az spi-on való programozást, kikapcsolhatod a reset lábat, ha kevés az i/o, védheted az eeprom-ot...
És minden típushoz mást jelenthet egy fuse byte, kiválasztásához használhatsz online kalkulátort, vagy pl. az atmelstudioban csak be kell pipálni, hogy mire van szükséged, és ő kiszámolja a fuse biteket. Ha utánépítesz egy projektet, akkor ott le kéne legyen írva, hogy mit kell beállítani.
Megpróbálom átkötni ahogy írtad,de előtte értelmeznem is kell
Az optotriac, ha DC-t kapcsolgatna, akkor az nem marad mindig ON állapotban? Helyette inkább nem egy optotranzisztior kellene(ha feltétlen kell a kapcsolásba az opto izolálás)? Minden esetre én így módosítanám a kapcsolást, hogy a célnak megfeleljen. Tetye, te is valahogy így gondoltad ugye?
A számból vetted ki a szót, illetve az eagle-emből a sketch.et.
Igen, így gondoltam én is.
Szia. Hálás köszönet ismét
Megpróbálom lemásolni
Üdv!
Azt szeretném megkérdezni, hogy a következő okozhatja e az AVR-em váratlan újraindulását: Az UCSR0B regiszterben az (1<<RXCIE0) engedélyezve van, de a hozzá tartozó ISR nincs implementálva, az RXD láb is be van kötve az USB<->RS232 átalakítóba, de nem küldök adatot az AVR felé. Okozhatja-e az RXD-n megjelenő zaj a hibát, amitől azt hiszi, hogy adatot kapna és utána megpróbál ISR-ba belépni, de mivel az nincs ezért újraindul az AVR? (én erre tippelek) Böngészéskor találkoztam még a BADISR_vect interruptal. Jól értelmeztem, hogy ez akkor fut le, ha van egy engedélyezett interrupt, mint a fenti esetben és nincs hozzá megfelelő ISR?
Itt le van írva,de ha belenézel az lss fájlba,látod is.
Ha csak reti utasítást szeretnél,mint az asm-ben szokás: EMPTY_INTERRUPT(BADISR_vect);
ATMega328P-re kötöttem egy kínai DS3231-es modult. Ha jól értem ehhez a twi.h, twi.c és egy ds3231.h, ds3231.c könyvtár kellene. A másodikat sehol sem találom a Neten. Csupa cpp kiterjesztésű van, de ha jól értem az nekem nem jó. Atmel Studio 7.
Biztosan meg tudom írni, de a múltkor is úgy jártam, hogy később megtaláltam egy könyvtárat, ami jóval frappánsabb volt mint az én megoldásom. Ki tudtok segíteni egy linkkel?
Lekopíroztam,de a motor gombnyomás lékül is csak forog
Azt próbáltad-e már, hogy az Arduino-t kiveszed a képből, és te kapcsolgatod a motor vezérlését kézzel? Esetleg Arduinoban írni egy programot, ami 2mp-ig forgatja a motort, 2mp-ig pedig nem. Akkor kiderülne, hogy működik-e egyáltalán a motort vezérlő áramkör. Remélem nem az AVR lábára van kötve a motor direktben!
Bár ami azt illeti egy ellenállást még tennék az avr meg a gate közé 100R kb.
Ugyan így rajzoltam meg a kapcsolást ahogy te ide felraktad.
És megpróbálom atmega nélkül a kapocslást. A hozzászólás módosítva: Jan 31, 2016
Én raktam fel? Hol? Tesztelgesd a komponenseket külön-külön, lépésenként haladva.
Bocsánat nem te tetted fel,csak izgalmamban elnéztem a nickeket.
Tesztelem komponensenként,de nem sok sikerrel
Attól belinkelhetnéd, hogy is van meghajtva a motor, mert ezt eddig jól titkoltad!
A neten én nem találtam jó I2C könyvtárat, ezért magam írtam egyet. Nem valami teljes, meg tele van "nem-szabványos" részekkel de jól működik. Például külön timeout van mindenre amit egy hibajelző bájtban kapok vissza. Ha valami hibás az áramkörben, azt nem abból fogom látni hogy leáll az egész. Még jól működő áramkörökben is előfordul itt-ott egy kis hiba az átvitelben, és nem akarom hogy gallyra vágja az egész cuccost.
Csatolok egyet. Ez még 2011-ben készült, MCP23009 és PCF8574 kezeléséhez. Utóbbival(egybájtos regiszter) 100% hogy korrekt. A "repeated start" még nincs kezelve, emlékeim szerint ettől még működött MCP23009-el is(ebben regiszterek vannak, úgy mint az RTC-ben). Nagyon fapad, de ha érted az i2c lényegét akkor nagy segítség. Majd előkeresem az idei "verziót" ami MCP23017-el ragyogóan megy ipari áramkörökben, abban komplett regiszter írás-olvasás művelet is bele van égetve. Apróság: a "byte" és "word" helyett "uint8_t"-t és uint16_t"-t használj. A hozzászólás módosítva: Jan 31, 2016
Mellékeltem a teles proteus rajzot. Ebben kihagytam a diódákat, mivel a szimulációt zavarta. Azért ez a proteus még most sem a kedvencem...
Kovidivi javaslatát kövesd. Építsd meg legalább két lépésben. Az AVR kimeneteire csak LED-eket tegyél a program teszteléshez. A másikba meg a motor vezérlést rakd össze nyomógombokkal. Ha a gomb lenyomása nélkül is forog, akkor valószínű, hogy az első relé rosszul van bekötve.
Ajj basszus. A te alap rajzodon már alapból is megy a motor egyik irányba, mivel a relén keresztül állandóan kapja a feszt. Majd ha a relé meghúz, akkor vált forgásirányt. Ha elenged, akkor ismét. Tehát ahogy feszültség alá helyezed az áramkört a motor elindul! Második rajz már jobb, mert ott az egyik relé a motor tápfeszt kapcsolja, a másik pedig a forgásirányt. A te rajzodon az egyik relének nincs is értelme.
Köszönöm a választ!
Idézet: „If an unexpected interrupt occurs (interrupt is enabled and no handler is installed, which usually indicates a bug), then the default action is to reset the device by jumping to the reset vector. You can override this by supplying a function named BADISR_vect which should be defined with ISR() as such. (The name BADISR_vect is actually an alias for __vector_default. The latter must be used inside assembly code in case <avr/interrupt.h> is not included.)” Ez a leírása, amit kb. jól értelmeztem ezek szerint. Az lss fileba belenéztem, de közel van nekem a kínaihoz. ASM-el is csak futólag volt dolgom, amikor egy UDPs bootloaderrel próbálkoztam.
Relés motorvezérlésre a mellékelt rajzot építettem meg annó C64-re.
Sziasztok!
Amikor programozás után az AVRDude visszaolvassa memóriatartalmat akkor a végén ez az üzenet látható: Idézet: „Reading | ################################################## | 100% 2.23s avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0100 0xff != 0x31 avrdude: verification error; content mismatch avrdude done. Thank you.” Jól sejtem, hogy vége van az AVR-emnek? Nekem legalábbis úgy tűnik, hogy 0x0100 címtől nem tudok már beleírni semmit sem, legyen szó akármilyen hex. fájlról. Mondjuk mivel 6000 Ft-os kínai fejlesztői panelről van szó nem volnék meglepve ha hamisítvány volna a proci, azoknál meg előfordulhat ilyen ha jól tudom.
Egy sorban van a lényeg,reset-re ugrik ha nincs kiszolgáló rutin:
Állítsd be az AVR típusát! Nem feltétlenül hibás. Ha egy másik ugyanolyan IC-vel nem csinálja
akkor lehet hogy kuka(egy fusebit doctort azért még megpróbálnék). A hozzászólás módosítva: Feb 1, 2016
|
Bejelentkezés
Hirdetés |