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 |





Javítottam!
,bár lehet hogy bennem van a hiba
, aztán belekeveredtem egy USI IIC rutinba
..sztem nagyobb feladatoknál kell a C. 

.




