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   587 / 840
(#) Szabi1 válasza szdani hozzászólására (») Jan 27, 2014 /
 
Köszönöm szépen, én értem amit a kódba írtál de az AVR nem képes felfogni....
Az üdvözlő üzenetet nem írja ki, és ha küldök egy betűt akkor valami ciril betűt ír (pontosan C betű alatt egy vessző) ki loop foreverbe míg le nem veszem a küldő krokodil csatít.
Megjegyzem sima tranzisztoros átalakítót használok nem IC-t. Arra gondoltam, hogyha úgyis összezavarodik, mi volna ha a betűk küldése helyett csak a biteket állítanám?
Vagyis 5 parancsot kell megkülönböztessen, és egy 8 bites adatcsomagba csak egy bit értéke 1 a többi 0.
Lehet hardware hiba is, mert a krokodil csatik nembiztos hogy garantálják a megfelelő kontaktot, de majd holnap megvizsgálom jobban.
A hozzászólás módosítva: Jan 27, 2014

ap275.gif
    
(#) szdani válasza Szabi1 hozzászólására (») Jan 27, 2014 /
 
Az ASCII kód azért jobb mert kisebb a hibalehetőség, azért nem jó biteket átküldeni. Akkor szokott mindenféle más karakter megjelenni ha rossz a baudrate sebessége, vagy hardveres hiba van lehet hogy a tranyós megoldás nem megfelelő hozzá, lehet hogy lassan billennek át ahhoz hogy az jelenjen meg aminek kell. Nekem egy ATtiny45-ből van az USB-Soros konverter, mert a laptopomon nincs soros port, viszont így nem kell illeszteni. 5V-nak kell lenni a TX lábon amikor nem küldesz, és az RX lábon is amikor nem fogadsz, különben akkor se lesz értelmezhető az adat. De van amikor a Pc oldalon amit használsz programot nem működik megfelelően, ha adsz egy e-mail címet akkor küldök egy progit ami biztosan működik és oda vissza tud kommunikálni soros porton.
(#) zombee válasza szdani hozzászólására (») Jan 28, 2014 /
 
Egy barátom nemrég a MAX232 RS-232 oldalára kötött egy USB-TTL átalakítót. Mondanom se kell,
csak krix-kraxokat nyomott neki. Lehet hogy itt is valami bagatell összekötési hiba lehet,
a táp bezavar, vagy nincs a föld összekötve, stb.
(#) kiborg válasza Szabi1 hozzászólására (») Jan 28, 2014 /
 
Szia!
Kipróbáltad, hogy a TX-RX-et összekötöd és úgy kommunikálsz a terminálon keresztül? Amit küldesz vissza kell, hogy kapd változatlan formában. Ha nem így van, akkor a konverterben van a hiba.
Üdv Kiborg
(#) killbill válasza kiborg hozzászólására (») Jan 28, 2014 /
 
Ez a konverter eleve nem er semmit, mert amugy is visszajut a PC-be minden, amit kuld. A PC Tx jelet hasznalja -12V-nak (-5V-nak manasag..) az Rx meghajtasahoz. Amikor a PC ad, akkor a sajat Rx pontjan visszakap mindent. Ha valamelyik modemvezerlo jelet hasznalna a Tx helyett minusz tapnak, akkor talan jo lenne. De azert talan, mert arra sincs garancia, hogy az adott modemvezerlo jel -12V-n lesz, es nem pluszon.
(#) Szabi1 válasza kiborg hozzászólására (») Jan 28, 2014 /
 
PC felől igen csináltam loopback tesztet, működik rendesen. Amúgy azt akarom, hogy végül rf áramkörön keresztül történjen a kommunikáció, még nem építettem meg őket, elég lesz csak PC txd- TTl rxd vonalat vezetni?
A hozzászólás módosítva: Jan 28, 2014
(#) szdani válasza zombee hozzászólására (») Jan 28, 2014 /
 
Egy PPM jelet sikerült létrehozni, de amikor többet hozok létre akkor a jelek között eltelt idő növekszik. Mit nem vehettek figyelembe?
(#) zombee válasza szdani hozzászólására (») Jan 28, 2014 /
 
Idézet:
„Mit nem vehettek figyelembe?”

Ezt bővebben kifejtenéd? Nem értem.
(#) szdani válasza zombee hozzászólására (») Jan 28, 2014 /
 
1 jel maximum 2ms az jól össze is jött, de 2 jel között 0,3ms-nak kell eltelnie. Nálam Ezt úgy csinálja hogy az 1. jel után megvan a 0.3ms, de a második jel után már 0.6ms a várakozási idő, és ez minden jel után növekszik +0,3ms-al.
(#) zombee válasza szdani hozzászólására (») Jan 28, 2014 /
 
Miért kell növekednie? Akkor hogy fogja érzékelni a többi csatornát?

Van a dolognak egy sokkal egyszerűbb változata. Pl. kiadsz egy start impulzust X ideig,
utána csend ugyanannyi ideig, majd még egy start impulzust kiadsz, így a vevő tud szinkronizálni.
A második start után újra vársz, majd a következő X időben kiadsz egy impulzust ha az
1. csatorna "1", ill. nem adsz ki semmit ha "0". Utána ugyanez a többi csatornával.
Az adó viszonylag egyszerű lesz, a vevőnél viszont a szinkronizációt kell megoldani időméréssel.
(#) vandorr hozzászólása Jan 29, 2014 /
 
Sziaisztok,

2 attiny között szeretnék infra kapcsolattal kommunikálni.
Az adó oldalon van 4 gomb. A vevő oldalon a program futása során meg szeretném különböztetni, hogy melyik gombot nyomta le, és aszerint függvényhívást végezni.

Úgy gondolom az adó oldal az egyszerűbb, ennek az oldalnak a leírását felhasználva:
http://eliaselectronics.com/how-to-infrared-ir-transmitter-receiver

Viszont a vevő oldallal gondban vagyok.
Tudom hogy kell egy egyszerű IR vevő (pl TSOP31238 (hestore)),
viszont arra nem találtam érthető választ, hogy programozási szinten hogy kezelem a beérkező jeleket, és hogy szükség van-e valamire a jelek átalakításához.

Topi féle AVR-Dopert és AVR Studiot használok.
Köszönöm a segítséget
(#) szdani válasza zombee hozzászólására (») Jan 29, 2014 /
 
Bocs néha egy kicsit furán fogalmazok, úgy gondoltam hogy nem kell növekednie, de még is növekszik.
(#) Szabi1 hozzászólása Jan 30, 2014 /
 
V-USB-t akarok használni Attiny 2313-al, ha kötelező a kvarc akkor 16Mhz-est használhatok 12 Mhz helyett? Akkor mit kell módosítani a kódban, csak a makefile-t?

firmware.zip
    
(#) Szabi1 válasza Szabi1 hozzászólására (») Jan 30, 2014 /
 
Próbáltam újrafordítani a neten lévő kódot, mert módosítanom kellett benne, de sajnos nem engedi leforditani teljesen, mert hibát ír ki, valaki tudna segíteni?

Amúgy nemtudom miért de a WinAVR egy rakás hibát írt ki, a sok komment miatt, a ; nem látta komment jelnek csak a c ben használt // jelet.

Végül csak egy kevés hibával maradtam, de nemtudom helyrehozni, mivel assemblybe van írva és nem értem:
A hiba:
  1. In file included from usbdrv/usbdrvasm.asm:18,
  2.                  from main.c:20:
  3. usbdrv/usbdrvasm.S:66: error: expected identifier or '(' before '.' token
  4. usbdrv/usbdrvasm.S:68: error: stray '@' in program
  5. In file included from usbdrv/usbdrvasm.asm:18,
  6.                  from main.c:20:
  7. usbdrv/usbdrvasm.S:74:5: error: operator '*' has no left operand
  8. make.exe: *** [main.o] Error 1

usbdrvasm.S
    
(#) Szabi1 válasza Szabi1 hozzászólására (») Jan 30, 2014 /
 
Elnézést, a makefile volt rosz.
Nem tudom mit kell benne átírni, hogy STK 200 as programozó legyen, lpt 1 en, attiny 2313, 16 Mhz.
Meg további hibákat találtam benne, jó volna ha valaki elküldené a hex file-t.
(#) tecsa hozzászólása Jan 31, 2014 /
 
Sziasztok!

Szoftveres PWM előállításához szeretnék segítséget kérni. Hogyan szokás ezt csinálni? Azt tudom, hogy az erőforrást nagyon felemészti, de más dolga gyakorlatilag nem is lenne.

Köszi: Tecsa
(#) gazi hozzászólása Jan 31, 2014 /
 
Sziasztok!

Egy ring (kick-box) időzítőt szerettem volna építeni a fiamnak ami 1,30 ~ 3 percig mér hangjelzést ad, otthoni gyakorláshoz. Közben a fórumban turkálva sokan írtak a mikrokontrollerekről, ezért a HESTOR-tól rendeltem egy AVR-es kit-et, mivel ez tökéletes lett volna:
http://www.hestore.hu/prod_10031815.html
A csomag megérkezte után ahogy kell összeépítettem, előtte amit lehetett azért a biztonság kedvéért kimértem (korábban mát egyszer megszívattam magam így). Az áramkör kér, éleszt, semmi...a volt Trabantom jutott eszembe az is ilyeneket csinált. A probléma ott kezdődik, hogy minden forrasztást már többször is ávizsgáltam, teszteltem a kijelzőt is de semmi. A start megnyomására feszültség változás áll be de az áramkör nem indul. Sajnos AVR-el semmi tapasztalatom sincs, már csak arra tudok gondolni, hogy eleve hibás. Tudna valaki tanácsolni valamit, hogy mit kell ezeknél mérni amiből lehetne következtetni az AVR hibájára? Az AVR egy ATMEGA48PA-PU típus.
Előre is köszi!
(#) HöTö válasza gazi hozzászólására (») Jan 31, 2014 /
 
Helló!
Nem ejtetted el esetleg a kvarc kristályt, mert ezek ütésre érzékenyek és megváltozhat a frekvenciájuk vagy teljesen tönkre is mehetnek, órajel nélkül pedig nem megy az AVR. A hiba oka lehet még, hogy hozzáértél az AVR lábaihoz és a sztatikus töltés tönkretette azt, ez a hiba viszont csak úgy deríthető ki ha rákötsz egy ISP-s programozót ha az nem tudja felvenni vele a kapcsolatot akkor valószínűleg ez a hiba, esetleg lehet hogy mégsem felprogramozva érkezett az AVR ez is csak egy kiolvasással vizsgálható.

Egyenlőre csak ennyi jutott eszembe.
(#) gazi válasza HöTö hozzászólására (») Jan 31, 2014 /
 
Szia!
Nem ejtettem le, igaz a doboz amibe csomagolva volt nyomott volt, holnap veszek egy kvarcot, az ISP már rázósabb ügy, hirtelen nem is tudom van-e valaki a közelemben aki rendelkezik ilyennel.
Nagyon köszönöm az ötleted, próbálkozom!
(#) Topi válasza gazi hozzászólására (») Jan 31, 2014 / 1
 
Ha nem sikerül záros határidőn belül megoldani a kérdést, és nem rosszul forrasztásról van szó, akkor mindenképp keresd fel az ügyfélszolgálatot. Ezen kitek is vannak raktáron mindig, azonnal megoldható a csere ha szükséges.

Szerk: Vagy beviszed, és bevizsgálják. Programozatlan AVR-es KIT-ek nem igen kerülhetnek ki, gyanúsabb nekem is a kristály gond, hogy esetleg megnyomorgattad forrasztáskor vagy hasonló, mert maga az áramkör egy öntartó táprésszel van ellátva a nagyon hosszú elem élettartam miatt, tehát ha a proci nem fut, bekapcsolni sem tud, illetve csak addig amíg nyomod a gombot.
A hozzászólás módosítva: Jan 31, 2014
(#) gazi válasza Topi hozzászólására (») Feb 1, 2014 /
 
Topi, köszi. Sajnos a városban sehol sem találtam kristályt, így rendelni kellett (jövő hét pénteken jön meg ....vicc). Ha nem jön össze akkor ügyfélszolgálat
(#) poznamokus hozzászólása Feb 1, 2014 /
 
Sziasztok!
DS1307-et próbálok összeismertetni az ATmega644-esemmel, és ha olvasni próbálok belőle, megáll a kódom. Írni tudom, az I2C státuszok megvannak. Nem az I2C driveremmel van a gond, mivel ugyanezen panelen (meg másikon is) DS1621-el tökéletesen működik a kommunikáció, hőmérsékletet megkapom, ha akarom, akkor az egész értéket, ha akarom, akkor a fél fokot is. Mivel elsőre nem sikerült semmilyen regisztert kiolvasni, megpróbáltam az NVRAM-ját olvasni (0x09-es bájtot, amibe korábban írtam). Ez sem működik. Berakom a kódot, alul van a debugos verzió, amiben a státusz flageket írtam be a visszatérési értékbe, és mindenre megfelelő státusz állt be. Hw hiba? Van mellé kötve 32k768-as kristály, 3V-os elem és 100 nF-os kondi is. A config regisztert és az idő regisztereket is beállítottam már egyszer, természetesen az oszcillátort elindító bitbe is beírtam a kötelező 0-t. Már jópár netes megoldást is megnéztem, de szintén nem működik.

  1. uint8 DS1307_ROM_ReadB (uint8 address)
  2. {
  3.         uint8 retval;
  4.         I2CStart();
  5.         I2CWrite(DS1307ADDR_W);
  6.         I2CWrite(address);
  7.         I2CStart();
  8.         I2CWrite(DS1307ADDR_R);
  9.         I2CRead(0);
  10.         I2CStop();
  11.         return retval;
  12. }
  13.  
  14. uint8 DS1307_ROM_ReadB_Debug (uint8 address)
  15. {
  16.         uint8 retval;
  17.         retval = I2CStart();
  18.         retval |= (I2CWrite(DS1307ADDR_W) << 1);
  19.         retval |= (I2CWrite(address) << 2);
  20.         retval |= (I2CStart() << 3);
  21.         retval |= (I2CWrite(DS1307ADDR_R) << 4);
  22.         //retval = I2CRead(0);
  23.         I2CStop();
  24.         return retval;
  25. }


Kiegészítésként az I2CRead() függvényem. Ha ezt ledekkel debuggolom, akkor kijön, hogy a ennek a while ciklusában akad el, vagyis nem érkezik be az adat (nem áll be a TWINT flag).

  1. uint8 I2CRead ( uint8 ack )
  2. {
  3.         uint8 retval;
  4.         if (ack)
  5.         {
  6.                 TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA);
  7.         }
  8.         else
  9.         {
  10.                 TWCR = (1<<TWINT) | (1<<TWEN);
  11.         }
  12.         while (!(TWCR & (1 << TWINT)))
  13.         {
  14.                 ;
  15.         }
  16.         retval = TWDR;
  17.         return (retval);
  18. }
A hozzászólás módosítva: Feb 1, 2014
(#) kokimy hozzászólása Feb 2, 2014 /
 
Érdekelnének az AVR-es dolgok, mert hezitáltam a PIC és az AVR között, de erre tenném a voksit.
Kérdésem lenne:
Az Arduino és az AVR programozása ugyanaz, ugye? Az Arduino tanulni jó, illetve programokat leszimulálni, jók az értesüléseim?
Arduinoval nem lehet AVR-t programozni? Vagy ahhoz külön ISP programozó kell?
(#) csabeszq válasza kokimy hozzászólására (») Feb 2, 2014 /
 
Az Arduino jó választás lehet, ha nem a kínai félárú ócsított változatot veszed meg belőle.

Elvileg lehet AVR-t programozni Arduinoval, bár még sosem próbáltam. Az ISP programozó nekem inkább kézreáll.

A PIC és az AVR nem egyértelmű dolog. Én az AVR-t jobban kedvelem, de
- a PIC programozása (assembly, MPLIB, memóriatérkép), meglehetősen borzalmas
- PIC-kel tudsz egy sima breadboard-on USB-zni, szemben az AVR-rel, ahol nincs DIP-es USB chip (az Arduino tartalmaz SMD-s USB sorosportot)
- a Microchip nagyon jó perfifériákat gyárt (műveleti erősítő, ADC, ...) és nem is drága
- Én AVR-t használok mikrovezérlőnek, de a perfifériák már a Microchiptől (PIC) vannak

Értelmes szimulációra kizárólag AVR Studio alatt voltam képes, ami nem Arduino. Nincs arról tudomásom, hogy egyszerűen lehet-e Arduino-s projektet AVR Studio alatt fordítani és szimulálni.
(#) zombee válasza kokimy hozzászólására (») Feb 2, 2014 /
 
Az Arduino az -sajnos- nem AVR, hanem egy programozási platform. Ha AVR-t szeretnél programozni,
ahhoz egyrészt szükséged lesz legalább egy AVR IC-re(kezdésnek egy ATMega16 jó lehet),
egy programozóra vagy programozó klónra(stk500, avrisp-mkii, jtag ice), na meg a körítésre.
Tápegység, breadboard, vezetékek, ellenállások, LED-ek, nyomógombok, stb.
A hozzászólás módosítva: Feb 2, 2014
(#) kokimy válasza zombee hozzászólására (») Feb 2, 2014 /
 
Úgy gondoltam, hogy veszek egy arduinot, ott kipróbálom az AVR programozási okosságokat, és így már tudhatok AVR-t programozni, vagyis legalább lesz valami fogalmam, hogy mi hogyan. Azaz az egy tanuló board lenne, nem élesben lenne tesztelve az AVR programozási tudásom. Mert ott ugye az alapokat (nyomógombok kezelése, kimenetek kezelése, kijelzők kezelése) megtanulható.
Persze AVRhez majd valami AVR programozót veszek, ISP-s kell ha jól sejtem.
(#) zombee válasza kokimy hozzászólására (») Feb 2, 2014 /
 
Arduino-n nem sok olyan dolgot találsz ami AVR programozáshoz hasznos lehet, ennyi erővel
egy demo board - szerintem - jobb vételnek tűnik. Pl. T-Bird2 vagy valami hasonló.
(#) kokimy válasza zombee hozzászólására (») Feb 2, 2014 /
 
Akkor mire jó az arduino?
Én azt hittem, hogy ott az alap AVR programozást el lehet sajátítani, mivel AVR platform (azaz AVR-t használ).
(#) zombee válasza kokimy hozzászólására (») Feb 2, 2014 /
 
Modellépítők, programozni alig tudók/alig akarók részére. Kényelmes amikor rádugsz egy gyári
vagy klónozott kiegészítőt, és nem kell külön programozó hardver. Nem kell drótozni, meg a
kiegészítőkhöz saját library is van, nem kell azon filózni hogy mi melyik porton van.
Sajnos ezután elfogynak az előnyök. Amikor valami saját egyedi cuccot szeretnél rádugni,
már játszanod kell a portokkal, és semmivel nem leszel előrébb, mintha egy mezei AVR
IC-re dugnád rá. Ezért van az hogy Arduino-t eddig csak kísérleti cuccokban láttam visszaköszönni.
A hozzászólás módosítva: Feb 2, 2014
(#) Barbár hozzászólása Feb 2, 2014 /
 
Sziasztok!

Évek után újra elővettem a régi HEStore-ból származó AVR programozómat, de sajnos órák ótra játszom a driverekkel és sehogy se akar működni.

Az eredeti leírásban ami alapján régebben összehoztama dolgokat )(AVR Doper) nem segít sokat, most Atmel Studio 6-tal próbálkozom (de a cikkben írt AVR Studio 4-el még addig se jutottam mint a 6-tal.)

Valaki tudna esetleg segíteni (hogy egyáltalán merre lehet a hiba)?

A hibaüzenet amit az Atmel Studio 6 ad:
Idézet:
„19:14:16: [ERROR] Could not establish communication with the tool., ModuleName: TCF (TCF command: Tool:connect failed.)”


Valaki valami ötlet esetleg?

Közben érdeklődnék, hogy aki nem a HEStore-ból rendelhető programozót használja (de nem is ilyen 10-20-30 ezer forintos KIT-eket hanem valami másik, de olcsó verziót) az mit használ???

Előre is köszönöm a segítséget!

Üdv!
Következő: »»   587 / 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