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   123 / 840
(#) san398 válasza Sir-Nyeteg hozzászólására (») Máj 10, 2009 /
 
Csatoltam az asm file-t , remélem segít és tudsz vele mit kezdeni.
(#) zsuscsinyo válasza Mumtaz hozzászólására (») Máj 10, 2009 /
 
Én ezt a programozót építettem meg, és kifogástalanul működik! Amúgy az LPT port beállítását is figyelembe kell venni, ugyanis énis jártam úgy, hogy nem akart az istenért sem működni, aztán kiderült hogy a BIOS-ban a port címe sem volt jó meg a típusa sem (EPP/ECP), ezeket nézd meg. Az I/O tartománya nálam 0378h - 037Fh.

Bővebb infó: Tavir AVR

ISP.gif
    
(#) Mumtaz válasza zsuscsinyo hozzászólására (») Máj 10, 2009 /
 
Pont ez az érdekes, hogy én is ezt építettem meg még 2 éve és akkor működött rendesen, de ott minden szabvány volt: A céláramkörről vette a delejt, stb. Ott viszont -ahogy az előzőben írtam- a céláramkörön lévő programozó csati és az ATmega16 lábai közt voltak 330Ohmos ellenállatok. Ezért kérdeztem, hogy azok mindenképpen kellenek-e, vagy attól még meg kéne találni az AVR IC-t, csak mondjuk hibás lenne a kiolvasás/írás.

A BIOS-t már ellenőriztem.

És akkor a programozáshoz szükséges dolgok, csak, hogy nehogy az egyértelműnek látszó dolgokban legyen a hiba a Tavir AVR oldalon lévő STK200 és ATtiny2313 esetén a lábak összekötése:

74LS244N -> ATtiny2313
3 -> 1 (RESET)
11 -> 18 (MISO)
16 -> 17 (MOSI)
18 -> 19 (SCK)

És akkor az ATtiny2313 tápja
20 -> VCC (+5V)
10 -> GND

Tehát ezeknek kell bekötve lenni programozás alatt, ha mindent jól értelmezek.
Behalok, hogy ilyen egyszerű, de mégsem akar működni.

Nem tudna valaki segíteni Újpesten a mai napon beletolni a szoftot ebbe az ATtiny-be? Akkor ráérnék majd később foglakozni a programozóval, vagy venni egyet készen.
(#) Mumtaz hozzászólása Máj 10, 2009 /
 
Jelenleg ott tartok, hogy PonyProgban teszt képpen rányomok a Read Device gombra. Bedobja a folyamatjelzőt 0%-al, majd feldobja a hibát. Itt, ha ignore-t nyomok, akkor kiolvas valahonnan 2176 bájtnyi kódot, de közel sem vagyok benne biztos, hogy ez az üres ATtiny IC tartalma. Megőrülök.
(#) ZPKing hozzászólása Máj 11, 2009 /
 
Sziasztok
Lenne egy kérdésem ezzel a programozóval.
AVR-Doper
Megépítetettem. Windows Vista 64Bit-em van.
Felismeri USB-HID eszköznek úgy hogy nincs rajta a USBHID jumper és ha rajta van akkor is.
Viszont próbáltam módosítani a drivert ott rajz után lévő driverrel de nem engedi.
Azt szeretném megtudni hogy kell-e módosítanom Bascom-AVR hez a drivert vagy felismeri így is?
Amúgy ami az oldalon a rajz után van hex fálj az lett a ATMega8 ba égetve egy másik égetőből és visszzatéve amit csináltam és utána ismeri fel a gép USB-HID nek.
Akinek vista 64bitje van kérem segítsen nekem
Előre is köszönöm
(#) zacc hozzászólása Máj 11, 2009 /
 
Hello.
Nagyon kezdő vagyok az mcu progik terén.
azt szeretném megoldani hogy egy atimega8 as mcu portc jén levő 3 led vilogjon ugy hogy az egyik mondjuk 200 ms időközönkent egy másik 300 ms időközönkent es egy harmadik 500 ms időközönkent.A nagy baj az hogy basic nyelvben kelene megirodjon mivel hogy a bascomot használjuk a suliban.
Segitségeteket elöre is kösz.
(#) TavIR-AVR válasza zacc hozzászólására (») Máj 11, 2009 /
 
Programváz:

Definíciók:
$regfile
$crystal =10000000

Alapbeállítás:
Config portb.3=output és ez egyéb LEDlábakra is
Config timer =timer , ....'100msec periódusidő
dim szamlalo as byte
on timer 1 TIMERrutin
enable timer1
enable interrupts
start timer1

do
nop
loop

TIMERrutin:
szamlalo=szamlalo+1
if szamlalo mod 5 =0 then toggle portb.2 '500 msec valtas
if szamlalo mod 2 =0 then toggle portb.1 '200 msec valtas
if szamlalo mod 3=0 then toggle portb.2 '300 msec valtas
tobbszoros
if szamlalo=30 then szamlalo=0'legkisebb kozos tobbszoros
return
(#) ZPKing hozzászólása Máj 11, 2009 /
 
Szisztok!
Nem tud akkor senki segíteni Vista 64bit rendszerbe
nagyon szeretnék már programozni de sajnos
nem tudom feltelepíteni a Com drivert.
A gép felismeri Com port ként de felkiáltó jelezve hibát ír ki. és ha frissítem az oldalon lévő driverrel akkor is ott marad a felkiáltó jel.
Segítsen valaki köszönöm.
(#) rogers hozzászólása Máj 11, 2009 /
 
Hi.

Szeretnék egy kis infot kérdezni. Rendeltem 1 Slirvercard smartcardot amibe PIC controller van,de a srác küldött funcard4-et ami ugye AT90S8515 alapu. Az lenne a kérdésem hogy ezt hogy tudom felprogizni utána illeszteni áramkörbe ha a XTAL 1ik lába van csak kivezetve. Vagy van benne belső qvarc is? Pic-et tudok progizni de a Ponyba is be van kötve 1 qvarc.

http://www.wlsmartcard.com/images/funcard.gif

Thx
(#) ATtiny válasza rogers hozzászólására (») Máj 11, 2009 /
 
Az AT90S8515 -ben nincsen belső oszcillátor. Azért van kivezetve az XTAL1 -es láb, mivel az használható külső órajel bemenetnek. Amúgy meg ha megnézted volna az adatlaját Bővebben: Link akkor ez egyből kiderült volna. Szerintem elég szerencsétlen választás volt pont a AT90S8515 -ös. Ennél sokkal jobb AVR-eket lehet kapni azonos árban.
(#) rogers válasza ATtiny hozzászólására (») Máj 11, 2009 /
 
Thx,de sajnos nem volt választásom mert ez volt a chipkártyába.

Az XTAL1 az ki van vezetve de az XTAL2 nincs , hová kötöm a qvarc másik lábát?

Köszi.
(#) zacc válasza TavIR-AVR hozzászólására (») Máj 11, 2009 /
 
Kösz szépen. aszem értem.
(#) gtk válasza rogers hozzászólására (») Máj 11, 2009 /
 
Oszcillatort kell hasznalni ez esetben nem qvarcot, mert nincs belso oszcillatora ennek a procinak.
(#) ATtiny válasza rogers hozzászólására (») Máj 11, 2009 /
 
A külső órajel bemenetre négyszögjelet kell adni programozás során. Kvarcot nem tudsz használni XTAL2 nélkül. Lásd adatlap. Ha már belinkeltem neked az adatlapot, vehetted volna a fáradságot, hogy megnézed. 86. oldalon le van írva minden.

Egészen konkrétan:
Idézet:
„Either an external clock is supplied at pin XTAL1 or crystal needs to be connected across pins XTAL1 and XTAL2.”


Magyarul XTAL1-en kell külső órajel programozáskor vagy kell egy kvarc a XTAL1 és XTAL2 láb közé.
(#) gtk válasza gtk hozzászólására (») Máj 11, 2009 /
 
Az adatlap 6. oldalan megtalalsz mindent. Hasznalhatsz qvarcot, de akkor kell az XTAL2 is. Ha nem, akkor hasznalj kulso oszcillatort.
(#) rogers válasza ATtiny hozzászólására (») Máj 11, 2009 /
 
Köszi megnézem. És neked is gtk.
(#) vzoole hozzászólása Máj 13, 2009 /
 
Sziasztok!

Lenne néhány kérdésem akkumlátoros üzemről.

Egy készülék 4db NiMh akkuról menne (kb.:120 mA fogyasztással).
Ez feltöltve 5,64 V, lemerülve 4,4 V.

1 - Hogyan kéne szabályozni a feszültség maximumát?
-gondolok itt arra, hogy ha esetleg a töltőt is rádugom, akkor már túl magas lehet a feszültség az AVR-nek.
-esetleg tegyek rá egy 3,9 V-os zener diódát, vagy van erre jobb megoldás?

2 - Még nem néztem nagyon utána, de gondolom analóg bemenetnél az AREF lábhoz viszonyítva mér.
-mert jó lenne, ha bekapcsoláskor végrehajtana egy akkutesztet a készülék, és mivel van kijelző rajta, így ki is jelezhetné a feszültséget (vagy a töltöttséget %-ban).
-ehhez is kell egy stabil referenciafeszültség... zener dióda megfelel ehhez, vagy hogy szokás megoldani?

3-Mennyire jó ötlet beleapplikálni a főprogramba az akkutöltés programját?
-tehát a készülék ugyanúgy üzemelne tovább, de ha rádugok egy sima tápot akkor rákapcsolná a töltést pár másodpercig, majd mérné a feszültséget... pont mint az AVR 4 cikkben.

Köszi
Zoli
(#) wg_kezdo hozzászólása Máj 14, 2009 /
 
Nem tudtok egy rövid magyar nyelvű leírást az SPI-ről, hogy mi is az pontosan és hogyan működik?

Nem a részletei, hanem egy általános leírás a működési elvekről.
(#) gtk válasza wg_kezdo hozzászólására (») Máj 14, 2009 /
 
(#) wg_kezdo válasza gtk hozzászólására (») Máj 14, 2009 /
 
Na, csak a cikkek között nem kerestem
Köszi.
(#) trudnai válasza vzoole hozzászólására (») Máj 14, 2009 / 1
 
Idézet:
„1 - Hogyan kéne szabályozni a feszültség maximumát?
-gondolok itt arra, hogy ha esetleg a töltőt is rádugom, akkor már túl magas lehet a feszültség az AVR-nek.
-esetleg tegyek rá egy 3,9 V-os zener diódát, vagy van erre jobb megoldás?”


Regulatort kell hasznalnod. Ez lehet egy zener is akar, vagy stab kocka, de figyelembe kell venned nehany tenyt. Pl a stab kockaknal kb 2V-tal tobbnek kell lennie a bemeno feszultsegnek, hogy jol dolgozzon, egy zener pedig fesz oszto tulajdonkepp es viszonylag nagy a fogyasztasa egy akksis uzemhez -- min 1mA kell neki, hogy jol dolgozzon, raadasul az sohasem lesz teljesen tokeletesen 3.9V -- nezd meg az adott dioda adatlapjat milyen korulmenyek kozott kb mekkora a breakdown feszultsege.

Aramfelveteltol fuggon akar egy egyszeru LDO regulator is jo lehet, amiknek 100uA tol egeszen lemehetnek 1-2uA-ig is. Ezek mar altalaban homerseklet kompenzalt aramkorok es tipustol fuggoen 50mA-tol parszaz mA-ig szoktak elerhetok lenni. Ha ennel tobb kell akkor ezeket lehet fesz referncianak hasznalni egy regulatorhoz.
(#) kendre256 válasza trudnai hozzászólására (») Máj 14, 2009 / 1
 
Stabilizátor kockákból van olyan típus is, amelynek elég 0,5-0,7V-al nagyobb bemenőfeszültség, mint a kimeneti feszültség.
Szerintem ilyesmivel kellene megoldani.
Az LT1129 változtatható kimenőfeszültségű, de van belőle fix 3,3 és fix 5 V-os is (LT1129-3.3 és LT1129-5).
(#) trudnai válasza kendre256 hozzászólására (») Máj 14, 2009 /
 
Pontosan, ez egy LDO amirol beszeltem (LDO = Low DropOut).
(#) aquafood hozzászólása Máj 14, 2009 /
 
Sziasztok!

Atmega8-at szeretnék assamblyben programzni.
Rutint szeretnék irni, amit CALL utasítással hívnék meg, de a fordító AvrStudio4 azt írja, hogy a CALL "unsupported instruction".
Mit lehet ilyenkor tenni?
Ez azt jelenti,hogy egyáltalán nem lehet assembly rutint írni Atmeg8ra?
A választ előre is köszönöm!
(#) Dudus válasza aquafood hozzászólására (») Máj 14, 2009 /
 
Amikor programozol a Help->assembler help menüben tudod megnézni az utasításokat és a szintaktikát.

A Call - nak működnie kell.
(#) kendre256 válasza aquafood hozzászólására (») Máj 14, 2009 /
 
Az Atmega8-nál én csak RCALL utasítást látok a help végén, a Device specific instruction set summaries-ben.
Az viszont használható, én már dolgoztam vele.
(#) Dudus válasza kendre256 hozzászólására (») Máj 14, 2009 /
 
Így van Indirect Call ( ICALL) és Relative CALL ( RCALL) van.

(Az adatlapon megtalálható az utasításkészlet.)
(#) anklar hozzászólása Máj 14, 2009 /
 
Sziasztok, nemrég kezdtem el foglalkozni az avrrel. És megszakítást szeretnék használni, de sehogy se sikerül beállítanom hogy csak felfutó élre csináljon megszakítást nyomógombnál. akár hogy is állítgattam az EICRA értékét sehogy se sikerült. A használt avr : ATMEGA644


  1. #define F_CPU 8000000UL
  2. #include
  3. #include
  4. #include
  5. #include
  6. #define BSET(p,b) ((p)|=(1<
  7. #define BCLR(o,b) ((o)&~(1<
  8.  
  9.  
  10.  
  11. short mehet;
  12. void init(void)
  13. {
  14. mehet=1;
  15. PCMSK2=0x01; //PINC0 engedlyezese
  16. PCICR=_BV(PCIE2); //interrupt engedelyezese
  17. DDRD=0xFF;
  18. DDRC=0xFE;
  19. PINC=0x00;
  20. BSET(EICRA,ISC01);
  21. BSET(EICRA,ISC00);
  22. }
  23. SIGNAL(PCINT2_vect) __attribute__((naked));
  24. SIGNAL(PCINT2_vect)
  25. {
  26. cli();
  27. mehet=0;
  28. sei();
  29. }
  30. void kesleltet()
  31. {
  32. _delay_ms(10);
  33. }
  34.  
  35. void villog()
  36. {
  37. PORTD=0x01;
  38. for(int i=0;i<3;i++)
  39. {
  40. kesleltet();
  41. PORTD*=2;
  42. }
  43. for(int i =0;i<4;i++)
  44. {
  45. kesleltet();
  46. PORTD/=2;
  47. }
  48. }
  49. int main(void)
  50. {
  51. init();
  52. while(1)
  53. {
  54. kesleltet();
  55. while(mehet)
  56. {
  57. villog();
  58. }
  59. }
  60. }



(#) vzoole hozzászólása Máj 14, 2009 /
 
Szia!
Kódot rendesen beszurni így kell:
(code=c) (/code) természetesen szögletes zárójelekkel.

Na most amibe nem vagyok biztos, de beleszólok
Szerintem PCINT-nél nem lehet hardveresen szűrni a fel és lefutó éleket. Az csak INTx-nél van.

Szoftveresen kell szűrnöd egy IF-el a megszakításon belül.
(#) ATtiny válasza anklar hozzászólására (») Máj 14, 2009 /
 
Ez a kód... fogalmazzunk úgy.. hogy érdekesen néz ki Pár tanács: Jó lenne tagolni, mert így összefolyik és olvashatatlan. SIGNALT felesleges eröltetni ISR jobb. Ha golbális változót használsz megszakításbol, akkor KELL a volatile előtag.Mert nem fog működni.
Következő: »»   123 / 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