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
Sikerült összehoznom a dolgot, mint kiderült nem döglött meg az attiny13 proci sem, csak rossz volt a programozó kábel. Ez akkor derült ki, amikor már az attiny24-est sem akarta programozni.
Beleégettem az eredeti programot a tiny13-ba, de valami nem jó. Szabályzóra rákötve, a motor folyamatosan pörög, semmit nem csinál, nem reagál semmire. Játszottam az órajelekkel is, próbáltam 4,8 és 9,6Mhz-en is, de semmi változás. A motor helyett már izzót is próbáltam rákötni, nehogy a motor zavarjon be, de az meg csak villog, nem szabályozható.
Most meg elindult és megy szépen. Szkóppal megnéztem a jelet, 9,6MHz lett a nyerő freki, ekkor van a helyes érték.
Na, akkor értem a félreértést.
Nos, amit én mondtam, hogy "Összekötöd max232-vel az AVRt és az usb com portot." azt így kell érteni: AVR: ~TTL jelszint UART kimenetet rákötöd max232-re. Kapsz -12/+12V RS232 jelszintet, ezt összekötöd USB soros átalakítóval, amiben szintén van egy max232, az visszaalakít TTL-re, majd az össze van kötve egy FTDI csippel, vagy bármilyen permutációjával, ami pedig az egészet bevarázsolja egy USB protokolba, ami lehet bármilyen (gyártó saját protokolja, vagy valami USB-HID variáció), az oprendszered drivere feloldja a protokolt és bevarázsol egy COM portot az eszközkezelőbe (legalábbis windowsnál). Terminál programmal megnyitod ezt a COM portot, vagy Matlabból (neki aztán teljesen transzparens, hogy milyen COM port ez, felőle lehetne RFCOMM protokolos Bluetooth Comport.) és használod. Tehát ahogy mondtam, összekötöd max232-vel az AVRt és az usb com portot és használod. Ez a legegyszerűbb, mert max232 bekötése egyszerű mint egy faék, bemész számtech boltba és megveszed az első USB->COM port átalakítót. Természetesen lehet trükközni, hogy te egyból egy ftdi csippet csapsz a nyákra, vagy ne adja isten USB-s AVR-t használsz. Gondoltam a legegyszerűbbet mondom neked.
Szia sikolymester!
Már én is értem, hogy mire gondoltál. A félreértésem egy régi (és ezek szerint téves) információn alapult. Időközben leteszteltem amúgy a dolgot MATLAB-ban és működik, aminek örülök mert bőven van benne potenciál mérési eredmények feldogozásához.
Nem egyszerűbb csak egy FTDI chipet alkalmazni? Így nem kell átalakító sem. Vagy pl MCP2200-ic-t ami 500Ft körül van.
Helló!
Valaki megtudja mondani, EZ a programozó, jó lehet-e valamire? Mennyire kényes dolog az, hogy milyen programozót használok? Üdv: Tecsa
Ez egy USBASP. AVRDUDE és Bascom is támogatja, "cserébe" szörnyű lassú és (szerintem) nem is stabil.
Egy vásárló kifejezett kérésére építettem egyet, de alig mertem átadni mert kegyetlenül rossz konstrukció. Ez a "csupasz-pendrive" kivitel szintén nem szerencsés, elég sérülékeny elrendezés. Ennél SOKKAL jobb programozókat is vannak, legyen az AVR-Doper, STK500, AVRISP-mkII. Egyáltalán nem is drágák(a Doper hasonló árban van), és Kis Hazánkban is megtalálod őket. Még nálam is...
Természetesen egyszerűbb, abból az értelemben, hogy egy IC és kész. De ezek általában smd alkatrészek, ráadásul, kis lábkiosztással. Aki jól tud NYÁKot gyártani, annak természetesen nem okoz majd gondot. Én egyébként a Silabs családot is javaslom erre a feladatara. Igaz, hogy igazi egzotikum ennek az IC-jét házilag bevarázsolni, de cserében elég neki néhány diszkrét alkatrész.
Minden kedves fórumozónak Kellemes Karácsonyi Ünnepeket Kívánok!
Üdv Mindenkinek! És kellemes ünnepeket!
Megépítettem az oldalon található topi-féle dallamcsengőt. Csináltam hozzá LPT-portos programozót és fel is programoztam a pony prog-al. Működik is, csakhogy nagyon lassan játsza le a zenéket. Mi lehet erre a megoldás? A programban elvégeztem a calibrációt az írás előtt. Köszönöm a válaszokat!
A program hány MHz-re íródott? Valószínűleg az órajelet nem állítottad át a megfelelő értékre.
Valami ilyesmire gondoltam én is. De mivel még sosem foglalkoztam ilyesmivel nem tudok a kérdésedre válaszolni. Hol és hogyan lehet ezt megnézni? És a pony prog-ban hol lehet átállítani?
A ponyprog-hoz meg én nem értek, így ebben nem tudok utat mutatni. A forrás elvileg tartalmazza a kívánt órajel értékét, ezt kellene beállítani a processzoron is. Az órajel értékét a FUSE bitek között tudod variálni, ennek olvass utána, mert kizárhatod magad a prociból.
Szerintem a CkDiv8-as fuse van bekapcsolva, ami elosztja az órajelet 8-al és ennyin megy a proci. Ezt kellene kikapcsolni.
Egy AVR-ből már kizártam magam mert variáltam a security and configurations bits-ekkel. Gondolom ezek a FUSE-bitek amikről írtál. Legközelebb akkor szeretném ezeket módosítani ha biztos vagyok benne mit csinálok. Már csak 1 db Attiny 45-m van! A forrás alatt a hex fájlt érted? Mert ebből nem sokat lehet megállapítani.
A forrás alatt a cikkben található C forrásra gondoltam, itt szokott lenni egy #define sor ha jól tudom, ami a fordító számára megmondja, hogy a vezérlő mekkora frekvencián fog járni, és erre a frekvenciára kell beállítani a procit. Ricsi tippje lesz valószínűleg a nyerő, ahogy nézem a tiny45-ben csak egy 8MHz-es belső RC oszci van. Defaultból pedig a procik 1MHz-en járnak legjobb tudomásom szerint, ehhez pedig be kell kapcsolni a CKDIV8-at.
Igen, be van pipálva. Tehát pipa KI aztán írás? A többit meg úgy hagyom ahogy van?
Ha jól értem erre gondolsz: #define F_CPU 8000000L.
Köszönet a gyors segítségért! Megoldódott a probléma, szépen muzsikál a cucc.
Sziasztok
Hasonló kérdéssel fordulok hozzátok mint múltkor. Hogyan lehet használni az AVRstudiot úgy hogy hozzon létre o fájlt és .elf fájlt-is mert nem tudom lefuttatni :S az AVR szimulátorral :S
Nekem is volt ilyen problémám a legeljén. Először is fel kell tenni a WIN AVR legújabb verzióját, ÉS az AVR Studio-hoz fel kell tenni a kiegészítő pack csomagokat. Nekem úgy rémlik 3 ilyen van, a 4-es AVR Studio-hoz. Most lecsekkoltam és nekem a 4.18-as van fenn. Keress utána a neten, mert szerintem tuti, hogy az AVR Studio service pack csomag hiány a baja.
ATMEGA16 PORTD probléma
Pár hete leköszöntem a programozással miután kinyírtam egy T-Bird-öt, és megfogadtam, hogy többet nem programozom. Sajnos(?!?!) nem bírtam abbahagyni a dolgot és sok mindent tapasztaltam, amit leírok hátha segít majd valakinek: Sok bonyoodalom és vizsgálódás után azt kell mondjam, hogy a T-Bird nevű fejlesztőm-ben nem a programozható microkontroller halt meg. Az ünnepek alkalmával kiszedtem belőle az Atmega128-at, és beraktam egy új Atmegát, de a szisztéma ugyanaz: nem érzékeli azt sem, ergó a probléma a JTAG programozóban van. És ezzel véglegesen el is temettem magamban a T-BIrd-öt De van egy sokkal égetőbb problémám! Azóta kézhez vettem a Tavir féle MKII programozóm, vettem egy Atmega16-ot, egy rakat LED-et és csináltam egy LED-falat. Nagyon megelégedtem magammal mikor sikerült beindítanom és valóban azt csinálta amit kell. Futnak rajta a szövegek, sőt már órát is írtam rá, DE: a minap nyomógombokat akartam rászerelni. Sorjában először a RESET lábat kötöttem be, az működött is, ahogy kell. Majd kezdtem a többivel, még összesen 4-gyel. Viszont a "D" port az ATMEGA 16-omban nem úgy működik ahogy kellene. Egyrészről csak akkor működnek a gombok, ha nem kötöm be mind a 4-et és akkor is csak max 2 műxik. A PD6 és PD5-ös lábon lévő. Sőőőőt ami még felfoghatatlanabb, hogy azok sem azzal az utasítással ahogy kellene: ..... DDRD=0b10000001; //kimenet-bemenet állítása ..... gomb=PIND; gomb=gomb&0b01111110; if(gomb==0b01000000 ) cpl=1; if(gomb==0b00100000) cpl=0; A fenti programrészlettel olvastam ki a lábakat, de sajnos az első if utasításban lévő rész (aminek a PD6-os lábat kellene érzékelnie) a PD5-ös lábat érzékeli. A következő sorban lévő utasítás pedig a PD5 helyett a PD6-osat érzékeli. A programrészlet egyébként csak annyit csinálna, hogy a kijelzőn lévő LED-eket invertálja, vagyis vagy a háttér vagy a szöveg világít. Szerintetek mi lehet a probléma?!?!?! Nem igazán értem mert gondoltam valami kontakthibára is de az sincs benne. És ha az lenne akkor meg nem szabadna mennie a többi lábnak sem sztem. Végülis jelen programrészlettel azt teszi amit akarok, de azt sem úgy ahogy kellene és amúgy is 4 gombot szeretnék a D portra kötni de nem bírok így...Szeretnék majd írni egy cikket is a LED-fal megépítéséről majd a vizsgaidőszakom végén, de addigra jó lenne rájönni a gomb problémára mert iszonyúan piszkálja a gondolataimat.
Hogyan kötötted be a gombokat?
Egy kapcsolási rajzot mellékelj erről légyszi.
Mellékeltem a képet. Az első, ahogy írtam is, a 4 gomb-ból jelenleg 2 bekötését jelöli, a jobboldali kép pedig a reset láb ami csak ebben a bekötésben hajlandó működni...
Egyébként tesztelgettem és azt figyeltem meg, hogy invertálva működnek a dolgok. Vagyis ha pl a PD5-ös lábat akarom vizsgálni akkor az a gomb=0b01011110 értéknél működik (a maszkolás után persze amit az előbbi programrészletben írtam) ui.: a képet csak összevágtam, szóval a rajzljeleket nézd csak inkább, a T0 IO-tól tekints el. Aztán megnézem, hogy mind a 4 gomb bekötése esetén is megy-e ez a szisztéma, mert akkor a probléma megoldódott, csak a magyarázatot még nem tudom rá. Bár ugye még az életben nem kötöttem be nyomógombokat, szóval lehet hogy ennek alapba így kell mennie és csak én voltam más hitben... De ha ez igaz, akkor nincs olyan kapcsolás amivel nem kell invertáltan gondolkodni?!?!
Nos ami a reset lábat illeti az természetes, hogy így működik, mivel a reset láb invertált. Magyarul: akkor van reset, amikor a reset lábat a földre húzod (tehát a logikai értéke NULLA).
Bár kicsit kacifántos a bekötés így, a 10K-nak sok értelme nincsen. Ami a gombokat illeti, ott nem csoda a fura működés, mivel te azt vizsgálod, hogy a gomb értéke logikai IGAZ
A bekötés egészen triviális: a gombok alapértelmezetten IGAZ értékűek és lenyomásuk esetén lesznek hamisak. Így értékeld ki:
Ez akkor lesz igaz, amikor az adott bemenet értéke nulla. Egészen konkrétan az esetedben:
Ha esetleg nem lenne világos, a bemenetet(PIND) negálni kell, majd abból maszkolod ki.
A másik amit a kolléga említett hogy ha egyenként nézed meg őket akkor a beolvasásnál kell negálni. A 10k ellenállást elhagyhatod ha a panelod nem túl nagy, arra ott van a belső felhúzó ellenállás a portokon. Ez emlékeim szerint 47 kOhm, és akkor tudod aktiválni ha a lábhoz tartozó DDR=0, a PORT=1. A másik megoldás ha nem akarsz negálni, akkor LEHÚZÓ ellenállás kell a földpontra, a gomb pedig a pozitívra kapcsol. Eddig még nem láttam olyat hogy valaki így csinálná, de biztosan működik. Természetesen ilyenkor a belső felhúzó ellenállást nem tudod használni, azt le kell kapcsolni(PORT=0). Talán ezért is nem használják mert ez plusz egy ellenállást jelent lábanként... T-Bird: Valószínűleg az USB vagy a JTAG rész halt meg. Ezek pótolható IC-k, és ha minden igaz akkor az USB-ért egy FT232RL felel, a JTAG lelke pedig egy ATMega16/169. Ez utóbbira bootloader is kell ha cseréled. Rendszeresen építek JTAG Debuggereket, és szívesen segítek a T-Bird feltámasztásában.
Köszi a válaszokat zombee és sikolymester!
Elősőre a "lehúzó" ellenállás jutott nekem is eszembe, de a neten nem sok info kering róla, pedig nekem is az tűnt volna a legésszerűbbbnek és könnyebbnek. Legközelebbi kapcsolásban tuti kipróbálom. Bár most a furatraszteres panelen bőven elférnek az ellenállások. A gombokat már tudom kezelni úgy, hogy mind a 4 be van kötve, de érdekes módon azokból kettő továbbra sem megy. Sajna kicsesztem magammal mert egy foglalatba tettem az IC-t, hogy esetleges tönkremenetelnél ki tudjam cserélni, de finoman szólva is kontakthibásan működik ezzel.... Minden alkalommal igazgatni kell, hogy minden láb működjön. Pedig elő is ónoztam, de csak ritka pillanatokban működik a másik 2 említett láb. Sőt akkor is legtöbbször csak azért, mert a kezemmel a mikrokontroller lábait közvetlenül érintem és vmit ez gerjeszt annyira, hogy "olyan mintha menne a gomb". Már vagy 20X átnéztem a kapcsolást, de megnézem még vagy ennyiszer mert valami akkor sem érintkezik szerintem. Vagy ha nagyon sok időm lesz akkor átkapkötöm máshova a gombokat, hátha ott már mennek. Csak nehogy programozásbeli probléma legyen mert akkor szivatom magam a sok kötögetéssel ... bár ezt tartom legvalószinűtlenebbnek. A T-Bird-öt ha lehet javítani akkor mindenképpp megtenném, szóval örömmel veszem a segítséget, és előre is kösz, de sajna csak vizsgaidőszak után mert holnaptól fizikával és hasonló (számomra) marhaságokkal kell foglalkoznom.
A foglalat cseles, nálam volt már olyan hogy felül egy vagy több érintkező el volt törve, csak a ház fogta.
Precíziós foglalattal ez nem sűrűn fordul elő. Egyedül lemezesnél, ott is csak akkor ha nagyon meg van terhelve.
Ha lebegne akkor oltári nagy problémák akadnának a mai AVR-es rendszerek túlnyomó többségén.
A RESET-en alapból működik egy felhúzó ellenállás(kb. 47kOhm-nak felel meg). Egy kicsit más, mert bírja a 12V-os nagyfeszültségű RESET-et is. A kisebb cuccokba(pl. fényeffektek) soha nem teszek felhúzót, max akkor ha kevés por meg víz is érheti. |
Bejelentkezés
Hirdetés |