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 Idézet: „Pl: egy led-be led-ki program minden időzítés nélkül mondjuk C-ben uS, assemblyben nS” És mégis mi okozna ebben ezerszeres sebesség külömbséget?
Ha a PORT regiszterbe nem a megfelelő módon írsz be adatot, változóból.
Gondolok itt shift műveletekre, inc és dec parancsokat használó egyszerű led ki-be kapcsolgató programra. Ha GPR-t céltudatosan használod, sokkal gyorsabb, mint ha a C fordító által helyesnek vélt kód fordul bele.
Ohh... Ennyi nyelv hátránya
Néha történnek velem ilyenek Javítottam!
Topi! Köszi. Maradok az asm-ben.
Másik kérdésemre tudja valaki a választ ("Milyen progival tudom előállítani a pwm adatokat a wav fájlból?"). Még mindig egy "kezelt" wav-ot szeretnék lejátszani az avr 8 vagy 16 bites pwr-jével. Találtam eeprom programozó rajzot. Ezzel feltölthetem a dallamot az eepromba, így megspórolom a soros progit, csak egy kész bytesorozatot kellene előállítani a wav-ból (ami ugye pcm).
Bármilyen hangmatató progival (pl. Soundforge), amivel tudsz menteni tömörítetlen, PCM wav-ba. A wav eleje az ún RIFF header, amit akár értelmezni is lehet egy egyszerű progrival, de egyszerűen el is lehet hagyni, ami mögötte van, az a nyers PCM értékek sorozata (sztereónál bal csatorna-jobb csatorna adatai felváltva).
Gyakorlatilag annyi a tennivaló esetleg ezzel, hogy ha előjelesen van tárolva ott az érték (erre most nem emlékszem), akkor egy eltolt, előjel nélküli értékre kell hozni (pl. előjeles 16 bites értéknél hozzáadni 32768-at), és az így kapott értékek már mehetnek is a PWM-be. Idézet: „Általában egy 2-3 szoros szorzó biztos benne van a dologban” Hát,nem tudom...nemrég írtam egy lcd lib-et asm-ben,összehasonlítottam a Fleury LCD lib fordított kódméretével,alig nyertem ,bár lehet hogy bennem van a hiba , aztán belekeveredtem egy USI IIC rutinba ..sztem nagyobb feladatoknál kell a C.
Szia Szilva,
Most gyorsan rakerestem a googlin, ugy tunik a "_delay_ms" floatoskent van definialva:
Ez akkor megmagyarazza a problemat - ill nyilvan ha konstanssal hivod meg akkor kioptimalizalja neked a fordito(?). Bővebben: Link
Es az az LCD lib C-ben volt irva?
Amugy nyilvan asm-ben is lehet nagy kodmeretet csinalni, es ketsegtelen, hogy egy osszetettebb feladatnal talan nehezebb nyilvan tartani hol es mit erdemes optimalizalni - pl milyen memoria teruleteket lehet ujra hasznositani, vagy ha valtozik a kod akkor az hogyan befolyasolja a kod megbizhatosagat es hatekonysagat. Ezeket a problemakat ugyanugy asm-ben is modularizalassal lehet athidalni valamint modern linkerek segithetnek a memoria kihasznaltsagban ill. halott kod eliminalasban stb.
C-ben van írva...,de megnéztem a codevision-t is ,épp hogy kisebb lett a kód ,pedig ott asm-ben van írva a lib.Bővebben: itt
Találtam egy kapcsolási rajzot ami egy egyszerű LED villogtató tulajdonképpen pont az amire nekem szükségem lenne.
Megépíteni sem nehéz csak az egyetlen ami gondot okoz az az MCP1700-as alkatrész ami, ha jól látom a 9V-ból egy jó kis 5V-ot csinál. A HeStore-ban találtam hasonlót, de, hogy jó-e az kétséges: 78 L 05 Feszültségszabályzó IC, 5V Ha jól értelmeztem az adatlapját akkor ez szinte bármiből 5V-ot csinál? (najó valami 40V-ot láttam maximumként) És mindezt úgy, hogy 100mA-t bír ami gondolom elég az AVR-nek. Az ára miatt jó lenne, ha ez műdödne, igaz az eredeti rajzon van néhány kondi és azokat nem tudom mire valóak.
Igen, jó lenne a 78L05 is, egyetlen nagy különbség van az MCP és eközött: a saját nyugalmi árama az MCP-nek 2uA körül van, a 78L05-nek 4-5mA szokott lenni. Azaz több mint 2000-szer annyit fogyaszt "kikapcsolva" az áramkör a 78L05 felhasználásával. Merthogy láthatóan az egész áramkör úgy van megtervezve, hogy "alvó" állapotban minden fogyasztót ki tudjon kapcsolni (még a potit is), így minimalizálva a fogyasztást - nincs is rajta "főkapcsoló".
Egy 9V-os elemre lehet számolni mondjuk 200mAh kapacitást, azt folyamatos 5mA-rel terhelve 40 óra alatt kimeríted a telepet, ami nincs 2 nap. Az MCP-vel az alvó fogyasztás 5uA körülre letornászható, ami több mint 1000 nap "készenléti" időt jelentene, szerintem inkább járj utána az MCP-s stabilizátornak De mégegyszer mondom, hogy próbára megépítheted a 78L05-tel is, ugyanúgy működni fog! Egyébként rettenetesen utálom, amikor egy áramkört az alkatrészekkel rajzolnak meg és nem azok nemzetközileg elfogadott szimbólumaikkal. A neten már nem az első, amivel találkozom, nem tudom, ki találta ezt ki, de erősen letörném a kezét...
Üdv.
Építettem egy áramkört atmega128-al, a kontroller még nincs felprogramozva, de isp-n keresztül kommunikálni tudok az eszközzel, egy led villogtató programot is írtam rá példaképpen, szóval eddig minden rendben. A probléma az, hogy 40-45 fokosra langyosodik a tok és felvesz vagy 150mA-t, pedig minden bekötés stimmel, minden portja bemenet(kivéve a ledes, de programozatlanul is melegedett), az osc 16megás kvarc. Valaki találkozott hasonló problémával?
A bemenetekre programoztál felhúzást, vagy csak úgy lógnak a levegőben?
Próbáld meg a felhúzásokat bekapcsolni a nem használt lábakra!
Tesztnek gondoltam illetve nem nagyon lenne nyugalmi állapot gyakorlatilag lenne egy mechanikus főkapcsoló így ha nem használom egy "gramm" áramot sem kap .
Amúgy az ok egyszerű az MCP-t nem tudom beszerezni . A kezdőknek viszont, mint én is vagyok nagyon jók az ilyen rajzok, ha ott van mellettük a rendes rajz is. A legtöbb időm azzal megy el, hogy a rajzra ráirogatom, hogy melyik a B,C,E meg melyik melyik láb, bejelölgetni, ha kell stb... Amikor az "alkatrészeket gyakorlom" akkor jó, de amikor csak meg akarok valamit építeni és inkább a programozással foglalkozni akkor jobb, ha egyszerű a megépítése
Felhúzva is úgyanúgy fűt. Valószínűleg a kontroller hibás, mert úgy forrasztottam ki. Az előző áramkörben jó volt, kiforrasztás előtt töröltem a flasht, most bármit csinálok, mindig melegszik.
Igen, ilyen nekem is volt. Tökéletesen működött, de 100-150mA-t evett meg, minden hiba nélkül. Minden IO működött, proci is programozható, de fűtött kegyetlenül.
Sok kutatás és hibakeresés után a kukában kötött ki a mega8-as. Ilyen akkor fordulhat elő, mint megtudtam egyik ilyen alkatrészbeültetéssel foglalkozó cégnél lévő ismerősömtől, hogyha a sztatikus feltöltődés nyírja ki belülről. Aka. ESD.
Akkor mindenképpen csere lesz, mert még összesen 100mA menne el a portokra (tranzisztorok bázisárama,ledek meghajtása). Egyébként megfigyeltem, hogy 20 perc működtetés után csak kb. 130mA-t vesz fel (bekapcsoláskor 150-et).
Üdv! Atmel 24c08, tudom ez nem AVR... Mivel lehet ezt programozni? STK200 nem hiszem hogy jó.
PonyProg.
Ez egy I2C-s EEPROM... (mellékesen az ATMEL gyártja a típusodat)
Nagyon szépen köszi a válaszokat.
Égő kérdés, de sürgős a gond. Nekem nincsenek épp ilyen zener-ek, sőt épp semmilyen sincs végülis... Viszont még ma megoldást kellene találnom... Mivel nekem csak egy 24c08-at kell a TV-ben frissíteni, hol lehetne butitani ezt a rajzot? Vagy ez már a másik topic? Köszi mindenkinek a segítséget, de tényleg.
Hölgyek, Urak!
Elkezdtem írogatni egy cikkecskét a nemrég összedobott programozómról. Ránéznétek, hogy nagyjából jó lesz-e így? Észrevételeket, javaslatokat szívesen veszek. Bővebben: Link (A technikai részével sem vagyok tisztában teljesen, ha most lezárom, akkor kikerül a kapcsolások közé és később már nem tudom módosítani? Vagy kiegészíteni attól még ki tudom később?)
Ezt csak Te látod (meg mi, moderátorok), amíg nem publikus a cikk, mások nem látják.
-- Topi
Érdekes, az URL-t megadva az ismerősömnek délután el tudta olvasni. Akkor mit tegyek, zárjam le, és a majdani kiegészítéseket később bele tudom szerkeszteni?
Talátalam egy jó kis kapcsolást szúnyogriasztásra itt a HE-n:
Kapcsolás (mindent elhagynék csak az IC3 helyére tennék egy 45-öst meg a tranyó és a hangszóró illetve esetleg a tápellátáshoz valami szabályzó meg hasonlót). Ez elvileg 10 féle 40-60Khz közötti frekvenciát szólaltat meg sorban egymás után, hogy ne legyen monoton. Az elkészítésnél felötlött bennem, hogy esetleg egy ATTiny45-össel is meg lehetne csinálni, ha az képes ezt a frekvenciát megszólaltatni azzal a BD680-as tranzisztorral. Így szoftveresen elég sokmindent lehetne csinálni vele ezen kívül kisebb dobozban is elférne ami szintén szempont. Egyenlőre csak az elvi megvalósíthatósága érdekelne a többit remélem meg tudom oldani, de nem szeretnék belefogni, ha valami miatt nem lehet kivitelezni. A szoftvert Basicben szeretném elkészíteni.
Képes.
A Timer (időzítő) segítségével, de SWből is. Bascomban, röviden (vázlat) (és még timer nélkül)... $tiny portb.2=output'itt a hangszoro dim i as byte dim j as byte dim tomb(10) as byte tomb(1)=30 tomb(2)=200 tomb(3)=55 tomb(4)=60 tomb(5)=70 tomb(6)=100 tomb(7)=90 tomb(8)=70 tomb(9)=180 do for i= 1 to 10 for j=tomb(i) to 255 toggle portb.2 waitus 1 'vagy néhány nop utasitas next j next i loop Program ~6-800 byte lehet. Dióhéjban: Az "ugrálás" meg lehet random, vagy akár előre megírt szerint is. (a timer honnan számláljon a jelszintváltásig). T13-ba is még szerintem belefér. Kérdés kell e még valami rá . T13/25/45/85 tud sokmindent. 8 láb, 1 reset, 2 táp. 5 lábbal garázdálkodhatsz. Ebből 1-t visz el a hangszóró meghajtása..... A maradék 4-en még lehet bármi (világítás, hangmagasság-függő visszajelzés (csecsemők ~22-24kHz-ig hallanak!!!!) |
Bejelentkezés
Hirdetés |