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   584 / 840
(#) csabeszq válasza Sick-Bastard hozzászólására (») Jan 14, 2014 /
 
Nagyon nem. Interruptban nem vársz semmit, nem is tudod, hogy fog-e küldeni valaha a mester neked valamit.

Az SPI egyszerre ír és olvas. Nincs olyan, hogy most csak írsz, vagy most csak olvasol.
Olyan van, hogy írsz és olvasol egyszerre.

A probléma ezzel az, hogy a slave-nek előre tudni kellene, hogy a master mit akar kérdezni és a választ még azelőtt berakni, hogy megjönne a kérés.

A gyári IC-k java része 16 biten üzenget a slave-nek. Az első 8 bit a kérés (a kimenet nem meghatározott), a következő 8 bit a válasz (a bemenet nem meghatározott).

A másik probléma SPI-vel, hogy azonnali válaszküldést igényel. A mester adja az órajelet, te meg válaszolsz. Értelemszerűen nem fogsz tudni ADC-t mérni 10us alatt, míg a master simán nyomhat ilyen sebességgel. Neked kell kívülről rárakni a várakozást.

A harmadik probléma, hogy hol vagyunk éppen most. Mert félig elküldted a kérést, RESET, újraküldöd, teljesen felborul minden. Erre való az SS (save select) láb. Mellesleg az AVR hardvere semmit sem csinál, ha a láb magas.

I2C alatt mindez simán megy, van író és olvasó rész, a várakozást a hardver lekezeli. A probléma, hogy rövid távolságra való és nehéz erősíteni / optóval leválasztani a jelet, meg lassabb is, 4MHz-cel nem fogod nyomni.
A hozzászólás módosítva: Jan 14, 2014
(#) Koncsar hozzászólása Jan 14, 2014 /
 
Szisztok! STK500 al programozható az Attiny85? Egy darab kimenet kénne. A motoros sárkányrepülőm villanócsöves fényét kéne kiváltani, mert zavarja a reprádiót. A progi egyszerű 3 gyors villanás utána szünet, és így tovább. Egy Fetet hajtana meg, meg a mögötte lévő LEDeket. Alkalmas rá ez a kis 8 lábú Attiny?
A hozzászólás módosítva: Jan 14, 2014
(#) csabeszq válasza Koncsar hozzászólására (») Jan 15, 2014 /
 
Az Attiny85-öt ismerem, a 6-os szkábhüvelyes programozóval programozható (ISP-n), de STK500-am nincs.

Kicsit ágyúval verébre lövöldözés, mert az 500Ft-os attiny25 is képes LED-eket villogtatni, de megoldható. Szúnyogriasztót csináltam attiny25-tel. 8k sok rá, amikor kompletten 512 byte alatt fogsz maradni.

Ennél az IC-nél már a nyákra tüskesort sem rakok, amivel programozható. Breadboardon programozom fel, utána berakom a foglalatba.
A hozzászólás módosítva: Jan 15, 2014
(#) Koncsar válasza csabeszq hozzászólására (») Jan 15, 2014 /
 
Attiny25 höz nem is kell kvarc? Bootloader?
Bővebben: Link
ezt szeretném rápréselni.
(#) TavIR-AVR válasza Koncsar hozzászólására (») Jan 15, 2014 /
 
Igen. Simán viszi.
(#) csabeszq válasza Koncsar hozzászólására (») Jan 16, 2014 /
 
Így már érthetőbb. Attiny25-ön nem fogsz Arduinozni, ahhoz Attiny85 kell.

Küldtem egy fájlt, a makefile-ban a CC-t, OBJDUMP, OBJ2HEX-et írd át. Az Arduino könyvtárában van avr-gcc, ott megtalálsz mindent. Azzal fordíthatod le.

Windows alatt mondjuk C:\Arduino\hardware\tools\avr\bin\avr-gcc.exe

Fordítani a C:\Arduino\hardware\tools\avr\utils\bin\make.exe-vel tudsz.

Hát igen, Windows alatt talán egy kicsit szokatlan a make meg miegymás, de azért megy. Linux alatt egyszerűbb, mert minden kézreáll.

Az én fordítóm 160 byte-os hexet csinált. Ha Arduino alatt csinálod ugyanezt a 2k kevés lesz.
A hozzászólás módosítva: Jan 16, 2014

blink.zip
    
(#) Szabi1 hozzászólása Jan 16, 2014 /
 
Erról a kapcsolásról szeretnék érdeklődni, mégpedig, ha az adó részére rs232c PC port txd-jét kapcsolom akkor mekkora ellenállás kell a tranzisztor bázisára 1k helyett?
Másik dolog, hogy az adónak és a vevőnek milyen anterna szükséges? Gondoltam arra hogy valami lecsupaszított huzal, de nemtudom milyen hosszú kell legyen.
Bővebben: Link
(#) Bari- hozzászólása Jan 17, 2014 /
 
Sziasztok!

Avr chip felprogramozásában kérnék segítséget, az éjszakát már végig kínlódtam de nem jutottam eredményre.
Van több db attiny2313-as chip amiben bele kellene írnom a tartalmat (main.hex). Korábban egy STK200-as párhuzamos portos programozót használtam atmega8-as chipek felprogramozására linux alatt, az akkor ment is, de ezzel az attiny2313-al nem boldogulok. Kaptam most egy ebay-en vásárolt USBASP programozót, ilyen mint a linken, win7-re sikerült feltelepíteni, gond nélkül települt ezen az oldalon található driver-rel
Avrdude-al próbálnám használni az alábbi módon:
  1. avrdude -p attiny2313 -P USB -c usbasp -U flash:w:main.hex

A bekötést ezen rajz alapján végeztem. Az attiny2313 adatlapja szerint a VCC-t a 20-as a GND a 10-es lábra kötöttem, az SCK lábat a 19-esre, A MISO lábat a 18-ra és a MOSI lábat a 17-esre, a RST-t pedig az 1-es lábára kötöttem az attiny2313-nak egy dugdosós próbapanelt használva.
A parancs lefuttatása után ezt a hibaüzenetet kapom:

avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.


Kipróbáltam egy másik de linuxos gépen ott is ugyan ez a hibaüzenet, ott ezt a parancsot használtam:
  1. sudo avrdude -p attiny2313 -P /dev/usb0 -c usbasp -U flash:w:/home/bari/main.hex

Végső elkeseredésben előszedtem az STK200-at, és a lábkiosztásának ellenőrzése után (jó e hozzá az avrpasp-hez kapott szalagkábel) azzal is kipróbáltam az alábbi módon:
  1. sudo avrdude -p attiny2313 -c stk200 -P /dev/parport0 -U flash:w:/home/bari/main.hex

A hibaüzenet a következő volt:
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e910a
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/home/bari/main.hex"
avrdude: input file /home/bari/main.hex auto detected as Intel Hex
avrdude: writing flash (698 bytes):

Writing | ################################################## | 100% 0.30s

avrdude: 698 bytes of flash written
avrdude: verifying flash memory against /home/bari/main.hex:
avrdude: load data flash data from input file /home/bari/main.hex:
avrdude: input file /home/bari/main.hex auto detected as Intel Hex
avrdude: input file /home/bari/main.hex contains 698 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.20s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0x12 != 0x00
avrdude: verification error; content mismatch


Sajnos a w7-es gépen már nincs párhuzamos port, így ott csak az usb-s usbasp-vel tudtam kipróbálni. A bekötéseket többször is megnéztem, már teljesen tanácstalan vagyok, kérlek segítsetek mi lehet a gond. Ezzel az usb-s subasp programozóval ez lenne az első programozásom, így az is lehetséges, hogy valami baja van, de majd napközben megkérdezem akitől kaptam, hogy volt e már használva.
Már azt is próbáltam, hogy az attiny tápfeszültségét nem az usbasp adta hanem egy tápegységről kapott stabilizált 5V-ot a gnd-k közösítésével.

Előre is köszönöm a segítséget.
Üdv:Bari
(#) tecsa válasza Bari- hozzászólására (») Jan 17, 2014 /
 
Volt már korábban használva a kontroller? Nem zártad ki belőle magad Fuse bitek állításával?
(#) TavIR-AVR válasza Bari- hozzászólására (») Jan 17, 2014 /
 
100nF keramiakondi ott van a vcc/gnd közt?
A programozási sebességet vedd vissza.


Az usbasp egy kalap sz@r. Emulált (erőforrásigényes) USB es így nem marad időszelet a programozás lábainak állítgatására.
(#) TavIR-AVR válasza Szabi1 hozzászólására (») Jan 17, 2014 /
 
a PC rs232-je invertált jelet ad a avr tx/rxhez képest. Azaz pont ellentétesen megy.

Dróthossza: a rf hullámhossz 1/4-e
(#) Bari- válasza tecsa hozzászólására (») Jan 17, 2014 /
 
Szia

A kontrollerek elvileg mind újak, tudtommal még egyik sem volt használva.
(#) Bari- válasza TavIR-AVR hozzászólására (») Jan 17, 2014 /
 
Szia

A kondit sajnos elfelejtettem, éjjel sajnos nem forog már úgy az agyam mint kellene, este tudom leghamarabb kipróbálni ha melóból hazaértem.
A programozási sebességet hogy tudom visszább venni? Ez az avr-es programozósdi nekem még nagyon új, eddig amit kaptam az stk200-al sikerült felprogramozni, de ennyiben ki is merült az avr-es tapasztalatom.

Ezt az Usbasp-t kaptam a melóhoz, sajnos egy stk200-on kívül másom nincs amivel tudnék kísérletezni.

Köszönöm az eddigi segítséget, amint este sikerült kipróbálni a kondival jelentkezem a fejleményekről. Remélem a kondi hiánya lesz a ludas, a próbapanel és a kb 20cm-es szalagkábel az usb és az stk programozós próbálkozásokkor azonos volt.
Üdv:Bari
(#) TavIR-AVR válasza Bari- hozzászólására (») Jan 17, 2014 /
 
Az AVRDUDE paraméterezésnél megadható.
(#) Bari- válasza TavIR-AVR hozzászólására (») Jan 17, 2014 /
 
köszönöm az infót , este átnézem a paraméterezését, jelentkezek a fejleményekkel.
(#) Szabi1 válasza TavIR-AVR hozzászólására (») Jan 17, 2014 /
 
És a hullámhoszt úgy kapjuk meg hogy λ=1/frekvencia --- itt a frekvencia mhz ben?
Ha a Dróthossza: a rf hullámhossz 1/4-e akkor amit megkapok az méterben van?
Hogy a számítógép is éppségben maradjon átalakítottam az adó áramkörét, valaki lellenőrzi?
Amúgy a suliban még csak ez után fogunk tanulni az LC stb áramkörökről.

RFmod.jpg
    
(#) TavIR-AVR válasza Szabi1 hozzászólására (») Jan 17, 2014 /
 
Ha SI mértékrendszerben számolsz, igen.
Ha a soros sebességed max 2400 bps, csak akkor jó ez (esetleg 9600 bps (szűken)).
De mintha a opto dioda forditva lenne. És a RS232 nem tud 10mA-t manapság kiadni, jó ha 1 mA kijön És a fordított polaritás ellen mi védi az optokaput?

És abemenet sem lehet 0/5V-os...
Ott +/- 3...15V kell. Azaz egy MAX232 chip!


Ha még nem is játszottál RF-l, akkor ne is kezdj bele. Miért nem használsz _kész_ megoldást?
HopeRF adó/vevő darabja ~800 Ft.
Ebből 2 kell és _minden készen_ van...
Vagy a telcontrolli, vagy NRF rendszrek. Ezek max 1-2 eFt/oldal és készen vannak....
A hozzászólás módosítva: Jan 17, 2014
(#) killbill válasza Szabi1 hozzászólására (») Jan 18, 2014 /
 
Az 1/frekvencia az a periódusidő es nem a hullamhossz! A hullamhosszt ebbol az idobol es a fenysebessegbol tudod kiszamolni egy egyszeru szorzassal. s=v*t. Jelen esetben 'v' az a 'c', ami a fenysebesseg. Ez kb. 300.000 km/s. Tehat a hullamhossz = 1/f * c, vagy atrendezve c/f.
Lehet, hogy en ekezet nelkul irok, de en tudok ekezettel is. Viszont a mhz az mi? A mHz az millihertz. Amire te gondolsz, az a MHz. De mar megint nem AVR-rol beszelgetunk, hanem kezdo elektronikai es fizikai kerdesekrol
(#) Vacok hozzászólása Jan 18, 2014 /
 
Sziasztok!
Elég összetett problémám akadt, így nem is tudom biztosan ez-e a legmegfelelőbb topic.
Az elmúlt hetekben kezdtem el foglalkozni az AVR és PIC világával. Meg is építettem a tárcsás telefonomhoz EZT a kis konvertert. Mindenféle dokumentáció és az AVR-be égetendő program ITT található. A videón hallható, hogy a tárcsázás során a jól megszokott DTMF jelet lehet hallani. Az én esetemben sajnos nem ez a helyzet. A kijövő jel elég zajos és se a telefonközpont se a DTMF decoder program nem képes értelmezni.
Az AVR felprogramozása során akadtak problémáim, de végül is sikerült őket megoldani és a programot az AVR-be égetni, de a hang amit kiad még csak köszönőviszonyban sincsen a nyomógombok hangjaival.
Vajon én rontottam el valamit, vagy eleve ilyen lenne a program?
Az AVR-t WinAVR programmal égettem. Az oldalon található csomagban van egy main.c és egy main.h fájl. A main.c a program, de mire szükséges a main.h?
Valaki tudna nekem segíteni a probléma megoldásában?
A hozzászólás módosítva: Jan 18, 2014
(#) Zsolt2 válasza Vacok hozzászólására (») Jan 18, 2014 /
 
Orajel be van allitva FUSE bitekbol rendesen? Forditonak meg volt adva a helyes orajel ertek?
(#) Vacok válasza Vacok hozzászólására (») Jan 18, 2014 /
 
Lehet, hogy a kvarccal van a gond, mert észrevettem, hogy a fólia fel volt szakadva, viszont ha átkötöttem a szakadást se változott semmi. De hogy lehet az, hogy kvarc nélkül is fut a program?
(#) Vacok válasza Zsolt2 hozzászólására (») Jan 18, 2014 /
 
A helyzet az, hogy én nem állítottam semmit, csak amit EBBEN a cikkben láttam.
(#) Zsolt2 válasza Vacok hozzászólására (») Jan 18, 2014 /
 
Akkor valoszinuleg midkettovel gond lesz, en sajnos magara a WinAvr-t nem hasznaltam, csak AvrStudiot vagy linux alatt irtam, igy nem tudom hogy kell beirni a fuse biteket.
A kvarc frekveciaja egy F_CPU valtozo kell legyen a Makefile-ban, ezt 4000000-ra kell allitani.
A hozzászólás módosítva: Jan 18, 2014
(#) csabeszq válasza Vacok hozzászólására (») Jan 18, 2014 /
 
Megnéztem a videót, abban egy Attiny45, ide elvileg felesleges a kvarc, de ha már beraktad, akkor nem gáz.

  1. // Write CLKPCE 1 and other bits 0     
  2.         CLKPR = (1<<CLKPCE);   
  3.         // Write prescaler value with CLKPCE = 0
  4.         CLKPR = 0x00;


Ezzel indul a program. Ha van 4MHz kvarcod és a fuse biteket beállítottad, akkor ennyivel fog menni. Ha nem állítottad be a fuse biteket és belső oszcillátorról fut, akkor 8MHz-en futsz.

Szóval egy próbát megér, hogy CLRPR = 1-et írsz, amivel 4MHz-re rakod a belső oszcillátort, a kvarc meg dísznek jó lesz.

A fuse biteket elsőre nem javaslom átállítani.
A hozzászólás módosítva: Jan 18, 2014
(#) 3traubi hozzászólása Jan 18, 2014 /
 
Szervusztok!

Régi kedves számítógépemet, Commodore 64-et szeretném bővíteni egy SD2IEC kártyaolvasóval. Kis kutakodás után a neten találtam egy egészen egyszerű megoldást nem SMD alkatrészekkel.
Bővebben: wpqrek.blogspot.hu

A kapcsolás szíve egy ATMega644p kontroller, ebbe szeretnék egy előre megírt firmware-t (bootloader-t) feltölteni. A hex file megtalálható a következő linken. C64- Wiki SD2IEC

Valamint az oldalon megtalálható a program és a beprogramozó parancs is. (AVRDUDE és avrdude -p m644 -U flash:w:sd2iec_bootloader.hex:i -U hfuse:w:0xDA:m -U efuse:w:0xFD:m -U lfuse:w:0xE7:m)

Tehát, hogy elkészüljön egy AVR programozó készüléket kell építenem (vagy vásárolnom) - a vásárlást az egyszeri használat miatt inkább hanyagolnám. Találtam is egy párhuzamos AVR programozó-t – kivitelezése szerintem egyszerű, anyagára olcsó. AVR Parallel Programozó kapcsolása és leírása itt.

A programozó az AVRPP program segítségével tudja programozni a kontrollert – a program paraméterezés természetesen eltér az Avrdude programtól, így jelen tudásommal sajnos kínai nekem.

Mivel a kontroller nem olcsó és én teljesen amatőr vagyok a témában, nem szeretném az első írás alkalmával „kinyírni”, így szeretnék segítséget kérni a Guruktól.

Szerintetek a fent említett programozó áramkör és az AVRPP program segítségével fel tudnám-e programozni a kontrolleremet esetleg van valakinek tapasztalata? (Készítsd magad változat!)

A másik, valaki tudna-e segíteni és volna kedves számomra a kontrollerembe beírni a bootloader-t? Ezzel nagyot lendítene az SD2IEC projektemen - természetesen nem ingyen kívánom .

Az SD2IEC adapter saját célra szeretném használni, kereskedni nem kívánok vele!

Segítségeteket előre is köszönöm.
(#) Vacok válasza csabeszq hozzászólására (») Jan 18, 2014 /
 
Köszönöm a segítséget.
Sikerült a problémát megoldani. A Makefile módosítása nem vezetett eredményre, de amikor a programban átírtam, hogy CLKPR=1, akkor már rendesen működött. Még kész nyákja nincsen, így a kvarcot is ki tudom belőle spórolni.
(#) poznamokus hozzászólása Jan 18, 2014 /
 
Sziasztok! Tapasztalt AVR-esként (kb 5 éve nyomom) egy igazi misztériába futottam bele, amiről ötletem sincs, pedig már az avr freaks-et meg az egész netet is végigbújtam. Adott két saját fejlesztőpanel (egyik ajándékba lenne), közös mindkettőben, hogy ugyanolyan DIP-40es ATmegára épülnek (16 és 644). A 16-os 16MHz, a 644 20 MHz-es kristályról megy. PORTC 0/1 - I2C, 2-7 LCD kijelző 6 lábbal (E földre kötve, működő saját tesztelt LCD driverkóddal). Sajnos egyiken sem akar működni a port egyáltalán, egyik lába sem. A JTAG ki van kapcsolva, ezt bizonyítottam is, mivel van egy 3. ATmega32-es panelem, ami 8 MHz kristályról megy, ha oda áthelyezem a 16-ost vagy a 644-est, ott PORTC JTAG portjára 4 led van kötve, és minden jól működik, tudom be/kikapcsolni mindent. Fuse biteket kiolvasva szintén jó beállítást kapok. Viszont a saját panelokban valami nem jó. Annyi a különbség, hogy másfajta 10 uH-s (vagy annak eladott) induktivitás jelenti a kapcsolatot a táp és AVCC között. Valakinek valami ötlet? Rossz az induktivitás? Túl sok a 16 illetve 20 MHz-es kvarc? Már kezdek hülyét kapni
(#) killbill válasza poznamokus hozzászólására (») Jan 18, 2014 /
 
Otletem nincs, de ha az induktivitasra gyanakszol, akkor kosd at egy darab drottal probakeppen. Ha az a baja, akkor ettol a PORT problema meg kell szunjon.
(#) Koncsar hozzászólása Jan 19, 2014 /
 
Sziasztok! Tud valaki egy pár sort írni AVRduinómra? 20-25 KHz et kéne a FET kimeneten. Fénycsövet beszeretnék indítani. Köszi.
(#) TavIR-AVR válasza poznamokus hozzászólására (») Jan 19, 2014 /
 
A Vcc/VccA és a GND/GNDA is be van kötve?
Ha a chip belső 1MHz RCről jár, akkor mit csinál?
Következő: »»   584 / 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