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   177 / 840
(#) gtk válasza Yshteee hozzászólására (») Jan 20, 2010 /
 
Milyen tipusu kijelzo? Az elobbi hozzaszolas kozos katodu kijelzonel ervenyes. Kell elotet ellenallas az anodokra is (mind a 7 szegmensre). Ez mondjuk a kitoltestol fugg.
(#) vbalint válasza (Felhasználó 4577) hozzászólására (») Jan 20, 2010 /
 
Szia!

A hardverhez még 1-2 gondolat:
- A LED kijelzőkre menő vonalakba is kell tenni áramkorlátozó ellenállást. 330 Ohm általában jó (5V-os táp esetén).
- A kontroller RESET lábát magasba kell húzni egy 10k-s ellenállással. Esetleg egy nyomógombot is érdemes lehet betenni, hogy szoftverfejlesztés közben tudd resetelni.
- A kontroller VCC lába és a föld közé illik tenni egy 100nF-os kerámia kondenzátort.
- ISP csatlakozó, amin keresztül fel tudod programozni (hacsak nem akarod a céláramkörön kívül felprogramozni ).
- Ha közvetlenül PC soros portjához szeretnéd csatlakoztatni, akkor kell egy szintillesztőre is szükséged lesz. Például MAX232... Vagy USB-s is lehet egy FT232RL típusú IC-vel, ami gyakorlatilag egy USB-soros híd. Ebben az esetben a tápfeszültség is rögtön előállt... Hátránya, hogy csak SMD tokozásban létezik.
- És persze az előttem említett NPN tranzisztorok.

Üdv: Bálint
(#) (Felhasználó 4577) válasza gtk hozzászólására (») Jan 20, 2010 /
 
A kapcsolási rajz alapján közös katódú. A szegmensekhez tényleg elfelejtettem odaírni az ellenállást a nagy sietségemben.

Sosem tudtam, hogy miért kell a Reset lábat egy ellenálláson keresztül magas szintre húzni, éppen ezért sosem tettem meg, eddig mindig működött.
Miért kell?
(#) Melphi hozzászólása Jan 20, 2010 /
 
Sziasztok szeretném felprogramozni a Topi féle AVR-Doperben lévő Atmega8-at egy STK200-al és a Ponyproggal ,kérdésem a fuse biteknél mit kell beálítani? Előre is köszönöm
(#) (Felhasználó 4577) válasza Melphi hozzászólására (») Jan 20, 2010 /
 
A beállítás alapján vissza tudod keresni az adatlapból a High és Low bitek beállítását.
(#) vbalint válasza (Felhasználó 4577) hozzászólására (») Jan 20, 2010 /
 
Igazad van, annyira nem fontos, van neki egy beépített felhúzó ellenállása. Én úgy automatikusan tettem rá, mert láttam magasban kell lennie
(#) (Felhasználó 4577) válasza vbalint hozzászólására (») Jan 20, 2010 /
 
Értem. Köszönöm!
Csak kíváncsi voltam, mert több helyen is láttam ilyet, de gyakran el is hagyták.
Gondoltam hogy van belső felhúzó ellenállása, ezért mertem elhagyni.
Mondjuk csak rá kellett volna mérnem multiméterrel.
(#) Yshteee válasza vbalint hozzászólására (») Jan 20, 2010 /
 
Köszönöm a hozzászólásokat, módosítani fogom a hardvert ezek alapján. A szoftverhez csak annyit, hogy ez valóban egyszerűbb amit írtál, én az elméletet itt a hobbielektronikán a hétszegmenses kijelzők megajtása című cikk adta. Na jó lehet hogy nem ez a pontos címe, de valami ilyesmi. a kijelzőt egy másik kapcsolásról "portoltam" és ott ilyen tranzisztorok voltak, amin az emitter a bázis felé mutat. Típust is tudok mondani: BC559. Ez a PICes kapcsolás pedig a

Ham_Radio_India

oldalról származik legalábbis 2009.08.29 ei állapot szerint még. De köszönöm mindenesetre.

A RESET 10K val magasra húzást férfiasan bevallva nem tudtam

A szintillesztéshez viszont lenne egy kérdésem. Biztos hogy fontos az a MAX232 ? ugyanis Persze nem PCről akarom használni, de láttam már olyan kijelzőt, lásd Micra Eco Prof vevőkijelzője, amiben szintén nincs ilyen, de megy PC ről. Jó ez sem PChez van kitalálva.
(#) vbalint válasza Yshteee hozzászólására (») Jan 20, 2010 /
 
Ha PC-re akarod kötni, akkor mindenképpen, mert az RS232 szabvány +/- 3V...15V közé eső logikai szintekkel dolgozik, míg az AVR-ed 0V és 5V szintekkel. Persze nem csak MAX232-vel lehet, 1-2 tranzisztorból álló szintillesztőt is használhatsz. Pláne neked csak fogadni kell az adatot...
Ha egy másik kontrollerrel akarod összekötni, akkor lehet közvetlen is.
(#) Melphi válasza (Felhasználó 4577) hozzászólására (») Jan 20, 2010 /
 
Köszi a segitséget de kezdö vagyok ebben ,így a segitséged nem igazán volt egyértelmű.
(#) vbalint válasza Yshteee hozzászólására (») Jan 21, 2010 /
 
A dolgot még egyszer átgondolva, PNP tranzisztorral is fel lehet építeni, a különbség annyi lesz, hogy nem magas, hanem alacsony jellel lehet a kijelzőt bekapcoslni. De szerintem akkor is kellene a bázisellenállás, bár az emitteráramot (ezzel a bázisáramot is) korlátozza a kijelző, illetve a vele sorba kötött ellenállások, míg NPN esetén nem.

A resethez még annyit, hogy emlékeztem, hogy nem véletlenül van ott az az ellenállás, de nem tudtam volna megmagyarázni az okát. Rákerestem egy Atmeles doksira, az AVR042 nevűre (google első találata). E szerint a külső reset ellenállás zajos környezetben ajánlott, a zaj miatti véletlen reset elkerülésére. Nem tudom, hogy ilyenkor mi történik a kontrollerben, csak sejtésem van. Mindenesetre 4k7-ot ajánlanak, míg a belső reset ellenállás 30k és 80k közé esik. A doksiban más okosság is van, érdemes elolvasni.
(#) MrMarcee hozzászólása Jan 23, 2010 /
 
Sziasztok!
AVR-el lenne problémám, és nem találtam itt rá megoldást. Illetve egyet találtam, és ha más nincs akkor az (fehér zajos random) marad, de minél kevesebb külső alkatrész használatával kellene.
csak nullát és egyet kell nekem generálnia, ez talán könnyít a dolgon. Nem csak 1-1 random kéne, hanem percenként 10-100millió, és hogy ne adjon fals adatot azért szeretném ha tényleg teljesen random számokat adna.
Minden ötletet szivesen fogadok.
(#) trudnai válasza MrMarcee hozzászólására (») Jan 23, 2010 /
 
Eppenseggel meg lehet probalni, hogy egy labat lebegni hagysz, es AD-vel beolvasod, also nehany bitet hasznalod fel. Egy probat meger, bar nem tudom mindig minden korulmenyek kozott mukodne-e...
(#) janyjozsef válasza MrMarcee hozzászólására (») Jan 23, 2010 /
 
10...100Millió?


Az 100MHz a kimeneten és még ehhez számolni (RND) is akarsz?

ATMEGA esetém a 10MHz is lehetetlen. Mer 16MHz / 2 (be/ki) és a ciklusidő még nincs is benne.

Min AT32AP7001 kellene.
Vagy ARM magos amik legalább a 200MHz- órajelet tudják.

Én inkább valami programozható logikai áramkörrel vagy simán logikai áramkörrel próbálkoznék. amik tudnak 70ns-nál kissebb kapcs időt.

Esetleg egy ana
(#) (Felhasználó 4577) hozzászólása Jan 23, 2010 /
 
Sziasztok!

ATmega8 MISO lábával vezérelek egy IRL540-et.
Az ISP-m azt írta ki, hogy zárlatot észlel a MISO lábon. A Gate-el soros ellenállást kicseréltem 10Ohm-ról 1,2KOhm-ra és nem érzékelt zárlatot.
Az 1,2KOhm nem lesz sok Gate ellenállásnak?
A FET 24V-on max 2,2A-t kell kapcsolgatnia.
(#) Thowra hozzászólása Jan 23, 2010 /
 
Üdv mindenkinek!
Most ismerkedek az AVR ek világával.
Kaptam egy AT89C51 24JI ic t (Úgy tudom újraírható fajta).
Nézegettem az adatlapját de még sok minden 'kínai'.
A programozása hogy történhet? Kell neki kvarc a programozás alatt? Milyen programozót javasoltok hozzá?
Az ic használt, lehet van kódvédelem benne, ha igen akkor egy törlés segít rajta? Bocsánat a sok kezdő kérdésér de ez az első avr em (eddig piceztem de erre is kíváncsi vagyok).
A segítséget előre is köszönöm.
(#) Topi válasza (Felhasználó 4577) hozzászólására (») Jan 23, 2010 /
 
A zárlatot amiatt érzékeli, hogy a MISO-n lévő órajel + a gate-source kapacitás + a belső ellenállások, már határozott hatást gyakorol.
Pár pF-os gate-source kapacitás, meg a 1-2MHz-es MISO jel, ott már sokminden számít.
(#) Topi válasza Thowra hozzászólására (») Jan 23, 2010 /
 
Idézet:
„Most ismerkedek az AVR ek világával.
Kaptam egy AT89C51 24JI ic t”


Sajnos az AT89C51 nem AVR, hanem az Atmel 8051-es szériája.
Ezt nem fogod tudni az AVR-ekhez hasonlóan ISP-n programozni, C51hez, HVSP kell (High Voltage Serial Programming)
(#) (Felhasználó 4577) válasza Topi hozzászólására (») Jan 23, 2010 /
 
Köszönöm a választ!
Az, hogy a Gate ellenállást megnöveltem fogja befolyásolni a kapcsolási sebességet, áramot, vagy bármit?
Ha igen, akkor mit?
(#) Thowra válasza Topi hozzászólására (») Jan 23, 2010 /
 
Üdv!
Köszönöm a felvilágosítást.
Érdemes ezzel az ic vel foglalkozni vagy elavult/hobbi célra (motorvezérlés, lcd meghajtás...) nem megfelelő?
ha érdemes vele foglalkozni, tudsz esetleg működő hardvert/szoftvert mutatni amivel használható?
(#) Topi válasza Thowra hozzászólására (») Jan 23, 2010 /
 
Nem érdemes vele foglalkozni. Rakás szenvedés mire egyáltalán felprogramozod, és akkor még jön, hogy csak asm...
(#) Topi válasza (Felhasználó 4577) hozzászólására (») Jan 23, 2010 /
 
Idézet:
„Az, hogy a Gate ellenállást megnöveltem fogja befolyásolni a kapcsolási sebességet, áramot, vagy bármit?”

Egyértelműen. Számolható a Gate-Source kapacitás és soros ellenállásból az időállandó.
Ha nem használod PWM-re vagy ilyesmire, akkor mindegynek tűnhet, hogy most a kapcsolási időd 100ns vagy 10uS... De amikor 2A-t kapcsol, akkor azalatt az idő alatt, amíg ő épp vált, disszipálni fog borzasztóan.
Ha viszont PWM-hez használod, akkor meg egyértelmű, hogy rossz az ilyen nagy RC időállandó.

Ha már mást nem tudsz csinálni, akkor puffereld meg a programozód kimenetét (pl. 74HC126).
(#) edison14 válasza Thowra hozzászólására (») Jan 23, 2010 /
 
Ha most ismerkedsz az AVR-ekkel nagyon tudom javasolni EZT az oldalt. Itt nézz át mindent és párhuzamosan a programozással építsd meg próbapanelen az áramköröket és tesztelgesd. Eleinte nehéz lesz de ha megtanulsz egy két parancsot akkor már fog menni. Ha esetleg C-ben szeretnél programozni akkor az alábbi dokumentációt olvasd végig valamint az AVR dokumentációja mindig legyen kéznél. Ha a PIC-eket már ismered és esetleg C-ben programoztád őket akkor ez egy-két hét mindennapi gyakorlással is menni fog.
Sok sikert.

Alapok.doc
    
(#) MrMarcee válasza janyjozsef hozzászólására (») Jan 23, 2010 /
 
A komplett szerkezetnek tudnia kell:
10-100 millió random azért, hogy egyértelmű legyen a 0 és 1ek számának különbsége.
miután ezeket lerandomolta, kiszámolja a különbséget, és letárolja memóriába.
Ha külső áramkör csinálná a randomot, akkor abból a folyamatos jelből, lehetne mintavételezni.

Esetleg olyat lehetne, hogy két mega8 csinálná, majd azok ha végeztek, egymással kommunikálnak, és összesítik az eredményeket.
és akkor maradna csak 10 millió random mondjuk, vagy nem 1 perce lenne rá, hanem akkor 5 perc.
(#) janyjozsef válasza janyjozsef hozzászólására (») Jan 23, 2010 /
 
Kifagyott a gépem!

Szóval a mondat:
Esetleg agy analóg fehér zaj generátor a végén egy komparátorral.
Akkor véletlenszerű 1,0 jelet kapsz. És az analóg jelek igen nagy frekvenciák is lehetnek.
Csak egy nagyfrekis komparátor kell.
(#) (Felhasználó 4577) válasza Topi hozzászólására (») Jan 23, 2010 /
 
Köszönöm a segítséget!
Sajnos már készen van a NyÁK lapom és beültettem az összes SMD alkatrészt.
Majd meglátom, hogy mi lesz. Esetleg megpróbálom kicserélni kisebbre, 470 Ohm-ra, vagy ha befejeztem a szoftverfejlesztést visszateszem a 10 Ohm-ot.
(#) trudnai válasza (Felhasználó 4577) hozzászólására (») Jan 23, 2010 /
 
Amig nincs kesz a fejlesztes mi a fenenek csinalsz neki nyakot? Le kell proba panelezni vagy akar dugdososon ossze rakni es csak ha mar minden jol megy (bele ertve a firmware-t is) elkesziteni hozza a panelt...
(#) (Felhasználó 4577) válasza trudnai hozzászólására (») Jan 23, 2010 /
 
Már megcsináltam próbapanelon, elég nagy dzsumbuj volt már rajta és egészen szépen működött, de a sok kábel miatt volt egy kisebb zavar probléma. A hardveren már nem lesz több módosítás, amit lesz, azt megcsináltam.
Tehát már próbapanelon működött, de még finomítani kell rajta.
(#) MrMarcee válasza janyjozsef hozzászólására (») Jan 23, 2010 /
 
Akkor EZ jó lenne?
És ezt mintavételezné amilyen sűrűn csak tudja a mega8.
(#) (Felhasználó 4577) hozzászólása Jan 23, 2010 /
 
Újabb problémába ütköztem.
Van 3 darab hétszegmenses kijelzőm, amit multiplexelve kell vezérelnem, azonban az a, b, c, d, e, f lábak nem egy porton vannak, ha egy porton lennének, akkor meg tudnám írni a programot.
Hogyan kellene megcsinálni hogy így is tudjam vezérelni?
  1. static unsigned char d2led[]={0x40,0x73,0x24,0x21,0x13,0x09,0x08,0x63,0x00,0x01};
  2.  
  3. int UpdateSegments(unsigned int number)
  4. {
  5.        
  6.         return 0;
  7. }

Eddig megcsináltam, a d2led az előző programomhoz jó volt, aminél egy porton voltak a kijelző lábai.

untitled.PNG
    
Következő: »»   177 / 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