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   691 / 837
(#) AxaGame hozzászólása Szept 13, 2015 /
 
Sziasztok!
Atmel Studio program szimulátorát hogyan tudom rávenni, hogy léptetés során beugorjon az esetleges timer IT-be is?
Ha beteszek egy töréspontot az IT kiszolgálóba, akkor is csak néha, számomra kiszámíthatatlan módon ugrik bele. A debug képernyőn az IT flagek megfelelően váltokoznak. (Na meg a program is jól működik.)
(#) Sick-Bastard válasza attika hozzászólására (») Szept 13, 2015 /
 
Mindkét file lényegében egy speciális txt file, ami az avr lefordított kódját tartalmazza.
Ami a hex fileban így néz ki:
Idézet:
„...000102030405...”

bin fileban így:
Idézet:
„...0b1000000,0b1000001,0b1000010,0b1000011,0b1000100,0b1000101,...”

Ez 6 byteot jelent 0tól 5ig bezárólag.

Szerintem a te két fileod nem ugyan azt a kódot tartalmazza. Nekem az AVR kód hex fileba konvertálva kisebb mint a bin file. Nálad ez fordítva van.
(#) Ricsi89 válasza attika hozzászólására (») Szept 13, 2015 /
 
A bin az bináris, kettes számrendszerben tárolt adatfájl, a hex pedig 16-os számrendszerben tárolt adatfájl.
(#) attika válasza Sick-Bastard hozzászólására (») Szept 13, 2015 /
 
Név szerint ugyan az,tudom,hogy ez semmit nem jelent,de így töltöttem le,hogy egy mappában voltak.
(#) Sick-Bastard válasza attika hozzászólására (») Szept 13, 2015 /
 
Ok így már más. A te bin fileod valóban bináris adatot tartalmaz. A két file közül bármelyiket használhatod.
(#) attika válasza Sick-Bastard hozzászólására (») Szept 13, 2015 /
 
Na feladom,nekem ez az AVR nem akar menni,PIC-el sosem szívtam még ennyit.
Van 2db USBASP-m,az egyikkel felprogramoztam a másikat,hibátlan lett.
Utána beleégettem a Fuse Dr hex fájlt és az is hiba nélkül megcsinálta,kiforrasztottam belőle.
Fogtam beletettem a fuse dr-ba,de valamiért nem akart működni,gondoltam kiszedem belőle és vissza teszem a ASP-be és rátöltöm azt a hex-et amit az smd fuse dr változathoz kell,de sajnos már nem működött,ugyan azokat a hibaüzeneteket dobja ki amit még a legelején amikor elkezdtem.A Fuse dr nyákot vagy 100x átnéztem,de semmi hibát nem vettem észre.
Lehetséges,hogy a ki-be forrasztástól elhalálozott az atmeg8??!
(#) csabeszq válasza attika hozzászólására (») Szept 14, 2015 /
 
A DIP IC-ket foglalatba illik tenni.

Nem tudom, hogy hogyan forrasztottad ki. Én úgy szoktam, hogy levágom az összes lábát, az IC kuka, utána egyesével kiszedem a lábakat, hogy a panel ne égjen szét.

Ha van hőlégpáka lehet, hogy egyszerűbb, de mezei otthoni pákával nem tudsz szerintem IC-t kiforrasztani. Az összes youtube videó láblevágással kezd.
(#) morgo válasza csabeszq hozzászólására (») Szept 14, 2015 /
 
Azért az nagyon durva lenne, ha egy mezei dip tokos IC-t nem lehetne simán kiforrasztani. Furatgalvános nyákból kissé nehezebb, de az sem akkora gond, hogy a lábait keljen vagdosni.
A hozzászólás módosítva: Szept 14, 2015
(#) csabeszq válasza morgo hozzászólására (») Szept 14, 2015 /
 
Akkor csak én nem értek hozzá.

Nálam mindig leégtek a vezetékek a furatgalvános nyákról. Próbáltam ónszippantóval, meg solder wick-kel is, de a vége mindig túlmelegedés és panel sérülés volt. Lehet, hogy ügyetlen vagyok, de most már fogóval kezdem a műtétet.
A hozzászólás módosítva: Szept 14, 2015
(#) attika válasza csabeszq hozzászólására (») Szept 14, 2015 /
 
Csúnya lenne ha minden egyes ki-be forrasztásnál kukáznám a Uc-t.Semmi vagdosás nem kell,hőlégpákával kb 1 perc és kint is van.Azóta már sikerült megoldanom.
Az SCK lába lógott a levegőben amit még nagyító alatt sem vettem észre csak úgy,hogy megpiszkáltam fogpiszkálóval és láttam,hogy mozog.Így sikeresen felprogramoztam Fusebit átírva,hogy belső oszcillátorról induljon,de sajnos nem akar működni a Fuse DR.
(#) dokidoki válasza csabeszq hozzászólására (») Szept 14, 2015 /
 
Még pillanatpákával is két egyszerű módszer szerint ki lehet venni, csak ne legyen furatgalvános, és szűk a furat. Hajítasz megfelelő csúcsot, ami egyszerre melegíti a lábsort, vagy kiforrasztó 'hegyet, ami még az ónt is leszedi, mintha szalaggal puceváltad volna. yútyubon kívül is van élet
A hozzászólás módosítva: Szept 14, 2015
(#) csabeszq válasza dokidoki hozzászólására (») Szept 14, 2015 /
 
Értem, csak elkorcsosultam. Az Ebay-en 450 Ft egy Atmega328P-s mikrovezérlő, 30 Ft egy IC foglalat, nem fogok szórakozni vele.

Hőlégpákám nincs, mert egyelőre még nem volt olyan projektem, ahol megtérülne a befektetett pénz (100.000 Ft).
(#) attika válasza csabeszq hozzászólására (») Szept 14, 2015 /
 
Nem kell rögtön BGA-zót venni,nekem egy ilyenem van és eddig még jó volt.
(#) csabeszq válasza attika hozzászólására (») Szept 14, 2015 /
 
Nem is rossz, kösz, hogy leírtad. Ilyen árkategóriában már érdekes lehet nekem.
(#) attika válasza csabeszq hozzászólására (») Szept 14, 2015 /
 
Elég off ez ide de többet nem is írok róla,de 20-50-ig bezárólag elég sok választás van hőlégpáka terén,de elsőnek meg hobbi szinten szerintem ez bőven elég.Ami engem zavar egy kicsit benne az az ,hogy nincs digitális hőfok kijelzés. ezt hiányolom,de a 30-50-ig kategóriába már benne van.
(#) zsozsoX hozzászólása Szept 15, 2015 /
 
Sziasztok! Egy 3,3V-os avr-t kellen összehoznom egy 5V-os rs485-el. Adat fogadásnál jó feszültségosztó, küldésnél meg egy level shifter?
A hozzászólás módosítva: Szept 15, 2015
(#) Droot válasza zsozsoX hozzászólására (») Szept 15, 2015 /
 
Nézd meg, hogy a RS485-ös IC-nél (gondolom RS485-rs232 konverter) mekkora feszültséget tekint H szintnek, lehet nem kell semmit.
Fesz osztó helyett FET-ekkel is meg lehet csinálni.
(#) Kerberosz1 hozzászólása Szept 15, 2015 /
 
Üdv,
egy atmega32a microvezérlővel szeretnék feldolgozni egy hobby vevőből érkező jelet, pwm jel 20ms periódusokkal 5-10%-os kitöltöttséggel. A timer/counter 0 és 1 használatban van így maradt egy 8 bites timer, sok megoldást találtam a neten, konkrét választ sehol nem kaptam, de elméletben az lenne egy megoldás, ha letudnám mérni amíg highon van a jel. Próbálkoztam magamtól de elakadtam és fogalmam sincs hogyan tovább.
Kódom:
  1. int channel1 = 100;
  2. int flip = 1;
  3.  
  4. int main(void)
  5. {
  6.         DDRA = 0XFF;
  7.         DDRB |= 1<<PINB1;
  8.  
  9.         TCCR0 |= 1<<CS02;
  10.     while(1)
  11.     {
  12.                 if((PINB & 1<<PINB0) && flip==1)
  13.                 {
  14.                         TCNT0=0;
  15.                         flip=0;
  16.                 }
  17.                 if(~(PINB & 1<<PINB0) && flip==0)
  18.                 {
  19.                         channel1=TCNT0;
  20.                         flip=1;
  21.                 }
  22.                 PORTA=channel1;
  23.                 if( channel1<=93 )
  24.                 {
  25.                         PORTB |= 1<<PINB1 ;
  26.                 }
  27.                 else
  28.                 {
  29.                         PORTB &= ~(1<<PINB1) ;
  30.                 }
  31.     }
  32. }


16Mhz en megy a proci, PORTA-n ledek vannak, és ha rákötöm a vevőre folyamatosan 1-et mutat
Ötletem sincs hol rontottam el, vagy hogyan lehetne megoldani, ha esetleg valaki tudna segíteni nagyon megköszönném.
(#) Droot válasza Kerberosz1 hozzászólására (») Szept 15, 2015 /
 
Az hogy hobby vevőből érkező jel az tág fogalom. Micsoda ez? RF vevő vagy valamilyen IC? Van olyan lába, ahol megjelenik a jeled?
Ha interrupt lábra küldöd a PWM jelet és tudod a frekvenciáját, akkor egy timerrel ki tudod számolni hogy hány %-os a kitöltési tényező.
(#) csatti2 válasza Droot hozzászólására (») Szept 16, 2015 /
 
A leírásból ítélve ez valamilyen szervo vezérlő lehet. Ott szokás kb. 50Hz-es frekvenciával 0,5-2,5ms-es impulzusokkal vezérelni (az impulzusszélesség mondja meg, hova álljon a szervo).

Egy kicsit részletesebben, amit Droot javasolt:
Az ideális megoldás a timer 1 input capture unit-jának használata lenne, de hát azt már elhasználtad, tehát marad a kicsit igénytelenebb megoldás.
Első lépésben készíts egy időreferenciát. A timer 2 overflow megszakítását felhasználva egy a prescaler beállításával finom hangolható felbontású időreferencia készíthető. Egy volatile változó értékét kell mindig eggyel növelni, amikor az overflow esemény bekövetkezik.
Második lépésben az egyik PCINT (pin change interrupt) felhasználásával érzékelni kell a jeled változását. Ebben a megszakításban meg kell határoznod az esemény bekövetkeztének idejét úgy, hogy a referencia alsó bájtja a timer2 számlálójának aktuális értéke (ezt a megszakítás meghívásakor azonnal be kell tenni egy változóba, ha pedig nagyon alacsony az értéke, érdemes ellenőrizni a timer 2 overflow flagjét, hátha még nem tudott meghívódni az overflow megszakítás, de a számláló már túlcsordult). A felső bájtok pedig a már elkészített időreferencnia változónk bájtjai. Ebből a számból kivonjuk az előző esemény bekövetkeztének időreferenciáját (értelemszerűen mindig eltesszük a korábban számított időreferenciát egy változóba) és máris megvan mennyi idő is telt el a két jelváltozás között. Ha ez kívül van az értelmezési tartományon, akkor eldobjuk a mérést, egyébként pedig átszámíthatjuk tetszés szerint időbe, kitöltési tényezőbe vagy akár százalékba is.
(#) vyky hozzászólása Szept 16, 2015 /
 
Sziasztok.
Volna egy hatalmas kérésem hozzátok.
Adott egy attiny2313 annak a PD2,PD3-as portjára kötöttem egy-egy nyomógombot.
A feladata az lenne,ha megnyomom az 1-es gombot akkor a led bekapcsol.Ha megnyomom a másikat akkor lekapcsol.
Tudom ez nektek kisujjból megy de számomra ez kicsit nehéz még.
Esetleg egy könyv linket is tudnátok mellékelni ahol az avr studio használatát leírják?
Köszönöm előre is.
Ja a led a PB1-en van.
(#) Massawa válasza vyky hozzászólására (») Szept 16, 2015 /
 
Itt mindent megtalálsz:

http://avr-asm-download.de/beginner_de.pdf

Itt meg van egy nagyon egyszerü, lépésröl lépésre szolo gyorstalpalo ( képekkel megoldásokkal).

http://www.avr-asm-tutorial.net

Sajnos az IOS-rol nem megy a Link gomb, ezért kell igy linkelnem.
(#) vyky válasza Massawa hozzászólására (») Szept 16, 2015 /
 
Köszönöm szépen,meglesem.
(#) vyky válasza vyky hozzászólására (») Szept 16, 2015 /
 
Sajnos ezzel nem jutottam messzebbre
Az asm-et még annyira sem értem mint a C-t.
(#) rolandgw válasza vyky hozzászólására (») Szept 16, 2015 /
 
PD2-3-ból gondolom,hogy megszakítást akarsz használni.Ha ezt érted,akkor már át tudod írni.
(#) Massawa válasza vyky hozzászólására (») Szept 16, 2015 /
 
Sajnos az alapokat nem lehet kikerülni, veritéket izzadva meg kell tanulni.
Alul van a kapcsolas meg a progi. Ettöl többet nem igen lehet segiteni.
(#) Sick-Bastard válasza vyky hozzászólására (») Szept 16, 2015 /
 
Én innen tanultam meg az alapokat.
(#) Kovidivi válasza vyky hozzászólására (») Szept 16, 2015 /
 
Szerintem ne Assembly-ben próbálkozz először, hanem sima C-ben. Amit Sick-Bastard linkelt, az jó oldal, szépen végigmész az összes leckén, sorban, videót is megnézve.
(#) vyky válasza rolandgw hozzászólására (») Szept 16, 2015 /
 
Szia.köszönöm ez már segített kicsit,bár itt is csak egy gomb lekezelését mutatja be.
(#) vyky válasza Sick-Bastard hozzászólására (») Szept 16, 2015 /
 
Szia,köszönöm megnézem. Ha gondom lesz szólók.
Következő: »»   691 / 837
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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