Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
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
Lapozás: OK   64 / 840
(#) snapscan válasza Topi hozzászólására (») Aug 18, 2008 /
 
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?
(#) Topi válasza snapscan hozzászólására (») Aug 18, 2008 /
 
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.
(#) gtk válasza Topi hozzászólására (») Aug 19, 2008 /
 
  1. function
C-ben? Milyen forgato?
(#) Topi válasza gtk hozzászólására (») Aug 19, 2008 /
 
Ohh... Ennyi nyelv hátránya

Néha történnek velem ilyenek Javítottam!
(#) fecus válasza fecus hozzászólására (») Aug 19, 2008 /
 
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).
(#) szilva válasza fecus hozzászólására (») Aug 19, 2008 /
 
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.
(#) matrix64 válasza Topi hozzászólására (») Aug 19, 2008 /
 
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.
(#) trudnai válasza szilva hozzászólására (») Aug 21, 2008 /
 
Szia Szilva,

Most gyorsan rakerestem a googlin, ugy tunik a "_delay_ms" floatoskent van definialva:
  1. void _delay_ms ( double __ms )

Ez akkor megmagyarazza a problemat - ill nyilvan ha konstanssal hivod meg akkor kioptimalizalja neked a fordito(?).

Bővebben: Link
(#) trudnai válasza matrix64 hozzászólására (») Aug 21, 2008 /
 
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.
(#) matrix64 válasza trudnai hozzászólására (») Aug 21, 2008 /
 
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
(#) wg_kezdo hozzászólása Aug 22, 2008 /
 
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.
(#) szilva válasza wg_kezdo hozzászólására (») Aug 22, 2008 /
 
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...
(#) Prinner hozzászólása Aug 22, 2008 /
 
Ü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?
(#) szilva válasza Prinner hozzászólására (») Aug 22, 2008 /
 
A bemenetekre programoztál felhúzást, vagy csak úgy lógnak a levegőben?
(#) Prinner válasza szilva hozzászólására (») Aug 22, 2008 /
 
Levegőben lóg az összes.
(#) szilva válasza Prinner hozzászólására (») Aug 23, 2008 /
 
Próbáld meg a felhúzásokat bekapcsolni a nem használt lábakra!
(#) wg_kezdo válasza szilva hozzászólására (») Aug 23, 2008 /
 
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
(#) Prinner válasza szilva hozzászólására (») Aug 23, 2008 /
 
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.
(#) Topi válasza Prinner hozzászólására (») Aug 23, 2008 /
 
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.
(#) Prinner válasza Topi hozzászólására (») Aug 23, 2008 /
 
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).
(#) akiro hozzászólása Aug 23, 2008 /
 
Üdv! Atmel 24c08, tudom ez nem AVR... Mivel lehet ezt programozni? STK200 nem hiszem hogy jó.
(#) IMi válasza akiro hozzászólására (») Aug 23, 2008 /
 
Hello!
A sokat emlegetett JDM.
Bővebben: Link
(#) TavIR-AVR válasza akiro hozzászólására (») Aug 23, 2008 /
 
PonyProg.

Ez egy I2C-s EEPROM... (mellékesen az ATMEL gyártja a típusodat)
(#) akiro válasza IMi hozzászólására (») Aug 23, 2008 /
 
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.
(#) TavIR-AVR válasza akiro hozzászólására (») Aug 23, 2008 /
 
(#) szilva hozzászólása Aug 23, 2008 /
 
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?)
(#) Topi válasza szilva hozzászólására (») Aug 23, 2008 /
 
Ezt csak Te látod (meg mi, moderátorok), amíg nem publikus a cikk, mások nem látják.

-- Topi
(#) szilva válasza Topi hozzászólására (») Aug 23, 2008 /
 
É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?
(#) wg_kezdo hozzászólása Aug 24, 2008 /
 
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.
(#) TavIR-AVR válasza wg_kezdo hozzászólására (») Aug 24, 2008 /
 
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!!!!)
Következő: »»   64 / 840
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem