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
Nekem >>ez<< mukodik. Esetleg hasonlitsd ossze azzal amit epitettel.Elkotes, tul hosszu kabel, kontakthiba, idetlen program, 100nf hianya, - lehetseges.
HELLO !
Azt szeretném megkérdezni, hogy milyen USB-s programozót ajánlanátok mellyel lehet minden AVR-t programozni ? Nézegettem az STK500-ast és megtetszett csak kapcsirajzot nem találtam hozzá viszont ez nem támogat valami sok AVR-t. Lehető legkevesebb alaktrész legyen benne lehetőleg ne SMD de ha csak olyan van és jól működik akkor az is lehet. A válaszokat előre is köszönöm.
Sziasztok.
Segitségeteket szeretném kérni, egy attiny25-ös avr-böl szeretnék pwm jelet kicsalni eddig nem tul nagy sikerrel. azt szeretném kérni hogy leirnátok hogy melyik regisztereket kell megirni hogy pwm jelet kapjak. Köszönöm.
Egy fontos dolgot elfelejtettem engem a nagy frekis pwm beállitása érdekelne a normál orajelröl müködö az sikerült.
Köszönöm.
Keresek mikrovezérlőhöz olyan IC-t, amivel tudnám tiltani a kimeneteket, közvetlenül a proci mellé téve (programot nem tudom módosítani benne). Olyan kéne, mint például egy 74hc04, de az volna a lényeg, hogy balról jobbra továbbítsa az adatot (vagy fordítva) és legyen tiltható a kimenete.
Azaz pl ha 10 lábú az IC, akkor bemenet->kimenet: 1->10, 2->9, 3->8, 4->7, 5->6. Persze plusz tiltó (enable) láb. Ez tilthat egyszerre 4 vagy 5 lábat is. Köszönöm! Remélem érthető! Jah: Tiltás: nem 3 state IC-re gondoltam, nem "lebeghet" a kimenet.
4502, ehhez hasonlót keresek: "E" engedélyező funkció lenne a lényeg, annyi különbséggel, hogy bal oldali lábak legyenek a bemenetek, jobb oldaliak a kimenetek.
Idézet: „annyi különbséggel, hogy bal oldali lábak legyenek a bemenetek, jobb oldaliak a kimenetek.” "Fejjel lefele" nem tudod berakni? Amugy nem tudom mi a kovetelmeny, de akar mikrovezerlobe is beprogramozhatod ezt a funkciot...
Előzőben leírtam, hogy lehet fordítva is, de lehetőség szerint "soros" legyen, tehát ne 6 átkötés kelljen eme trükk miatt.
Kéne vagy 6-7db ilyen IC, és ilyen lábszámban nem mindegy a 70ft, vagy a 400ft-s ár
Ja, ertem mar mit szeretnel (azt hiszem). Picit keresgeltem a hex bufferek kozott es olyat nem talaltam ami ilyen jobbrol-balra (vagy forditva) elrendezesu lett volna. Mindegyik a be-ki meneteket egymas melle rendezte, tehat gyanitom inkabb azon kellene elgondolkodni hogyan lehetne betenni a paneledre. Ha pl. DIP tokozasu akkor a labak kozt elfernek a vezetekek, ha pedig pl. SOIC akkor szerintem el lehet 4 db vezeteket felfele, ill 4-et lefele vezetni a tok alatt.
atmega48?
Sok lab, minimalis prg.... 11 lábpár és 1 láb a tilt/engedélyez.... (szembe van egymással...) Ekkor belső oscról jár (8MHz), így a kapcsolható lábállapot kb. 1-1,5 MHzvel járatható.... Ár ~250 Ft/db. Program ~10-12 sor (Bascom) Tipp2: kapuIC, pl. 74ls544, 74ls244/245 ikll ezek szimmetrikus párjai. ezek 8 vonalat tudnak....
Én Atmega8-ra gondoltam, program sem lenne gond, csak sajna helyhiány van/lesz a panelon. Emiatt gondoltam a kész "hagyományos" ic-ket.
Úgy tűnik, muszáj lesz külön modulba tenni ezt a funkciót
Hello!
megnéztem 10k-t javasol, de továbbra sem működik Amit nem értek, hogy Atmega8-nál, ha engedélyezem az SCL és SDA akkor a START küldés az sikeres. Itt is engedélyezem, de a mindig 0x00 kerül a TWSR-be ami TW_BUS_ERROR. Hol lehet a hiba?
Sziasztok!
A képen látható probléma áll fent. Bármit akarok csinálni ezt írja ki. Vadi új Attiny45, most vettem ki a csomagolásból, de nem tudom programozni. Fuse biteket kiolvassa, ott hibát nem ír, de utána vége. Se törölni, se írni nem lehet.
Tápot kap az Attiny45? Más avr-t tud írní?
Kap tápot, mert "programming mode"-ba belép sikeresen. Ha lehúzom a tápról, akkor már ott is hibát ír. Van másik tiny45 is, de azzal is ugyanez a probléma.
Két AVR közötti jeltovábbításhoz kell felhúzó ellenállás?
Kb 2cm távolság van közöttük. A kimenetek tiltását akarom megoldani AVR-rel, nem találtam ehhez megfelelő IC-t
En pl. nem ertem mit szeretnel a 2 AVRel...
Óóó, az nem probléma
Van egy kész, felprogramozott AVR, ami lehetne bármi, akár egy Pic, vagy LPT port is, bármi. (Egyébként egy ledes kijelző.) Ehhez nem tudok hozzányúlni, nem tudok programot módosítani benne. Viszont kéne egy kis fényerőt állítani rajta. Potival nem lehetséges, mert kéne vagy 30db potit egyszerre tekergetni. Így a "jel" vezetéket megszakítom, és ezt szaggatom meg PWM-szerűen.
Es ennek a kijelzonek a tapjat nem lehet PWMmel szabalyozni esetleg?
Kijelző= ledek halmaza.
AVR adja a tápot neki a kimenetén, ellenállásokkal van a földre húzva. Erre írtam a potit. Végiggondoltam már párszor. Kell felhúzó ellenállást alkalmazni az AVR-ben, ha közvetlenül vannak összekötve? Vagy ott lényegében az 1. AVR úgyis alapból le vagy felhúzza a jelet, mint pl az 555 kimenete?
LED matrix? pixelenkent akarsz fenyerot szabalyozni? Kapcsolas nelkul kivancsi vagyok ki fogja ki talalni, mit is szeretnel. (de lehet csak en nem ertem)
Sima ledes kijelző, nem saját termék, nem én gyártottam, hozták hozzám. Futnak rajta a betűk. Reklám. Nappal jó a fényereje, de este világítani lehet vele. Nem a kapcsolásban kérek segítséget, hiszen az már gyárilag megvan, tokkal vonóval. Emiatt nincs lehetőség a teljes kijelző fényerejét állítani.
Amit szeretnék: van egymás mellett két AVR kb 1-2cm-re egymástól. Be kell kapcsolni a felhúzó ellenállást az AVR bemenetén, vagy felesleges, mert a másik AVR kimenete ugyanezt "megteszi" saját magán belül?
Idézet: „Kell felhúzó ellenállást alkalmazni az AVR-ben, ha közvetlenül vannak összekötve? Vagy ott lényegében az 1. AVR úgyis alapból le vagy felhúzza a jelet, mint pl az 555 kimenete?” Ha normalisan, aktiv magas es aktiv alacsony-kent van az 1. AVR kimenete kezelve, akkor nem kell nyilvanvaloan. Ha azonban tri-state-kent, pl. aktiv alacsony es magas impednancias input-kent van a kimenet meghajtva, akkor eleg ha a 2. AVR-ben bekapcsolod a belso felhuzo ellenallasokat. Ha azonban az aktiv meghajtas a magas, akkor a belso felhuzo ne legyen bekapcsolva viszont kulso lehuzo ellenallasokat tegyel bele. Nyilvan a masik oldalon is ugyanolyan meghajtast kell alkalmaznod. Amugy meg mindig nem ertem, hogy miert nem fersz hozza a forrashoz, vagy hogy miert nem lehetne vagy lenne egyszerubb az adott funkciot megvalositani egyetlen AVR-ben?
Idézet: „Sima ledes kijelző, nem saját termék, nem én gyártottam, hozták hozzám. Futnak rajta a betűk. Reklám. Nappal jó a fényereje, de este világítani lehet vele.” Ja ertem, azonban ezeket nem kozvetlen szoktak a kontrollerrol meghajtani, mivel ahhoz nem elegendo a kontroller kimenete. A kijelzo nyilvan vagy kozos anodos vagy katodos, de kell lennie egy betapnak amit nyilvanvaloan lehet szabalyozni. Ezert kertek a kapcsolast, mert abbol rogton kitunne, hogy hova kellene a vezerlest betenni -- es lehet egyetlen poti is megtenne a kozos anod vagy katodra...
Sziasztok!
Az en tervem az, hogy megepitsek egy 3D-s LED kockat ( pelda ). A belinkelt peldan csak animacio van , nem a hang fuggvenyeben mozog. En azt szeretnem megcsinalni, hogy hang fuggvenyeben mozogjon, ezt ugy szeretnem, hogy analizalom a hangot egy AVR-el. A hangot a hangkartya/mp3 lejatszo/ telefon audio kimenetebol szeretnem bekotni (igy a kocka hordozhato is lenne). Az lenne a kerdesem, hogy hogyan kossem ra a mikrokontrollerre ezt a jelet? Mekkora a felso feszultseg limit a jelen? Kell erosito vagy direktbe rakothetem a mikrokontroller pinjere(ADC-re)? Szoval az ezzel kacsolatos miertek es hogyanok erdekelnek. Koszonom elore is a valaszokat!
Hali !
Ez azért nem csak egy jack dugó beforrasztásából áll. Én két módot látok rá: 1. A bemenetet (pl. műveleti erősítőkkel) leszűröd, mondjuk a basszust róla, aztán gyártassz impulzus triggert és ezt vezeted be sima io lábra (erre példákat találhatsz itt is meg neten is, pl fényorgona vagy egyéb hangra reagáló lámpákban) és ennek függvényében a firmware csinál valamit a ledekkel 2. Beviszed a jelet és FFT-t csinálsz rajta. Na ennek az eredménye szerintem szebb pontosabb akármi, de jóóóóval bonyolultabb program ügyileg. (AVR-re van FFT lib forráskód neten..) Edgár
üdv
avr studioban miért van hogy nem tudok a debug, avr simulation ops...-ra kattintani? nem élő gomb. pet
Sziasztok!
A kérdésem nem konkrétan AVRekre vonatkozik, hanem inkább általános mikrokontroller programozási kérdés, Cben írom a kódot, így ez (gondolom én) mindegyik uCnál ugyan úgy működik. Szóval a lényeg, hogy 3 vagy 4 digites 7szegmenses kijelzőn akarok megjeleníteni egy adott decimális számot, amit a program generál nekem egy változóba, az egyik bemeneten kapott impulzus hosszától függően. Tudom hogy lábpazarlás mert lehetne multiplexelni is, de én most úgy szeretném vezérelni a kijelzőt, hogy a számot a uCban egy beépített függvénnyel átkonvertálom BCD kódba, ezt a kódot kirakom a portokra, rakok mellé BCD-7szegmens DCket és azzal hajtom meg a kijelzőt. És akkor a C programozás technikai kérdés amin elakadtam az lenne, hogy ha én ezt a kapott BCD kódot, amit eltárolok egy 16 bites int változóban, akkor ezt, hogy tudom bináris vagy hexadecimálisként kezelni. Itt egy kód, hogy kb, hogyan képzelném el a műveletet, ez még csak terv, nem tudtam még kipróbálni, mert a programozó a suliban van.
Tehát a kérdéseim konkrétabban most már. Lehet Cben úgy deklarálni változót, hogy azt a program bináris számként kezelje? Vagy valamit a változó neve elé kell írni amikor hivatkozok rá? Mert itt azt akarom csinálni, hogy létrehozok egy maszk tömböt, aminek az elemeit sorban, annak függvényében fogom feltölteni, hogy a BCDszám adott helyiértékén lévő bináris szám egyenlő e 2 i. hatványával és ezeket fogom rámaszkolni majd egyenként az adott portra, amik 8 pinesek. Na de most ha én ezt így írom be ahogy most van, hülyeséget fogok kapni, mert ugye ha van egy számom.. pl 64, az BCDben 0110 0100. Akkor arra lenne nekem szükségem, hogy a maszkoló ciklusnak a 3. körében a feltétel teljesüljön és kapjak egy ilyen maszkot a tömb 3. elemébe: 0000 0100. Na de ez az összehasonlítás a decimális értékét fogja összehasonlítani, ami itt a BCDszam esetében 100... Meg lehet ezt így csinálni? Vagy én bonyolítok túl valamit? A uC amit programozok MSP430, szóval a megoldásnak ne küldjetek légyszi olyan javaslatokat amik eltérnek a szabvány C nyelvtől. Köszi
Ezt ugy szokas, hogy fel kell shiftelni (tolni) a bitet:
Ezt igy is lehet igen, de felesleges, a C-ben minden ami nem nulla az igaz, es minden ami 0 az hamis, tehat:
(a dupla zarojelet azert szokas, mert nehany C implementacional a fordito warningot dob ha binaris ES muveletet hajtasz vegre logikai helyett egy kondicionalis kifejezesben, magyaran a dupla zarojellel jezed, hogy az ug rendben van).
A 'maszk' korabban tombkent volt definialva, ezert ez igy biztosan nem lesz jo! Ha az volt a cel, hogy tobb bit legyen beallitva, akkor nyilvan valami ilyesmi kellene:
(es emellett a maszk ne legyen tomb...)
Ezzel nem tudom mi volt a cel? Nem tunik nekem ertelmesnek.
Igazad van, elfelejtettem, hogy van bittolás, így sokkal célszerűbb.
Tehát, ha C-ben így írom if((x & y)), tehát nem &&-t írok közéjük, akkor azt bites logikai műveletnek veszi? Mert ha igen akkor most eléggé megvilágosodtam... Igen, a maszk után mindenhol van i szögletes zárójelben, csak a fórum valamiért nem írja ki, akkor se ha kódként írom. Ezt most vettem észre. Tehát tömbként akarom azt kezelni. És a tömb minden elemét a for-ban rávagyolom a portra. A PxOUT = ~PxOUT | maszk;-nak az oka, hogy folyamatosan fognak jönni az új értékek, és így nem kell az elején lenullázni a portot, hanem ez így annyit csinál, hogy ha változás van akkor változtat, ha nincs akkor úgy hagyja. Vagy az gyorsabb lenne, ha az elején kinulláznám minden körben? ASMben nem vagyok még otthon. Különben köszi a választ! [code=c] |
Bejelentkezés
Hirdetés |