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
Értem. nekem aza problémám, hogy van egy Kod ami a LEDEt és a Piezot egyre gyorsabban működtetni.naszoval tettem hozzá egy kijelzőt ami 45 röl számolna vissza de a multiplexet nem értem ezért 1 db 7szegmentessel próbáltam hogy 9 töl számol.Mikor elér a timer a 90 et elindulna a számolás de nálam csak a számolás indul el és minden mást lekapcsol. ezt kéne elválasztani egymástól.Vagy használjak 2 IC ét?
A hozzászólás módosítva: Szept 9, 2012
Sziasztok!
Olyan AVR-t keresek ami minnél több külső megszakítást tud kezelni. Ami jó lenne ATMEGA324. Itt gyakorlatilag az összes I/O lábat kezelhetem megszakításként. De itt jön a kérdésem: Adott az alap 3db megszakítás: INT0.1.2 És az összes I/O láb használható PCINT0...26 beleértve az INT0.1.2 lábakat is. Mi a különbség az INT és PCINT között?
Megszakítás az amikor pl: egy gomb ra van kötve az egyik lába? és a IC figyeli a lábat? teszem azt: az IC nem csinál semmit mig megnem nyomod a gombot ekkor lefut pl: a led villogás. ha jol érte ez a szerepe?(bár nem tudom, hogy IC belül h tom megoldani)
Ennyire nem egyszrű a dolog, de erről már adtam neked linket.
A lényeg, hogy fut a főprogram
Pl. nyomógombot azért jó megszakításban kezelni mert jól kezelhető a pergés és nem kell állandóan ellenőrizni, hogy megnyomták-e. Gondold el, hogy pl. 16MHz órajel esetén másodpercenként kb. 16 milliószor ellenőrizné. Minek? De megszakításban kezeled az ADC-t, USART-ot, TIMER-t stb.. A lényege, hogy ezek figyelésével nem időzik a főprogram hanem végzi a dolgát szépen sorban. Ezek csak akkor hívódnak meg, ha hozzájuk kapcsolható esemény történt. Ezzel is gyorsítva a főprogram futását. Nyomógombnál maradva: Minek ellenőrizzem a főrogramban, hogy megnyomták-e a gombot vagy sem? Majd, ha megnyomták akkor az MCU átugrik a megszakításra és elvégzi amit oda kódoltál. Persze csak ésszel oda is a rutinokat mert míg a megszakításban vagy addig a főprogram "áll". Az ilyen MCU-k egy szálon dolgonak nincs multi theader kezelés. A hozzászólás módosítva: Szept 9, 2012
minden programot ebbe rakom O.o najo most meg zavarodtam egy ugrási példát meg tudsz mutatni programon belül? mert a 2 IC éset meg tudom oldani amit adtala robotossal de belsöt nem értem.
Te koma, mi lenne, ha előbb alap doksikat olvasnál el és nem a levegőben próbálnád összerakni a dolgokat, mert úgy esélytelen.
Íme egy nagyon jó C nyelvű könyv, AVR-hez 1:1-ben nem jó, de a C nyelv alapjaival legalább megismerkedsz, otthonosan mozogsz a szubrutinok, függvényes és változók deklarálása között. http://kando.prociweb.hu/letoltes/data/1.evfolyam/Programozas_I/C%2...yv.pdf Hozzáférés: kan-do / kan-do A házat sem a cserép felrakásával kezdik. A hozzászólás módosítva: Szept 9, 2012
Nem értem mire szeretnél példát.
Két AVR között sokféleképpen kommunikálhatsz. Ha egy panelen van a kettő akkor talán a legjobb az I2C vagy USART esetleg SPI.
Elolvasom.nem levegőben rakom össze hanem rögtön a Programban az AVR studioban próbálom ki és értelmezem.
igy használom a kódokat de a megszakítást nem tudom értelmezni, hogy ugrik arra a folyamatra? Mert IC közt az AVR es robotnál amit Blackdog adott ott meg van hogyan kell. de IC én belül , hogy lehetséges ezt nem tudom megérteni és ehez kértem egy példát.
De a levegőben rakod össze, mert hiányzik az alapod, az a tudás amire építkezni tudnál, így a morzsákat csak rakod egymásra, közte óriási lyukak tátonganak és ezért nem haladsz 1-ről a 2-re. A linkelt doksiban pl. benne van azt hiszem az interrupt témája is, olvasd át és akkor nem teszel majd fel ilyen kérdéseket:
"de a megszakítást nem tudom értelmezni, hogy ugrik arra a folyamatra?"
Nem tudok vitatkozni mert igazad van.de amint írtad ,hogy nem jó az AVR ez nem sokat tudok vele kezdeni de legyen úgy ahogy szeretnéd elolvasom neked
![]()
Nem akarok kötekedni. Segíteni próbálok, de én is úgy látom, hogy olyannal foglalkozol amitől még messze vagy. Én is kezdő vagyok AVR-ben, de próbálok segíteni.
Ott kezdem, hogy neked mint AVR kezdőnek miért kell két AVR közötti kommunikációval kezdened? Én RS232 és RS485 kommunikációt használok, de a távolságok miatt. Amúgy 1db AVR vezérel 12 bemenet függvényében 16 kimenetet, LCD-t, 5 nyomógombot, LED-eket, USART, ADC és TIMER. Mindezt 64 lábú ARV-el. A hozzászólás módosítva: Szept 9, 2012
leírom még egyszer:
Van egy kódom ami egy LEDET és egy PIEZOT müködtet ami 45 sec röl számol. minden csipogás -1sec és igy gyorsul.Ehez szeretnék egy Kijelzőt betenni (perpil 9 Secnél lépbe) és számol vissza.De mikor Multiplexes lesz (holnap megyek a tranzisztor ért) akkor a Multiplex Kódot nem tudom beilleszteni ezért az Attiny45 küld egy jelet az Attiny2313 nak ami a meg szakítás révén elindítja a számlálót. Ha neagyisten nem Multiplexkent oldom meg akkor is kell 2 IC mert az Attiny2313 ra 2 szer 8-7 láb kell es igy a Piezó-lednek már nem marad.
Nézz szét a portbővítők terén is. Nem nézem meg az említett mikrovezérlők adalapját, de te nyugodtan megteheted. Kulcsszó tehát: portbővítő (google avr típusa + port expander). Fus egy kört ezen a téren is, általában I2C vagy SPI buson lehet őket a mikrovezérlőhöz illeszteni.
Egy séma a sok közül: http://www.mikroe.com/download/eng/documents/compilers/mikroc/pro/a...er.gif A hozzászólás módosítva: Szept 9, 2012
rendben meg nézem de marad sztem egyenlőre ez a megoldás mert igyis sokban van nekem és csak egy egyszerű dolgot akartam és már 2E nél tartok
![]() Találtam a hestoreban 7-8 félét 500 alatti áron szép. Igazándiból ezeknek kell kompatibilisek lenniük az Attiny 45 ömmel? vagy a 2313 al? A hozzászólás módosítva: Szept 9, 2012
ATMEGA168 kedvelt kezdő MCU. Teszteléshez én is ezt használom. De ott az ATMEGA32 ATMEGA324 ATMEGA128.
És ezek árban kb. ott vannak mint neked a 2db MCU. De, hogy fokozzam az élvezetet van lehetőség port bővítésre is vagy van 100 lábú AVR is. Egy panelen 2 AVR már nagyon komoly programot feltételez. De továbbra is azt mondom I2C kommunikáció SDA/SCL lábakon, ha ragaszkodsz a 2db AVR-hez.
Most nincs sok választásom
![]()
Mégvalami:
Idézet: „Van egy kódom ami egy LEDET és egy PIEZOT müködtet ami 45 sec röl számol. minden csipogás -1sec és igy gyorsul.” A LED akár mehet egy port fel/le kapcsolásával. Piezo már jobb, ha PWM ami ugye TIMER. 45sec számolni ismét TIMER. Kapásból 2db megszakítás és rövidül/gyorsul a főprogram.
Hadd ne én használjam helyetted a google-t: http://www.google.hu/search?client=opera&rls=hu&q=avr+multiplexed+7...ih=787
Multiplex-ben nyilván kevesebb láb kell, de cserébe többet kell kódolni. És itt a Cikkek között is van leírás multiplexről.
Nem kértem, hogy használd^^ énis meg találtam ugyan ugy csak számomra bonyolult lenne ha egy IC be kéne bele tennem de 2 IC vel könnyeb.
Így néz ki a kódom. megint a megszakítás amit még mindig nem értem de most nézek épp egy leírást hátha akkor megértem.
Ez a kód 1db 7 szegmenses kijelzőre készült. Nem látom benne a kommunikációt a 2db AVR között. Ezt te csak ctrl+c / ctrl+v kódoltad. Ráadásul, hogy borzolja az idegid a felét át lehetne tenni megszakításba. Ez szerinted hol kelez 2db hétszegmenses kijelzőt multiplex módban?
Mint írtam holnap megyek a tranzisztor ért ezáltal holnap lesz 2 x 7 szegmensem most csak egyel tudok kísérletezgetni. Hidd el ha érteném a meg szakítást akkor használnám de mindenhol külső meg szakítást találtam.Most találtam rá egyre ami belső megszakításos és időzítős . És nem csak ctr+c es v éztem azért nem kis erőfeszítésembe telt lecsupaszítani és egybe gyúrni több dolgot nem is azt mondtam, hogy magamtól írtam az alapot.
Én azt értem, hogy holnap mész tranyóért, de attól ez még nem lesz multiplex működés. Egy kijeljő ugye tart A-G és CA vagy CC (ez 8db AVR láb). Kettő már A-G és 2x CA vagy CC (ez 9db AVR láb). Ebben a kódban nem látom, hogy bárhol is váltana a kijelzők között.
A kódban az összes PortB kinyitom és beállítottam hogy
Persze. Az első kijelzőn igen. De mi lesz a másodikkal?
annak ugy terveztem,hogy nem tom mert a Multiplexet nem értem ezert is gondolkoztam abban hogy : PORTD és B külön lesz .
Idézet: „annak ugy terveztem,hogy nem tom mert a Multiplexet nem értem” Este 10 után ez már kemény vicc volt. Nem érted a multiplex műödését nem érted a kommunikációs csatonákat sőt úgy látom nem is érted, hogy mit csinálsz. Ne haragudj engem a jószándék vezérel, de nincs több ötletem. Azt látom, hogy semmit sem tudsz, de mindent akarsz. A multiplex még csak nem is MCU sajátoság. A megszakításokról meg csak annyit, hogy neked pont a TIMER-t kellene kezelned ami az egyig legkörülményesebb. A piezo akár mehet a LED-el együtt is, de az időzítést jobb lenne megszakítással kezelni. De összegezve neked kellene 2db 7szegmenses kijelző 1db LED és 1db piezo. Ez összesen 11 I/O láb. Legyen 12 mert nem tudom, hogy az időzítés mire/miért indul. Ehhez nem kell 2db AVR.
Igen lehet, Hogy vicc vagyok de próbálkozom és tanulok az Időzítő magától indul el.
Eddig ugy volt.Piezo + Led es semmi több utána jött az ötlet, hogy kijelző ami 45 Sec röl számol vissza.Meg néztem egy Multiplex tutorialt és kódot és durván nem értem azt a kódot így beépíteni se tudom.Ezért maradtam abban hogy az Attiny45 kiad egy jelet az Attiny2313 nak ami elindítja az időzítőt. nyugodtan röhögj ki vagy valami de ha bele-öglöm akkor is meg csinálom mert nem adom fel (bár így a te/ti idegeiteket húzom és te/ti fogtok megölni engem.)
[off]Nézd én nem azt írtam, hogy te vicc vagy csak úgy érzem nem tudod, hogy mit csinálsz.
Az, hogy az időzítő "magától indul el" érdekes kijelentés. Mi az, hogy magától? Vezérlőjel csak kell... Nem röhöglek ki csak fogom a fejem, hogy nem értelmezed amit írnak neked vagy amit olvasol. Mint írtam én is kezdő vagyok és én is borzoltam már itt egy-két ember idegit. Milyen szinten vagy magával az elektronikával? Nem véletlenül írtam, hogy a multiplex nem MCU sajátosság! Ha megsértődsz az a te dolgod, de ezt a feladatot szerintem vigan megoldhatnád az 1db attiny2313-al.
nem sértődöm meg egy könnyen.Lehet egy buta kijelentés volt hogy az Időzítő magától indul el de ha meg nézed amint áramot kap az IC elkezd számolni és pittyegni.
Hadd válaszoljak neked, látom elveszett a kérdésed.
INT: egyetlen láb, egyetlen megszakítás, általában szint-és élérzékeléssel PCINT: egy egész portra jut egyetlen megszakítás, amiben el kell dönteni hogy épp melyik lábat érinti. Csak élérzékelés van, ráadásul nem állíthatod be hogy fel-vagy lefutó él legyen. De az egyes lábakat a PCINT-en belül letilthatod/engedélyezheted. ATMega328: van ennél olcsóbb is, az IC beleillik az alábbi sorba: ATMega48/88/168/328. A képességek azonosak, a FLASH mérete más... |
Bejelentkezés
Hirdetés |