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
Bocs a belekotyogásért, mert csak kókler vagyok ehhez..., de egy láb ATtiny85-ön, bármire elég,
![]()
Köszi! Erre nem is gondoltam. Mindössze egy feszültségosztóra lenne szükség a gombokon kívül.
Hát igen, fantasztikus ötlet. Nálam állandóan kevés a láb, tetszőleges IC-t használok.
Mellesleg az a pár ellenállás kevesebb helyet foglal, mint egy shift regiszter vagy IO expander. ![]()
Nezd csak! Igaz PIC, de gondolom AVR-en is mukodhet.
A hozzászólás módosítva: Aug 1, 2014
Én 6 gombnál többet nem kötnék 10 bites ADC-re. 2^6 = 64, azaz egy gombnak 16 ADC érték felel meg egy R-2R tömbnél.
Ez is elfér kis helyen,ha elég a 4 gomb és I2C.
De itt nem R-2R letrarol van szo, hanem egy hosszu osztolancrol, ami 16 egyenlo reszre osztja a teljes tapfesz tartomanyt. Tehat 16 gomb eseten 64 ADC ertek (LSB-nek hivjak) jut egy gombra. Boven jo.
Az ne tevesszen meg, hogy a linkelt rajz hasonlit egy R-2R letrara. Nezd meg az ertekeket. 270 Ohm es 1 MOhm. A szoveg szerint az 1M csak a nyitott nyomogombot szimulalja.
Annak semmi értelme, ha nincs a hardver felkészülve arra, hogy egyszerre kettőt nyomunk le.
A hozzászólás módosítva: Aug 2, 2014
Ez egy nehéz kérdés. Ha csinálsz 6000 db-ot valamiből és eladod, akkor igazad van.
Ha csak magadnak csinálod és időnként frissítgeted a szoftvert hozzá, akkor nem. Ha nem akarsz percenként új paneleket csinálni, akkor a mikrokontroller gondolkozik és nem a hardver. A fenti esetben a hardver dönti el, hogy nem nyomhatsz meg két gombot, nem pedig a szoftver. Ha pl. készítenék egy akkumulátor töltőt, akkor a "kész" LED-et az MCU-ra kötném, nem pedig hardverből kapcsolnám automatikusan. A szoftver módosítása mindig egyszerűbb a hardverénél.
Nem ertelek. Ha magamnak csinalok egy darab lampa kapcsolot, amin van + es - gomb, akkor miert akarnam, hogy egyszerre is lehessen a kettot megnyomni. Persze lehet, hogy ugy kell megcsinalni, hogy ha egyszer kitalalom, hogy a ketto egyszerre azt jelentse, hogy akarmi, akkor jobb lenne eleve ugy tervezni. Tenyleg nehez kerdes.
En pont most csinaltam egy keszuleket, amiben van egy 32 bites ARM mikrokontroller, de a Li-ion akkutolto teljesen kulonallo analog HW es a "kesz" LED-et bizony a HW kapcsolja. Igaz, a HW nem is volt jo elsore (mert nem volt idom osszerakni a kapcsolast az asztalon a panel tervezes elott), de egy darab eseten mindegy volt, hogy a HW-t modositom vagy a SW-t.
Sziasztok,
egy olyan problémám lenne, hogy attiny13a-ba AVRISP mkii-vel letöltöttem egy programot, ami a PB2-t kimenetként használja (led) és azóta nem éri el az attiny-t a programozó. Amíg nem volt kimenetként beállítva, addig jól működött. Én rontottam el valamit? Másik attiny-vel működik a programozó.
Nem állítottad át a RESET lábat ki/bemenetre? Akkor nem fogod tudni ISP-vel programozni.
A hozzászólás módosítva: Aug 5, 2014
A reset lábhoz nem, nyúltam, csak a PB2 lett kimenet, igaz az meg SCK is...
Ha a fuse biteket állítottad át, csak akkor lehet gond. Esetleg a MISO/MOSI/SCK/RESET lábakat 5 k ohmnál nagyobb erővel állítja az áramkör (a programozónak kellene állítania).
Teljesen mindegy, hogy melyik lábat állítod kimenetre (DDRB), mert amikor a RESET vonalat a programozó alacsonyra állítja, az összes láb lebegni fog. A hiba máshol van. A hozzászólás módosítva: Aug 5, 2014
Nem lehet, hogy a beégetés előtt rá is kötötted a LED-et és az elhúzza az SCK-t?
Ezt bele kéne venni az oldal elején lévő "okosságok" közé:
Néhány ATTiny és a LUFA féle AVRISP-mkII esetén ha az SCK lábat kimenetre állítod, nem tudod programozni! Mindegy hogy mit kötsz rá (vagy a programozón kívül semmit), hiába cibálod kézzel a RESET-et, nem fog sikerülni. Én sem jöttem rá hogy miért, érdekes módon más programozók vígan viszik... A firmware verzióval sem érdemes játszani, a régiek és az újak is egyformán hibásak. Én vagy nem használom kimenetnek, vagy ha mégis kell, akkor csak "időszakosan", végső esetben STK500 klónt használok mert azzal nincsenek ilyen problémák. A hozzászólás módosítva: Aug 5, 2014
Nálam a gond fordítva szokott előjönni.
Ha inputnak használom, akkor előfordul, hogy a bemeneti jelforrás erősebb a programozónál, azért nem tudja programozni. ![]() A hozzászólás módosítva: Aug 6, 2014
Köszi mindenkinek a tippeket, stk-t már nem akarok venni... Van még egy USBASP programozóm majd azzal még megpróbálom.
Jó lenne néhány ilyen "ökölszabályt" összegyűjteni, hogy minél kevesebben járjanak így ![]()
Ott vannak az oldal tetején sárga dobozban.
![]() Minden problémát nem tudsz kiszűrni. 2 éve foglalkozom AVR-rel és azóta kb. egyfolytában szívok. Mindig mindenre van magyarázat, de elsőre általában semmi sem sikerül. Ez ilyen, időigényes.
Nekem meg sokszor elsöre minden megy, a második, harmadik szokott fejfájást okozni. Legutobb a dugaszolopanelen minden ment ( megy ma is) amikor átraktam mindent a NYÁK-ra képtelen voltam elinditani a JTAG kommunikáciot a Dragon meg a 644-s között. Igy most a dugaszpanelon programozom majd átrakom a végleges panelbe. Nem tudom mi a baja.... A NYÁK-ot többen sokszor átnéztük és mindent rendben találtunk......
![]()
Üdv. Egy program megírásában kérnék segítséget. Bascom-AVR programban programozok. Atmega8 lenne az alany. Egy olyan programra lenne szükségem, ami egy adott frekvencia fölött kapcsol egy kimenetet. Ez a frekvencia két gombbal állíthatónak kéne lennie 5-20Hz között. A program vázlata is megvan fejben és le is írom most. Program indulásakor elindul egy timer, a beérkező jel(reed relé) megállítaná, majd a program megnézné, hogy mennyi ez a szám. Ha egy adott számnál nagyobb akkor nem történik semmi, ha pont akkora vagy kisebb akkor bekapcsol egy kimenetet és addig tartja bekapcsolva még nem lesz nagyobb a szám. A gombokkal sajnos nincs ötletem. Most kezdtem a programozást így az ötlet megvan, csak a megvalósításban kellene a segítség. Válaszokat előre is köszönöm.
Milyen bemeneti jelet akarsz mérni?
Nem világos, hogy belsö vagy külsö jelet. Ha belsöt 2 timer kell. Az egyikkel kapuzod a másikat ( mondjuk 1 másodpercenként). A másik mint szabadonfuto adja a mérendö jelet. Egy számláloval számolod hány jel jelent meg az 1 sec alatt ( ha pl.10 akkor 10 Hz). Ezt a számot hasonlitod és döntesz. A gombokkal (1-1 bemenet) inditod az összehasonlitást. Egy kicsit több info kellene.
Külső jel lenne, mégpedig egy reed relé(vagy hall, ha a reed nem felel meg). A gombok csak a határfrekvenciát állítanák oda-vissza ahol kapcsol a bemenet. Ez a szerkezet egy motor kerekére lenne szerelve, pontosabban a reed relé és fordulatot számolna. Ha egy adott pont fölé megy a fordulat egy kimenet logikai 1-et adna ki mely visszajelezné hogy elérte a maximálisan megengedett sebességet. Köszönöm a gyors választ.
Ha csak két gombról van szó, hardveres prellkioltást alkalmaznék, és a gombok jelét megszakítással kezelném. A megszakítási szubrutin attól függően, hogy melyik gombról jött a jel, növelné, vagy csökkentené egy változó értékét. A főprogramban pedig ezen változót hasonlítanám össze a timer értékével a reed relé jelének beérkezése pillanatában.
A prellkioltásra mit javasolsz? Már csak a program megírásával van gond, sajnos az nem megy még annyira. Ebben kérnék segítséget(vagy akár kész programot) lehetőleg basic nyelven, így abból is tudnék tanulni és tudnám módosítani ha kell. Nagyon köszönöm a segítséget.
Ebben a cikkben van egy NAND kapukból megvalósíított flipflop. Itt egy másik Schmitt-triggerrel, amihez már bármilyen nyomógomb megfelel.
A hozzászólás módosítva: Aug 7, 2014
Szia!
Itt is a prell mentesítés volt a téma. A szimuláció proteus-ban lett elkészítve. Egy nagyon stabil "alap" kapcsolás. Ha nagyon kell a proteus fájl, akkor megkeresem.
Szerintem a prellel már nem lesz gond
![]() |
Bejelentkezés
Hirdetés |