Fórum témák
» Több friss téma |
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
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. 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 Idézet: 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. „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”
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)
Sziasztok!
Azt szeretném kérdezni, hogy programozáskor az eeprom-ban tárolt adat is törlődik?
Ha nincs EESAVE fuse bit bekapcsolva, akkor igen.
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.
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. 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.
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
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
Köszi, én az ATMEL oldaláról töltöttem le az adatlapot, és nem SCK hanem SCL szerepel benne.
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.
Én a HEStore-osat néztem és abban sincs benne az SCK.
Hopp, és tényleg... Milyen adatlap ez?
Visszaszívtam, bocsi... Igazad van.
abban az adatlapban amit én néztem, is ugyan ez a lábkiosztás szerepel, csak SCK helyet SCL van.
SCL = Serial Clock
SCK = Serial Clock
Semmi gond.
Aztán megnéztem én is, összehasonlítottam azzal, amit egy éve mentettem le az Atmel honlapjáról és teljesen megegyezik.
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
Mitől lehet az, hogy nem tudok megfelelően osztani?
pl.: (400/1024)*1000 =0 double i=1024/3 =341.000
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.
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ó.
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.
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
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
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
Köszi megoldódott!
Annyit sz@rakodtam, hogy rossz helyre írtam ezt a sort : -Wl,-u,vfprintf
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 |
Bejelentkezés
Hirdetés |