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
Erre a régi témámra van valakinek ötlete?
Azóta sem sikerült működésre bírnom.
Sziasztok! Egy ksi megerősítést szeretnék kérni ADC-vel kapcsolatban. Bújom az avr adatlapját, de az angol tudásom kicsit kevés már ide. Azt jól vettem ki belőle, hogy ha diff üzemmódba kívánom használni, akkor a 10 bites felbontás lecsökken 8bitesre? Ráadásul az is előjeles lesz.
De ha egyszer 8 bites, akkor ez az 512 hogy jön ide? ADC=(VPOS – VNEG)*GAIN*512/VREF The result is presented in two’s complement form, from 0x200 (-512d) through 0x1FF (+511d). Így ez az eredményt továbbra is 10 biten adja vissza
Ez biztos, mert ADC elején meg ezt írja az adatlap:
Idézet: „Two differential analog input channels share a common negative terminal (ADC0/ADC1), while any other ADC input can be selected as the positive input terminal. If 1x, 10x or 40x gain is used, 8-bit resolution can be expected. If 200x gain is used, 7-bit resolution can be expected.” Sajnos most nincs kéznél avr, úgyhogy nem tudom kipróbálni.
Megnéztem az Attiny 85 adatlapját.
2 féle mód van: unipolar és bipolar. Amikor unipolarban vagy, akkor továbbra is 10 biten ADC-zel, de eleve feltételezed, hogy egyik jel nagyobb, mint a másik. Amikor bipolarban vagy, az eredmény nem férne 10 biten, ezért 9 bit ADC lesz, a legfelső bit meg az előjel kettes komplemens tárolásban. A 10 bit az 0-1023, a 9 bit az 0-511. Nem olvastam olyat, hogy lecsökkenne a felbontás és nem is tapasztaltam, de próbáld ki.
Nekem ATmega32U4-hez kellene. Én is csak az ADC fejezet elején láttam a 8bitet, ahol összefoglalja hogy mit is tud. Azért is furcsálom, mert utána sehol nincs róla szó.
Remélem marad itt is a 10bites felbontás, akkor nem kéne külső erősítőt használni. Köszönöm a segítséget.
Sziasztok!
Használt már valaki ed16112 encodert? ATmega8-al kezelem, a linken jelölt signal B-t az INT0-ra kötöttem, az A-t a PB6-ra, mindkét portona felhúzóellenállást bekapcsoltam. Az encoder középsőlába a testen van, a test és az A illetve a test és a B között egy-egy 100nF-oskondi van. A program így néz ki:
Akár melyik irányba tekerem, nem érzékeli megfelelően hogy melyik irányba tekerem és ha pl jobbra tekerem akkor hol növel hol csökkent. Mi lehet a gond? Esetleg az encoderrel van probléma? A hozzászólás módosítva: Jan 21, 2015
Szia nem tudom hogy van definiálva az ertek változó, de mindenképp legyen volatile.
Volatile, valami az encoderrel lehet, ez ed16111o, korábban a program ec12e07-el tökéletesen működött.
A hozzászólás módosítva: Jan 21, 2015
Idézet: „Sajnos most nincs kéznél avr, úgyhogy nem tudom kipróbálni.” AVR nélkül nehéz lesz AVR-t programozni. ![]() A viccet félretéve más járható út nem nagyon van, mint kipróbálni. AVR alatt a papíron programozásnak semmi értelme, mert még a legegyszerűbb dolgoknál is problémába ütközhetsz. Én például rászoktam, hogy a B port hetedik bitjét
Az Atmel képes átvariálni IC-ről IC-re a dolgokat és hiába tudod, hogy egyik IC-n így megy az ADC, amikor lehet, hogy a másikon meg egy picit másképpen. Csak nagyon kicsit változtatnak (ADFR, ADATE és társai), de az elég, hogy 3-4 napot elszórakozz vele. A hozzászólás módosítva: Jan 21, 2015
Az a baj, hogy most tervezem a nyákot hozzá. A programozás része majd csak azután jön ha megvan a hardware.
Egyébként valakinek van rossz tapasztalata ezzel a diff üzemmódos gainnel? Nekem eléggé tetszik, pláne ha megmarad a 10bites felbontás. Külső erősítőt használva ellenállások tűrése mmiatt nem lenne garantálható a fix 10szeres erősítés. 1%os tűrés melett is akár 4-5 LSB-nyi hibát okozhat.
Szia!
Az, hogy hány biten adja vissza az értéket, és, hogy abból hány bittel érdemes foglalkozni, az más kérdés ![]() + Itt egy kis segítség az ATMEL-től, elég nagyvonalú, de elindulni el lehet rajta. (Más kérdés, hogy megéri-e neked foglalkozni vele.)
Köszönöm, átnézem ezeket is. Egyelőre még szenzor sincs meg mit mérni kéne. Csak ismerkedek a lehetőségekkel és próbálom megtalálni a legoptimálisabbat. Valószínüleg nem is lesz szükség az 1-2 lsb-s pontosságra, mivel a szenzor sem fogja tudni azt.
Még sosem jutott eszembe, hogy ezeket a kis poti helyettesítő mechanikus enkódereket INT bemenettel használjak. Egy 20 osztásos enkóder ugye 80 jelváltozást produkál egy fordulat alatt. Ha 1msec sűrűségű időzítő megszakításból lekezelem (alig pár utasítás ha csak a számláló léptetéséig megy megszakításból), akkor a másodpercenkénti 10 fordulatot még éppen le tudja kezelni (azt gondolom ez már bőven elegendő). Mivel minden programomban szoktam használni egyébként is msec felbontású időzítéseket, még csak nem is kell külön időzítő hozzá, hanem csak beszúrom ahhoz. Így nem kell foglalkozni külön pergésmentesítéssel, meg ugye nem vagyok az INT lábhoz kötve sem.
Sziasztok!
Több helyen próbálkoztam már segítséget kérni, eddig mind hiába, illetve egyik témában se találtam hasonló dolgot azért nyitottam ezt az új topic-ot ide. Nemrégiben kaptam egy AVR32 EVK1100 fejlesztő board-ot egy barátomtól, viszont nem tudom beüzemelni. Adatlap: Bővebben: Link Amiket kipróbáltam de sikertelenek voltak: Bővebben: Link Bővebben: Link Mivel régi a board ezért youtube-on sem találtam hozzá tutorialt, ez az utolsó reményem hogy hátha akad itt valaki aki ezzel vagy valami nagyon hasonlóval eddig foglalkozott ![]() ![]() Valószínűleg nem hardware hibás, mert resetelés utána az LCD működik és kiírja pl az időt meg dátumot meg ilyesmit csak programot nem tudok rátölteni. (lehet hogy a bootloadere rossz, nem tudom...) Link javítva. Használd a link gombot! -moderátor- A hozzászólás módosítva: Jan 21, 2015
Tudod ilyenkor szoktam mosolyogni.
Az Atmel nem azért rakott 10 bites ADC-t a mikrovezérlőbe, hogy limitálja a felhasználókat, amikor 100 biteset is rakhatott volna. A 10 bites ADC azt jelenti, hogy az IC-vel addig tudsz elmenni, fölötte zaj lesz. A 10 bites ADC-hez biztosított külön AVCC vonalat, sőt az IC-t le is kapcsolhatod a mintavételezés alatt, hogy az a 10 bit tényleg pontos legyen és a digitális zaj ne zavarja. Az Atmega644 doksiját olvasva differenciális módban 1x, 20x és 200x-es erősítést (gain) beállíthatsz. A 200x-nél elfogott a nevetés, mert 24uV jutna minden egyes kvantumra. Nem vagyok azon a szinten, hogy képes legyek olyan stabil tápfeszt csinálni, ami ilyen alacsony zajjal megy. Hidd el, a 9 bit sem rossz, pláne ha a VCC-t összekötötted az AVCC-vel szűrés nélkül.
Ígéretes Board-nak tűnik!
A barátod nem tud segíteni? JTAG-od van hozzá? Átnézted ezt a doksit?: Bővebben: USB Bootloader Ez is sokat segít! AVR32 EVK1100 Getting Started Guide Pontosan hogyan akartál programozni? Hól akadtál el? A hozzászólás módosítva: Jan 22, 2015
És ezen a Forumon próbálkoztál?
How to program EVK1100 with bootloadre
Köszi a tippeket
![]() A napokban utána nézek a forumon meg átfutom azt a leírást is amit linkeltél aztán majd írok mire jutottam, remélem menni fog tényleg szép board ![]()
Üdv kedves fórumtársak!
PWM vezérléshez keresem a megfelelő AVR-t, amivel 8-9, esetleg még több csatornán tudok különböző kitöltési tényezőjű PWM-jelet előállítani. Ennek a mikrovezérlőnek 9 csatornát írnak az adatlapján, de a specifikációban a szabályozásra csak két regisztert tüntetnek fel a "Register summary" részben (OCR1A és OCR1B (igazából 4, mert van alacsony és magas bájt is mindegyikhez)). A kérdésem, hogy akkor mit jelent az a 9 PWM csatorna az adatlapon?
Sziasztok!
Ma jött meg az új Atmega1280-am, de ugyanúgy ehhez se tudok ISP programozómmal hozzáférni, az AVR előre felforrasztva jött, tehát nem én rontottam el a cinezést. Adatlap szerint kötöttem be, semmi melegedés se semmi, de az AVR Studio 6-ban nem tudok komunikálni vele... ![]()
Kipróbáltam a tirisztoros túlfeszültségvédelmet (crowbar), lenne kérdésem.
A kapcsolás itt látható. A teszt terhelés 2k volt, a step down pedig LM2575. A kapacitást lehagytam, mert mikrovezérlőt hajtunk, túlfeszültségnél védekezni kell, nem kapacitást töltögetni. Az első túlfesz azonnal kinyírta a zener diódát (5.1V-osból - ami 4.4V-on nyit - lett 2.7V-os). A kapcsolásban nincs ellenállás a tirisztor gate-je és a zener között, tehát elindult az áram rendesen. Második próbálkozásra a zener elé betettem 100 ohm-ot, az megvédte a zener-t, de bekapcsolásnál azonnal rövidzárat okozott. A harmadik próba véletlenül működött: a tirisztor gate-jét 500 ohm-mal a földre kötöttem. Ez annyit tesz, hogy sorba lett kötve 500 ohm, - 5.1V (4.4V) zener - 100 ohm. Ez adott némi terhelést, az ellenállásosztó kicsit növelte a toleranciát túlfeszültségre, így 5.4V körül kapcsolt be. Szerintetek a harmadik megoldás életképes, vagy inkább másképp kellene? A hozzászólás módosítva: Jan 24, 2015
Szerintem van a Tmer0 1 csatorna, kimenet PA2 OC0A
Timer1 OC1A/B 2 csatorna, Elvileg választható kimenetek a PB0-7 De a PB4-5 lenne a külső kristály csatlakozás! Bővebben Adatlap 120.oldal Ez össz. 3 független PWM csatorna.
Lehet, hogy mindkettő lesz. Ez egy step down áramkör, ami ha meghülyül, nyomja a 17V-ot 80W-on, amit a transil nem képes megfogni. Ha valami megpattan, első menetben a transilt nyírja ki, utána az összes többi áramkört egyszerre. A crowbar ezt visszatartja.
Ami viszont a transil előnye, az az induktív rúgások szűrése (az is van, hogy ne unatkozzak).
Én ezt a kapcsolást gondoltam. Az ellenállást úgy kell megválasztani, hogy a legnagyobb feszültség esetén se menjen tönkre a zener és tirisztor. A zener értékét próbálgatni kell, mert a soros ellenállás, a zener feszültsége, a tirisztor gyújtófeszültsége, gate árama együttesen határozzák meg a begyújtást.
A próbálgatás idejére a biztosíték helyére valami kis értékű, nagy teljesítményű ellenállást kell tenni. A tirisztor begyújtáskor rövidre zárja a kimenetet, az ellenállásnak ezt addig bírnia kell, amíg meg nem szünteted a betáplálást (mert csak akkor kapcsol ki a tirisztor).
És létezik hasonló árkategóriás AVR 8-9 független PWM csatornával?
Vagy van más megoldás 8-9 független PWM-jel előállítására?
A kérdés az, hogy mire akarod használni. Én mezei Atmega16A-n nyomatok 16 vonalon szoftveres PWM-et.
Minthogy DC motort vezérlek 50Hz-en, így nem kell hardveres PWM hozzá. A DC motort nem különösebben érdekli, hogy most mennyi az az annyi, 54%, vagy netántán 56%. A hozzászólás módosítva: Jan 24, 2015
Kérdés mi a feladat?
Megoldható e 3 HW PWM + 6 Softveres PWM-el vegyesen? Ha szükséges a gyors reakció idő csak az ATmega1281-ban van 6 timer, 9 HW PWM.
Sziasztok.
Megépítettem ezt az avr isp programozót és az a kérdésem, hogy mindenképpen kell a 2 kondi meg a kvarc az "avr socket"-be. Attiny esetében is így működik?
Nem kell, a legtöbb AVR gyárilag belső RC oszcillátorról megy, többnyire 1MHz-en, néhány ATTiny 1.2MHz-en.
A hozzászólás módosítva: Jan 24, 2015
|
Bejelentkezés
Hirdetés |