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   245 / 840
(#) Proci_85 válasza novarobot hozzászólására (») Jún 30, 2010 /
 
A kandós wiki oldalon bemutatott nanoboardot használom, amiben bootloader van. Így soros portról egy terminálon keresztül rátölthető a hex fájl. A Kandó jegyzetboltjában érdeklődj a nanoboard felől.
Valahol nekem is megvan a bootloader, bár sosem próbáltam még szűz atmellel. Ha lesz időm megnézem és átküldöm. Ha 1x betolod az atmega88-ba, onnantól kezdve a progizáshoz elég egy terminál+soros port. Arra kell csak figyelni, hogy ne töltsd meg ~8kbyte-os programmal, mert az képes felülírni a flash végén lévő bootloadert. Persze ekkor sincs gond, ismét bele kell gyógyítani.

Linuxra grafikus égető:
apt-get install avr8-burn-o-mat
Amúgy konzolosra ott van az avrdude. Az említett is azt használja a háttérben.
(#) Fizikus válasza novarobot hozzászólására (») Júl 1, 2010 /
 
Idézet:
„4. Tud valaki valamilyen gyermeteg egyszerű RS232-es égetőt, melyet esetleg az AVR-STÚDIÓ is támogat (nem fontos, elsősorban Ubuntu alatt lesz használva), és még USb-RS232 es átalakítóval is működik?”


Ez USB-s, mukodik Windows XP, Windows Vista, Windows 7 es Linux alatt is. Az AVR Studio-val es az AVRDUDE-al is tudod hasznalni (AVRISPV2/STK500 kompatibilis) Csak 5V-os AVR-t tamogat.
Plussz van rajta egy USB-TTL soros port atalakito es egy egyszeru, 2 csatornas szoftveres oszcilloszkop is.
Bővebben: Link

Idézet:
„Égetőnek, arra gondoltam hogy nem lehetne valahogy valamilyen "firmware" előre beégetni az AVR-be, és onnan a USART-on keresztül RS232-őn programozni?”


ATmega8 bootloader tutorial:
bootloader
(#) (Felhasználó 4577) válasza Fizikus hozzászólására (») Júl 1, 2010 /
 
Idézet:
„Ez USB-s, mukodik Windows XP, Windows Vista, Windows 7 es Linux alatt is. Az AVR Studio-val es az AVRDUDE-al is tudod hasznalni (AVRISPV2/STK500 kompatibilis) Csak 5V-os AVR-t tamogat. Plussz van rajta egy USB-TTL soros port atalakito es egy egyszeru, 2 csatornas szoftveres oszcilloszkop is. Bővebben: Link”
Ez az égető egész jó és annyira nem is drága. Kezdőknek sokkal jobban megéri, mint egy gyári égető, ami ennek a háromszorosa.
(#) Fizikus válasza (Felhasználó 4577) hozzászólására (») Júl 1, 2010 /
 
Nem draga, foleg ha azt is hozzavesszuk hogy csak egy USB-TTL atalakito kerul kb 10-15 dollarba (na jo, Ebay-en csak 8 dollar). Ez meg AVR programozo is egyben kb 20 dollarert. (a mostani arak mellett egy ATmega8-asra epulo USB-s egeto epitese sem sokkal olcsobb)
(#) Axel hozzászólása Júl 1, 2010 /
 
Sziasztok!

Azt szeretném kérdezni, hogy programozáskor az eeprom-ban tárolt adat is törlődik?
(#) Topi válasza Axel hozzászólására (») Júl 1, 2010 /
 
Ha nincs EESAVE fuse bit bekapcsolva, akkor igen.
(#) Axel válasza Topi hozzászólására (») Júl 1, 2010 /
 
Köszönöm!
(#) trudnai válasza Fizikus hozzászólására (») Júl 1, 2010 /
 
Idézet:
„(a 110 bps azt jelenti hogy masodpercenkent 110 bitet akarsz elkuldeni).”


Ill. csak a pontossag kedveert: A baud az 1 masodperc alatt tovabbitott jelek szamat jelenti, mig a bit-rate az ami megmondja, hogy ebbol a jelhalmazbol hany hasznos jel kerul atvitelre (amiket ugye bitek formajaban ertelmezunk).

Pl. asynchron soros kommunikacio eseten hasznalhatunk 7 vagy 8 adat bitet, 0 vagy 1 paritas bitet, 1, 1.5 vagy 2 stop bitet, es termeszetesen 1 start bitet (bitet..., sajnos igy rogzodott meg mivel sokaig tevesen hasznaltak a kifejezest, valojaban start jel es stop jel lenne a helyes!)

Ez azt jelenti, hogy pl '8N1' eseteben nincs paritasunk, 8 adat bitunk van es 1 stop bitunk. Magyaran 2 bit teher rakodik ra az adat bitekre. Tehat 2400 8N1 eseteben 2400/(8+2) = 240 byte viheto at egy masodperc alatt. Ugyanigy egy 2400 7E1 is csak 240 byte-ot visz at, annak ellenere, hogy csak 7 adat bittel, de plusz 1 paritas bittel rendelkezik, tehat 2400/(7+3) = 240. Azonban ha 2400 8E1 az atvitel akkor mar csak 218 karaktert vagyunk kepesek tovabbitani szekundumonkent...

Csak amiatt irtam le ha valaki olyan alkalmazast ir ahol az atviteli sebesseg szamit, akkor ezeket is vegye figyelembe.
(#) novarobot hozzászólása Júl 1, 2010 /
 
Csak ideértem !
Köszönöm a tanácsokat.

Linuxon még nem foglalkoztam AVR-el, hisz a Linuxos gépen nincs csak USB.

A programozók amit ajánlatotok, USB-sek, és én mindenképpen RS232-eset szeretnék építeni, mert:

-Van itthon (mától) egy USB-RS232 átalakítóm (Linuxos driver van hozzá)
-Nincs itthon USB átalakító IC, és nem szeretnék SMD-t forrasztani csak ha nagyon muszáj.
-Vannak olyan gépeim melyeken még nincsen USB, bár ritkán használom, de azért ki nem fogom dobni.

Láttam itt a HE-n egy AVR égetőt, Bővebben: Link
mely ugyan USB-s, de szemre jól elkülönül az USB rész a programozótól, és a kettő csak az RXD és TXD köti össze.

Ha én megépíteném ezt a programozót, de az RXD TXD vezetékre a MAX232-es IC-t tenném az úgy működne?

Novarobot.
(#) (Felhasználó 4577) válasza novarobot hozzászólására (») Júl 1, 2010 /
 
Idézet:
„Ha én megépíteném ezt a programozót, de az RXD TXD vezetékre a MAX232-es IC-t tenném az úgy működne?”

Igen.
(#) novarobot válasza (Felhasználó 4577) hozzászólására (») Júl 1, 2010 /
 
Ez remek

Holnap meg is építem.

Elvileg minden van itthon.

Holnap kicsit jobban átnézem, talán nem kell bele az a FET, meg egy két LED- et is ki lehet biztosan hagyni (nem azért mert nincs, csak egyszerűsítek.)...

Szeretnék valami nagyon egyszerű kis programozót készíteni belőle, AVR gyakorlatnak jó lesz .

Novarobot
(#) novarobot válasza novarobot hozzászólására (») Júl 2, 2010 /
 
Valaki tudja melyek a programozólábak az attiny2313-as AVR-en?

Bújom az adatlapot (angol tudás nélkül) és nem találom az SCK lábat (a többi megvan ).

Az adatlapon látok egy SCL nevezetű lábat, az lenne az (19, es)?

Novarobot
(#) IMi válasza novarobot hozzászólására (») Júl 2, 2010 /
 
Szia!
Adatlap:
(#) novarobot válasza IMi hozzászólására (») Júl 2, 2010 /
 
Köszi, én az ATMEL oldaláról töltöttem le az adatlapot, és nem SCK hanem SCL szerepel benne.
(#) Topi válasza novarobot hozzászólására (») Júl 2, 2010 /
 
Ez a kép is onnan van, csak nyisd ki a szemed.
Az SCL egyébként az I2C clock vonala, nem az kell neked.
(#) (Felhasználó 4577) válasza Topi hozzászólására (») Júl 2, 2010 /
 
Én a HEStore-osat néztem és abban sincs benne az SCK.
(#) Topi válasza (Felhasználó 4577) hozzászólására (») Júl 2, 2010 /
 
Hopp, és tényleg... Milyen adatlap ez?
Visszaszívtam, bocsi... Igazad van.
(#) novarobot válasza (Felhasználó 4577) hozzászólására (») Júl 2, 2010 /
 
abban az adatlapban amit én néztem, is ugyan ez a lábkiosztás szerepel, csak SCK helyet SCL van.
(#) Norberto válasza novarobot hozzászólására (») Júl 2, 2010 /
 
SCL = Serial Clock

SCK = Serial Clock

(#) (Felhasználó 4577) válasza Topi hozzászólására (») Júl 2, 2010 /
 
Semmi gond.
Aztán megnéztem én is, összehasonlítottam azzal, amit egy éve mentettem le az Atmel honlapjáról és teljesen megegyezik.
(#) novarobot válasza Norberto hozzászólására (») Júl 2, 2010 /
 
Egy ilyen kis apróság engem mint kezdőt elégé megtévesztett .

Köszönöm mindenki segítségét, sikerült felprogramoznom.
(Bár még nem úgy működik ahogy akartam, de most nem a bekötéssel van a baj. )

Novarobot
(#) szoto hozzászólása Júl 3, 2010 /
 
Mitől lehet az, hogy nem tudok megfelelően osztani?
pl.:
(400/1024)*1000 =0
double i=1024/3 =341.000
(#) Ideiglenes válasza szoto hozzászólására (») Júl 3, 2010 /
 
Az egész számok halmazán bizony így van ez.

400 / 1024 = 0 maradék 400, a nullát meg akármivel szorozhatod, nulla lesz az eredmény.
1024 / 3 = 341 a maradék meg 1

Ha nem akarod bonyolítani az életed, akkor használj lebegőpontos számokat. De ennek is megvan a hátulütője. Több processzoridő, nagyobb memóriaigény.
(#) szoto válasza Ideiglenes hozzászólására (») Júl 3, 2010 /
 
De lebegőpontos számokat használok, double, float.
A Projectben beállítottam a libm.a-t és a libprintf_flt.a-t is +a -Wl,-u,vfprintf-t ,de nem jó.
(#) szoto hozzászólása Júl 3, 2010 /
 
Most komolyan, ez mennyi, ha az i=500?:

x=((5*10000)/((i*5)/1024))-10000;


Az X az volt uint16_t,uint32_t, long, long long, az eredmény -17768!??

Nem jövök rá,hogy mit szúrok el.
(#) novarobot hozzászólása Júl 3, 2010 /
 
Sziasztok!

Idáig én egy LPT portos programozót használtam, (Bővebben: Link) mely lényegében csak a 4 programozó vezetéket tartalmazta (SCK, MOSI, MISO, RESET)

Elkezdtem építeni a saját RS232-es AVR égetőt az oldalon talált kapcsolás alapján (Bővebben: Link), de elakadtam.

Gondoltam hogy egyszerűen lebutítom az égetőt:
-Az FT232RL csip helyet közvetlenül a MAX232-es re kötöm az égetőt.
-Kihagyom a FET-et, meg a tápellátásért felelős részt
-Kihagyom a LED-eket és a kapcsolót is.
-Megpróbálok áttérni a belső RC-re (vagy legalább egy 7.3728MHz-es kristályra, mert ez van itthon).
-Csökkentem a BAUDRATE-t 2400-ra.
-Majd egyszerűen átírom a firmware-ben ezt a pár apróságot...

Ezek után maradt volna 3DB vezeték (+RESET), és kész egy egyszerű RS232-es égető. (meg lehetőség a későbbi esetleges fejlesztésre ha kell még bele valami extra...)

Letöltöttem az eredeti égetőben dolgozó firmware forráskódját, és itt ért a meglepetés, mert nem c-ben hanem assembly-ben íródott, és bár két napja nézegetem, de semmit nem értettem meg belőle.

Tud valaki segíteni a firmware átírásában/megírásában?

Esetleg nincs valakinek valami hasonló firmware-e C-ben? (abból talán még én is értenék valamit)

Sajnos nem igazán értem hogy pontosan mit/hogy csinál a rajtalévő firmware, így kezdőként nem tudok csak a "semmiből" írni egyet C-ben.)

(Csatoltam ez eredeti és a módosított kapcsolási rajzot, jó lenne a RESET lábat is kezelné az égető, de ez már csak extra)

Novarobot
(#) p_istvan válasza szoto hozzászólására (») Júl 3, 2010 /
 
Szervusz!
Ha ez C, akkor nem az X fogja a műveletek adattípusát meghatározni, de ez korrekten le van írva minden C referencia könyvben. Nézz meg egyet rendesen!
Ha lebegőpontos végeredményt akarsz, akkor legalább az egyik operandus is lebegőpontos legyen.
pl.: X = ( 400,0 / 1024 ) * 1000
(#) Proci_85 válasza novarobot hozzászólására (») Júl 3, 2010 /
 
Javaslom ne akard átírni a firmware-t. Assembly kódot még annak is nehéz olvasnia aki egy éve írta, nem még annak aki sosem látott olyat.

2 éve én is írtam még benne kódokat, ma már csak a fejlécből tudom, hogy mit csinál

Lévén, hogy kezdőnek is vallod magad, úgy érzem nagy falat lenne így hirtelen (nem csak neked, másnak is).

Úgyhogy maradj a realitások talaján és ha egy égetőre van szükséged, építsd csak meg nyugodtan a cikkben lévőt 1:1-ben, nem olyan rossz az
(#) szoto válasza p_istvan hozzászólására (») Júl 3, 2010 /
 
Köszi megoldódott!

Annyit sz@rakodtam, hogy rossz helyre írtam ezt a sort :
-Wl,-u,vfprintf
(#) piogabona hozzászólása Júl 4, 2010 /
 
Haleee...
T6963C controlleres kijelző adott! Lib letöltve.... Innen
AVR studio + WINAVR felpakolva. fordításnál egyetlen hiba jelentkezik... "no rule to make target '/graphic.c elérési útja' needed by graphic.o
ha esetleg tudja valaki mit lehet ilyenkor tenni, kérem legyen olyan jó és segítsen
Következő: »»   245 / 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