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
Wav lejátszót szeretnék készíteni amihez a következőt gondoltam ki:
Egy AVR "után" kötök egy A/D konvertert és egyszerűen kiküldöm a wav file byte-jait. (persze csak 8 bit és mondjuk elfogadható sebesség). A kérdés, hogy jó irányba indultam el vagy teljesen hülyeség? (ilyen konvertert 5-600 Ft-ért láttam ezek jók hozzá vagy komolyabb kell?)
Bascom mint szerkesztő és mint szimulátor
Bascom szimulátorai, hibakeresés. Amúgy a forráskódból a $sim utasítást hagytad ki. Ekkor a várakozások is szimulálódnak....
Ez is megoldás. Kérdés, hogy
- R/2R DA konverter nem elég jó? - R-RR konverter (1,5 bites) lejátszó nem elég? A VAW hol tárolódik? I2C EEPROM, SD kártya vagy SPI memória? Idézet: „Egy AVR "után" kötök egy A/D konvertert és egyszerűen kiküldöm a wav file byte-jait.” A lejátszáshoz ne A/D hanem D/A konvertert keress! 8 bites felbontást esetleg a mikrovezérlő PWM kimenetén is tudsz produkálni, tehátmég konvertert sem muszáj venni. Ha D/A konvertert akarsz használni, akkor már érdemesebb valami igényesebb megoldást összehozni (pl. 16 bites D/A). MAXIM MAX541 pl. 8 lábú, de 16 bites, s SPI kompatibilis vezérlésű.
Mégegy ajánlat:
Cirrus Logic CS4334-KSZ 8-Pin, 24-Bit, 96 kHz Stereo D/A Converter Adatlapja itt található
Na kreáltam egy másik progizót, kifogástalanul működik Viszont most Attiny13-ra cseréltem a Mega8-at. Szoftveres UART-tal küzdök éppen de nemigazán akar még összejönni.
Bascomban, minta:
'The ATTiny13 is used. $regfile = "ATtiny13.dat" $crystal = 1200000 Config Portb.2 = Output Led Alias Portb.2 Config Adc = Single , Prescaler = Auto , Reference = Internal Dim Adcin As Word Open "comb.1:9600,8,n,1" For Output As #1 Open "comb.0:9600,8,n,1" For Input As #2 Start Adc Do Set Led Waitms 500 'get adc reading on channel 3 (pin 2 on attiny13) Adcin = Getadc(3) Print #1 , "adc ch#3: " ; Adcin Reset Led Waitms 500 Loop End
Valóban, elírtam. Szóval Digitálisról Analógra átalakító .
Ezt néztem ki hirtelen: DS1809-100 A PWM kimenet is érdekes lehet csak nincs meg hozzá a megfelelő ismeretem, de utánanézek. Az igényesebb megoldás pedig erősen pénzfüggő illetve, hogy szükséges-e. Szinti lenne belőle a végén így először egy egyszerűbb megoldást akarok kipróbálni. A D/A átalakítót azért gondoltam, mert anno írtam assembly+pascal párossal szinti programot dos alá így ha csak "ki kell küldeni" a jelet akkor talán egyszerűbb.
Utánanézek, még nem hallottam a R/2R és az R-RR konverterekről.
A Wav tárolását természetesen valamilyen memória kártyán gondoltam, de első körben elég egy szinuszos zenét előállítani utána jön majd a tárolás. (szépen lépésenként) . Anno LPT-re is készítettek hangkártyát, de emlékeim szerint ott csak pár ellenállás kellett hozzá?
Én ezt ajánlottam. A www.ret.hu-nál is szokott lenni, de most éppen nincs raktáron. (ÁFÁ-val 700 Ft volt utoljára, tehát nem egy ökör ára...)
Erre az LPT port-os DAC-ra én is emlékszem, el lehetett készíteni ellenállás létrából vagy valamilyen DAC IC-vel is, .mod-okat hallgattunk vele, meg elvétve néhány játék is használta.
COVOX-nak hívták, ha jól emlékszem.
Azaz, a régi szép idők .
a .mod még 4 csatornán is csodákra volt képes sok zenét írtam amíg az impulse trackert nem kezdtem el használni. Na nekilátok átnézem mit tudok kihozni belőle.
Köszi a segítséget közel állok már a sikerhez épp csak ~3ms az eltérés az elvárttól.. Órajelet hiába állítok az csak a késleltetést befolyásolja, ha 8-as osztás van az órajelen az túl sok, ha nincs rajta akkor meg túl gyors bps-t hiába állítok nem találom a köztes időt, megint ugyanaz vagy túl sok vagy túl kevés
(Amúgy ez még az én progim) (Meglátszik hogy program beépített rutinja... ) Küldök 2 képet amin látszik üdv
Ajjaj. Lemaradtam... Mihez kell ekkora pontosság?
Fix órajel?
Nyílt lapokkal: MikroC-vel programozok, beépített rutint használok, az első képen egy működő még PIC-es UART képe látható 1200 baud sebességgel, jelenleg a Tinny13-at nem tudom így belőni. A működőnek (PIC-es) a teljes ciklus ideje: 8,368mSec, a másiknak (Tinny13) meg 5,144mSec. Csináltam egy vevő részt is, ami a PIC es távirányító jelét sikeresen veszi de ezt nem. ezt akarom elérni hogy detto ugyanúgy küldje a jelet remélem most érthetőbb voltam
Jéé azthittem nagyobb problémát jelent ez nekem Egész egyszerűen írtam én egy rutint (még kezdetleges) Tökéletesen viszi. Íme:
char port; char i; char a; void var(){ Delay_us(800); } void goo(){ PORTB.B4 = 1; //Nullazas var(); PORTB.B4 = 0; //START bit var(); PORTB.B4 = port.B0; //0.Bit var(); PORTB.B4 = port.B1; //1.Bit var(); PORTB.B4 = port.B2; //2.Bit var(); PORTB.B4 = port.B3; //3.Bit var(); PORTB.B4 = port.B4; //4.Bit var(); PORTB.B4 = port.B5; //5.Bit var(); PORTB.B4 = port.B6; //6.Bit var(); PORTB.B4 = port.B7; //7.Bit var(); PORTB.B4 = 1; //STOP Bit var(); } void main() { Delay_ms(100); DDRB = 0b010000; PORTB = 0b11111; do{ port.B0 = ~PINB.B0; port.B1 = ~PINB.B1; port.B2 = ~PINB.B2; port.B3 = ~PINB.B3; port.B4 = 0; port.B5 = 0; port.B6 = 0; port.B7 = 0; a = port; // Adat másolása port = a * 11; // 11-el szorozni az értékeket (karakterekhez) goo(); Delay_ms(500); }while(1); }
Hat mindenesetre erdekes ez a MicroC ha egy sima char-nak deklaralt valtozon mukodik a bitfield... Ne lepodj meg azon ha ez a kod mas forditonal nem megy - _az_ a normalis, nem az amit most meg tudsz csinalni igy
Oké meggyőztél! WinAVR-rel viszont még jócskán vannak gondjaim, mint pl. egyes változók bitjeinek értékét más változónak a bitjére állítani, nah ez értelmes lesz
mondjuk nyomógomb kezelés: PORTC.4 = PINB.4 (tudom hogy nem ilyen a szintaktika) vagy akár változók esetében: a_valtozo.1 = b_valtozo.5 ... A PORTC 4.bitje vegye fel a 4.biten levő gomb értékét. Esetleg tudnál ebben segíteni?
Sziasztok!
Hogy kell AVR-el frekvenciát mérni? Valaki megtudja mondani? és source codeot tud küldeni?
Mérni kell a bejövő két impulzus közötti időt (a timer capture üzemmódja igen hasznos ilyen esetekre), vagy számolni kell, hogy adott idő alatt hány impulzus érkezik.
Source kódot találsz a neten. Googli a barátod
Mintaprogi + magyarázat:
Külső impulzus megszámlálása résznél
Valaki legyen szíves megmondani hogy az alábbi rajzon helyes-e az ft232rl és a tinny2313 közötti RXD-TXD lábak bekötése. Vagy talán keresztbe kéne őket kötni?
Az adatlapok alapján én helytelennek tartom az összekötést, s ezt erősíti meg az Arduino Diecimila kapcsolási rajza is.
Mintha már ez a kérdés lett volna.....
A Tx-Rx esetén a lábakat _mindíg_ keresztbe kell kötni.
Hellósztok. A következő a problémám. Nemrégiben vettem egy stk 500-ast, avr studio 4-el programoztam attiny 45-ös prockót, meghalt a rendszerem, vírus miatt, majd új win, és minden progit ujra szettem netről. De miután ujra telepítettem az avr studiot, csak ujab verziót találtam, mert a régiek 1 hibaüzenettel leáltak a telepítéssel. De az újab verzió a az:
AVR studio 4 version:4.15 -az stk 500-asommal úgytűnik nem kompatibilis. Frissítést kér, majd mikor leokézom, kiírja hogy nem találja a programmert, és kilép. ha meg figyelmen kívül hagyom, és csak az procit törlöm majd felírok rá valami progit, lelassulva működik. Mi lehet a probléma? honnan tudnék nomálisan működő avr studió4 et leszedni?
Nekem is ugyanez volt, amikor felraktam az új AVR Studiot, de ez megoldotta: Bővebben: Link
Miután felraktam, ugyanúgy frissítést kért, de ha azt nyomtam, hogy mégse akkor hibátlanul belépett a programozó menübe. Ha mégse menne, akkor ide felraktam egy régebbi AVR Studiot:Bővebben: Link
Gyári programozod van vagy utánépített?
Én a HEstore-bol megveheto AVR ISP kitet vettem meg. Nekem is frissiteni akar az AVR Studio de ha nemet mondok neki ugy is frankon müködik.
Én is a kit-et vettem Hestor barátunktól. de nálam az a baj ha nem engedem hogy frissítsen, akkor pl 1 egyszerű sziréna hang beállított sebességnél legalább 4-5x lassabb. mintha lelassulna a progi.
|
Bejelentkezés
Hirdetés |