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   366 / 840
(#) Axel válasza Axel hozzászólására (») Okt 12, 2011 /
 
Erre meg olyan hülyeségeket is kiír, hogy 30. hó, holott ki van maszkolva a bcd kódnak a felső 3 digitje...

  1. bcd=i2c_readAck();
  2. honap=bcd2dec();
  3. honap=(0x1F&honap);
  4.  
  5. digit=((honap/10)%10);
  6. adrjump(0xC9);
  7. kiir (p_digit);
  8.  
  9. digit=(honap%10);
  10. kiir (p_digit);
(#) Reggie válasza zombee hozzászólására (») Okt 13, 2011 /
 
A 4. sorban lemaradt egy ures zarojel az fx2 utan.
(#) zombee válasza Reggie hozzászólására (») Okt 13, 2011 /
 
ez van, sz** az élet...
(#) trudnai válasza luxmanpower hozzászólására (») Okt 13, 2011 /
 
  1. if ( fx1() + fx2() == 2 ) {
  2.     ...
  3. }
(#) Robi98 hozzászólása Okt 14, 2011 /
 
Sziasztok.
Sokat hallottam már főleg a LED mátrixoknál, kockáknál, hogy a kiírandó szöveget- képet, a mikrokontroller EEPROM-jába mentik.Meg hogy azt a program futása közben is lehet változtatni.Nem tudom pontosan, hogy mire lehet használni, meg, hogy hogyan, úgy hogy szeretnék valami magyar nyelvű értelmes cikket vagy valami videót az EEPROM-ok használatáról.

Előre is köszönöm.
(#) UbiLinux válasza Axel hozzászólására (») Okt 14, 2011 /
 
Ez a pontosítás sem pontosít igazán. Nem látható belőle, hogy saját delayt függvényt vagy a beépítettet hívod meg - ha a beépítettet, akkor milyen a procid órajele, mert ugye a 100ms-ot nem is tudja biztosítani a beépített delay. Ha saját függvényt, arról sem tudni, mi a leghosszabb idő, amire használható, így aztán könnyen előfordulhat, hogy az 50ms-os késleltetés hosszabb lesz, mint a 100ms-os, mert az utóbbi érték már túl nagy, így csonkolás lesz belőle. Ezekről semmit nem írtál, de többféleképpen is el lehet hasalni miattuk.
Valahogy mégis az az érzésem, hogy a sima "make"-en kívül mást nem is használsz, így mivel "make clean" soha nincs, így ki tudja, milyen verziójú fordításokat olvasztasz egymásba...
(#) robis01 hozzászólása Okt 14, 2011 /
 
Sziasztok!

Bascomnal próbálkozom a M88P Interruptal. De nem sikerül elérnem az EIFR regisztert. Szimulátorban jól működik de feltöltve az AVR-be duplán érzékel a prell miatt. Valakinek volt már ilyen problémája? És talált rá megoldást?
Köszönöm.

Stopbutton0:
Waitms Debouncetime
Print "Gomb1"
Eifr = 1 'nem irja be az 1-t
Print Eifr '0 ad eredmyénül
Return
(#) sikolymester válasza Robi98 hozzászólására (») Okt 15, 2011 /
 
Eepromokról azért nem lehet túl sokat mondani.

Egy nem felejtő memória, ahova byte-onként tudsz írni/olvasni.

Így tudod használni: Bővebben: Link
(#) zombee válasza Robi98 hozzászólására (») Okt 15, 2011 /
 
Ha az AVR-ek belső EEPROM-járól van szó akkor egy féloldalas cikk lenne belőle. Inkább adok C nyelvű forrást.

  1. //kiolvasás az EEPROM-ból:
  2. uint8_t eeprom_olvas()
  3. {
  4. while(EECR & (1<<EEPE));
  5. EEARL = 0;
  6. EECR |= (1<<EERE);
  7. return EEDR;
  8. }
  9.  
  10. //letárolás az EEPROM-ba:
  11. void eeprom_iras(uint8_t X)
  12. {
  13. while(EECR & (1<<EEPE));
  14. EEARL = 0;
  15. EEDR = X;
  16. EECR |= (1<<EEMPE);
  17. EECR |= (1<<EEPE);
  18. }
(#) Axel válasza UbiLinux hozzászólására (») Okt 15, 2011 /
 
Hello!

A könyvtári delay-t használom eddig mindig jól megvoltam vele, hogy pontos volt-e azt le nem mértem de az biztos, hogy ha nagyobb szám volt a paraméter akkor hosszabb volt ha kisebb akkor rövidebb. Egyébként visszavettem időközben 100-ra de az sem segített semmit. Az órajel 12 MHz. Én azt tartom valószínűnek amit Te is mondtál, hogy összekavarodtak nálam a különböző fordítások, szóval inkább újraírom az egészet majd. Sajnos nem minden újrafordításkor használtam a "Make Clean"-t, gondolom kellett volna
(#) sikolymester válasza Axel hozzászólására (») Okt 15, 2011 /
 
Ezt fussad át:

Főleg ezt emelném ki: The maximal possible delay is 262.14 ms / F_CPU in MHz.
(#) UbiLinux válasza sikolymester hozzászólására (») Okt 15, 2011 /
 
Az éjféli válaszom írásakor nem volt energiám előkeresni az ide vágó részt, de Sikolymester megtette helyettem: 262.14 ms/12 ~ 22ms feletti időzítéseknél már csonkolva lesz az általad kívánt érték, pl az 50 ms helyett kb 6 ms lesz az időzítés (mert a 22ms kétszer fér el benne, azaz 2*22 = 44ms - marad 6ms, ezt fogja időzíteni. Az 50 ms-ot úgy időzítheted, hogy ötször hívod meg a delayt 10 ms-os időzítéssel.
(#) robis01 válasza zombee hozzászólására (») Okt 15, 2011 /
 
Sziasztok!

Nincs köze az epromhoz. External Interrupt Flag Register amivel gondom van.
Azért köszönöm segítséget.
(#) Ricsi89 válasza robis01 hozzászólására (») Okt 15, 2011 /
 
Te nézted, hogy kinek válaszolt zombee?
(#) robis01 válasza Ricsi89 hozzászólására (») Okt 15, 2011 /
 
Bocsi. Elnéztem
(#) Robi98 válasza zombee hozzászólására (») Okt 15, 2011 /
 
Egyszerűnek tűnik, de sajnos nem ismerem a regisztereket, biteket.
(#) zombee válasza Robi98 hozzászólására (») Okt 15, 2011 /
 
Még annyit javítanék magamon hogy az "EEARL" regiszterbe a címet kell tölteni(0-255),
vagy az "EEAR"-be ha ennél nagyobb EEPROM van(0-65535).

Egyébként a legegyszerűbb a GCC könyvtári függvényeket használni:
  1. #include <avr/eeprom.h>
  2. void eeprom_write_byte (uint8_t *__p, uint8_t __value)
  3. uint8_t eeprom_read_byte (const uint8_t *__p)
(#) sikolymester válasza Robi98 hozzászólására (») Okt 15, 2011 /
 
Sajnos másképpen nem fog menni, minthogy az ember előveszi az adatlapját a mikrokontrollernek, és megnézi mik a lehetőségek.

Vannak platformok, ahol ez nem szükséges. Ilyen pl a java nyelv, vagy a c# és társai.

Aki hardver közel programoz, az nem kerülheti ezt el.

De ha a válaszoddal arra gondoltál, hogy nyelvi hiányosságaid vannak, akkor viszont markolj fel egy C könyvet és olvasd el.
(#) blackdog hozzászólása Okt 16, 2011 /
 
Sziasztok!

Nemrég sikerült beszereznem STK500 programozót és AVR Duino tesztpanelt kiegészítőkkel.
Nem akarok nekiállni a Bascom-nak mert csak fölösleges időtöltés lenne. C -ben szeretném elsajátítani az eszköz programozását.
Miért kell hozzá a WinAVR és AVRStudio együtt, ha C-ben programozzuk?
Tudnátok segíteni az első lépések megtételében?
(#) blackdog válasza (Felhasználó 15355) hozzászólására (») Okt 16, 2011 /
 
[off]
Azt nem mondtam, hogy soha nem fogok uC-hez nyúlni.
Most még csak tanulni szeretném és közben bővíteni jelenlegi ismereteim.
(#) TavIR-AVR válasza blackdog hozzászólására (») Okt 16, 2011 /
 
A winavr egy jól összeszedett C környezet Windows alá.Az AVRStudio meg debug,letöltő, szekesztőfelületet ad hozzá (4.19 verzio)

Az 5.x AVRStudio beépítve mindent tartalmaz - de túl friss/új. És így nem tudni a hibáit, nyűgjeit még....
(#) neogeo2 válasza blackdog hozzászólására (») Okt 16, 2011 /
 
A winavr adja a gcc-t (c fordító). Az avrstudio adja a "keretrendszert". Külön is működnek, de winavr nélkül nem tud csak assemblyt fordítani az avrstudio.
(#) blackdog válasza neogeo2 hozzászólására (») Okt 16, 2011 /
 
Első nekifutásra kicsit zavaros az egész.
Feltettem mind két programot és első ránézésre mindkettővel lehet C-ben fejleszteni.
Hogyan kapcsolódik a kettő egymáshoz?

Egyenlőre "szűz" IC-t nem szeretnék programozni hanem a tesztpanelre feltölteni a szokásos kezdő progikat.
LED Blink, LCD "Hello world!"

Bascom-ban ez már sikerül, de mint írtam nekem az zsákutca mert C-t kellene tanulnom.
(#) blackdog válasza blackdog hozzászólására (») Okt 16, 2011 /
 
Jól láttom, hogy a WinAVR fenn kell, hogy legyen, de "használnom" nem kell mert az AVRStudo-ba szerepel a Plugin-ok között a gcc és innentől kezdve már csak a Studio keretrendszere kell nekem?
(#) sikolymester válasza blackdog hozzászólására (») Okt 16, 2011 /
 
Idézet:
„első ránézésre mindkettővel lehet C-ben fejleszteni”


WinAVR tartalmazza a az avrgcc fordítót, ami a C forráskódot varázsolja át hex -re. Az Avrstudio is ezt hívja meg, amikor C-ben programozol benne.

Ha nincsen WinAVR a gépeden, akkor az Avrstudio csak assemblyvel működik, mert nem tudja meghívni az avrgcc -t.

Avrstudio 5 már tartalmaz C fordítót.
(#) blackdog válasza sikolymester hozzászólására (») Okt 16, 2011 /
 
Oké!
Ez a része már tiszta. Most keresgélem, hogy hogyan lehet az ARDIUNO-van (168) használni az AVR Studio 4-et.
Egyenlőre vakon tapogatózom.
(#) kiborg hozzászólása Okt 16, 2011 /
 
Hali!
Van egy SPI-s hőmérőm, aminek a maximum feszültsége 6.0VDC, de az ajánlott működési feszültség 1,7-3,8V között van. Akkor hogy is van ez? 5V-ról használhatom vagy sem ?
Erről az ICről van szó:MAX31723
Azért kellene 5V,mert van egy VFD is a rendszerben, ami ugyan 12V-s, de a kommunikációja meg 5V-s(az is SPI) és lesz még egy RTC (ami szintén menne 3,3-ról, de tudja az 5V-t is). A vezérlő egy ATMega16A.
Üdv Kiborg
(#) sikolymester válasza blackdog hozzászólására (») Okt 16, 2011 /
 
Arduinoval nem tudod használni az AVRstudiot.
Vagyis természetesen van rá lehetőség, de nem triviális. Az arduinokon ugyanis van egy bootloader, amivel meg kell etetned az avrstudioban fordított hex-et.

Normális esetben ugye megírod arduinora a progit az arduino IDE -ben, majd a benne lévő valamilyen progi egyből feltölti a bootlaoder segítségével a programot az arduino plattformodra.

Ezt a progit ami kezelni tudja az arduinokban található bootloadert tudtommal külsőleg is meg lehet hívni.

De mivel te említetted, hogy van egy STK500 programozód, így én azt javaslom, hogy felejtsd el, hogy egy arduinot tartasz a kezedben, szépen kösd rá az stk500 programozó lábait és programozd fel az avrstudióból.

Ami neked kell az a MISO, MOSI, SCK, Reset, Gnd Vcc lábak.
(#) zombee válasza blackdog hozzászólására (») Okt 16, 2011 /
 
Hello!

Igazából nem is értem hogy miért ARDUNIO-t vettél ha AVR Studio-ból akarsz rá fejleszteni,
és STK500-al programozni. A két eszköz árából már valami jobbfajta AVR fejlesztőpanel is kijön, programozóval.

De ha már megvan akkor használd azt: lenni kell rajta
egy ISP csatlakozónak, azon keresztül
tudod programozni. Ha ugyanott vetted mindkettőt akkor alap.

Majd fogsz pár LED-et és nyomógombot, rákötögeted a panelra és már mehet is a móka.
(#) IMi válasza blackdog hozzászólására (») Okt 16, 2011 /
 
Szia!
Az AVRStudio helyett, mellet kipróbálhatsz más környezetet (IDE) is. Pl.: Az AVR-Project-IDE (Link), támogatja az Arduino-t lib-ekkel és azt hiszem fel is tölti a programot. Szintén az AVRGCC-t használja! Ráadásul van egyéb szerkesztés könnyítő funkciója is, ami a Studióban nincs, viszont nem debuggol.
Következő: »»   366 / 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