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   814 / 837
(#) Szárnyas válasza cua hozzászólására (») Máj 21, 2020 /
 
Nyilván az angol kifejezés hamarabb létezett, mint a magyar, ne rajtam kérd számon a magyar terminust. Java nyelvben például metódus túlterhelésnek hívják ugyanezt.
(#) Massawa hozzászólása Máj 21, 2020 /
 
Egy kérdés - a C nyelvben nagyon kezdö vagyok.
Most egy OLED displayt illesztettem az egyik szerkezetembe, minden jol müködik, de van egy sor ( a mintában amivel kezdtem) aminek nem igen tudom az értelmét:

  1. for(;;);     // nem csinál semmit, egy zárt hurok


Ez egy IF hurok része ahol a proci a displayt keresi az I2C cimen.
Ezt miért kell igy csinálni, illetve lehet ezt másképp is.

Kösz!
A hozzászólás módosítva: Máj 21, 2020
(#) cua válasza Massawa hozzászólására (») Máj 21, 2020 /
 
Igen, lehet ezt maskepp is, ez egyenlo a while(1) (vegtelen) ciklussal.
Akkor alkalmazzak ha peldaul a 'foprogram' mar nem csinal semmit, azaz valami event-re var a hatterben.
(#) cua válasza Szárnyas hozzászólására (») Máj 21, 2020 / 1
 
En altalaban ellenzem a forditasokat, neha nem is lehet igazan jo magyar megfelelot talalni. Lehet nem is kell keresni. Az IT nyelve az angol.
(#) Massawa válasza cua hozzászólására (») Máj 21, 2020 /
 
Kösz!
(#) Kovidivi válasza Massawa hozzászólására (») Máj 21, 2020 /
 
Szinte lehetetlen a google-ben rákeresni a for-ra... Minden mást kidob. Azt akartam megkeresni, hogy ha nem írsz be a zárójelbe semmit, akkor mi az alapértelmezett érték, ami miatt sosem ér véget. A kilépési feltétel is hiányzik, tehát emiatt működik úgy, mint egy while(1).
(#) cua válasza Kovidivi hozzászólására (») Máj 21, 2020 /
 
(#) Massawa válasza Kovidivi hozzászólására (») Máj 21, 2020 /
 
Én is keresgéltem már tegnap, hogy mi ez az agymenés, én sem találtam semmit. Nem igen szeretem az ilyen semmitmondo parancsokat, az embert csak feleslegesen megkeverik. Ez majdnem már a pofakönyv nyelvu szintje. ( néhány sorral más összefüggésben ott van a while funkcio is, igy a kod irojának nem ismeretlen egyik sem. Nem tudom miért kell igy összezagyvasztani egy alapbol jo kodot.)
(#) Massawa válasza cua hozzászólására (») Máj 21, 2020 /
 
Kösz!

Tegnap én is eljutotam a te példád 4. fejezetéig

  1. for (;;){


De ott is van a { után egy és más, de az én esetemben nincs semmi csak egy ; ezért nem igen tudtam vele mit kezdeni.

Maga a for funkcio nem idegen, itt csak a paraméterei zavarok.
A hozzászólás módosítva: Máj 21, 2020
(#) rolandgw válasza Kovidivi hozzászólására (») Máj 21, 2020 /
 
K&R C:
Idézet:
„Szintaktikailag a for utasítás mindhárom komponense kifejezés. Leggyakrabban az 1. és 3. kifejezés értékadás vagy függvényhívás, és a 2. kifejezés egy relációs kifejezés. A három komponens bármelyike hiányozhat, de az őket lezáró pontosvessző kiírása ekkor is kötelező. Ha az 1. vagy 3. kifejezés hiányzik, akkor azokat egyszerűen elhagyjuk a for utasítást követő zárójelből. Ha a 2. (vizsgáló) kifejezés is hiányzik, akkor azt a gép úgy tekinti, hogy az állandóan igaz, és ezért a

for ( ; ; ) {
...
}

szerkezet egy végtelen ciklus, amiből feltehetőleg más módon (pl. break vagy return utasítással) kell kilépni.”
(#) cua válasza Massawa hozzászólására (») Máj 21, 2020 /
 
Ez igy kettos semmi.
Empty es infinite egyszerre. En sem nagyon hasznalom, ha mar mindenaron vegtelen akkor while(1) de az sem elegans igazan
Tobb talalat a google-tol.
(#) Kovidivi válasza cua hozzászólására (») Máj 21, 2020 /
 
Köszi, az oldal mindent leír, ami lényeges!
(#) oatti hozzászólása Jún 9, 2020 /
 
Szia. Atmega8-t szeretnék felprogramozni stk500 és Avr Studio 4.19. Működik minden csak a külső
óra beállítást nem engedi. Amit megadtak H=0xC9 és L=0xEE hiba üzenet. Próbáltam H=0xD9 és
L=0xFF ott is hiba üzenet. Ami megy az alap int. 1MHz már a int. 8MHz-nál is hiba üzenet.
Atmega8 külső kvarc 3.6864MHz.

Üdv:oatti
(#) lazsi válasza oatti hozzászólására (») Jún 9, 2020 /
 
Szia! Régen használtam ilyet (nem Atmega8-at, hanem mást, de STK500-al és AVR Studioval).
Ami eszembe jutott, hátha segítség: Volt valami kötöttség a programozó frekvencia és a beállított órajel-frekvencia között. A másikat is változtatni kellett, ha az egyiket változtattam, de talán éppen az volt a gond, ha túl alacsonyra állítottam az órajelet, akkor kellett csökkenteni programozó frekvenciát is.
A másik ötletem, hogy ha nem az áramkörben programozod (ISP-n), hanem az STK500-ba bedugva, akkor használhatod a párhuzamos programozást is. Lehet, hogy úgy menni fog.
(#) Hp41C válasza Massawa hozzászólására (») Jún 9, 2020 /
 
Nem biztos, hogy nincs igazán értelme. A megszakítási rendszer kihozhatja ebből az állapotból.
(#) oatti válasza lazsi hozzászólására (») Jún 10, 2020 /
 
Szia! A párhuzamos programozáson mit értesz? Nem az áramkörbe programozok. De köszi a
válaszod.
(#) lazsi válasza oatti hozzászólására (») Jún 10, 2020 /
 
Az STK500 alapból sorosan programoz (miso, mosi, sck), de lehetőség van párhuzamos programozásra is (abban most nem vagyok biztos, hogy a Mega8 tudja-e, de 99% esélyét látom, hogy igen), amikor byte-os formátumban írja be a kódot. (nyilván a 8 lábú eszközök esetében ez nem igazán lehetséges...) Szokták még High Voltage programozásként is emlegetni. Bizonyos FUSE biteket (pl. ha az ember kizárja magát a uC-ből ) csak így lehet megváltoztatni.
Valószínűleg az AVR Studio-ban a program letöltésénél (ahol a letöltési sebességet is meg lehet határozni) lehet átállítani az alapértelmezett sorosról. Most nem annál a gépnél vagyok, amire telepítve van az AVR studio, így nem tudom megnézni.
(#) vipera1997 válasza oatti hozzászólására (») Jún 10, 2020 /
 
Szia!
Én tegnap programoztam pont így.
ISP-n keresztül 115.2khz-el tökéletesen működött vele.
(#) Massawa válasza lazsi hozzászólására (») Jún 10, 2020 /
 
Még azt nézd meg mi van az RST lábra kötve. Rendszerint az szokott gondot okozni az ISP-n. Meg az is elöfordult, hogy valaki elötted blokkolta az RST lábat, akkor az a procit már nem lehet ujrairni. ( vagy büvészkedni kell, de az nekem még nem sikerült).
(#) asch válasza lazsi hozzászólására (») Jún 10, 2020 /
 
Én úgy tudom, hogy a High Voltage csak a programozó módba hozáshoz kell, utána már ugyanúgy SPI-n megy a kommunikáció (amit sorosnak hívtál - MISO, MOSI, SCK vonalakon).

Van olyan leírás a neten, hogy néhány alkatrésszel és egy 12V táppal (akku, labortáp, stb) hogy lehet High Voltage programozást csinálni sima programozóval is. Egy adott ideig tartó 12V jelet kell a RESET lábra tenni, és utána adott időn belül programozós kommunikációt kezdeményezni. A legtöbb programozó azért nem tudja ezt, mert nincs 12V tápja, és ezért plusz bonyolultság lenne ilyet előállítani. Meg néhány alkatrész kapcsolni is. És ha nem használjuk GPIO-nak a RESET lábat, akkor felesleges huncutság. De ezen felül nincs benne semmi mágia.
(#) lazsi válasza asch hozzászólására (») Jún 11, 2020 /
 
Az STK500 tudja a HV programozást... Éppen azért írtam, hogy azt érdemes lehet megpróbálnia.

(Mivel a miso-mosi-sck esetében az egyes bitek időben egymás után jönnek, a másik esetben pedig egy adott 8bites portján byte-onként, így az első soros, míg a második párhuzamos programozási mód... Egyébként az SPI nevében is szerepel, hogy soros... De most utánanéztem az SKT500 leírásában, és a 8 lábú eszközöket HV mód esetén is sorosan programozza.)

A kérdező írta, hogy nem az áramkörben programozza, tehát a RESET lábon az van, amit az STK500 rákapcsol...
A hozzászólás módosítva: Jún 11, 2020
(#) zombee hozzászólása Jún 17, 2020 /
 
Sziasztok!
Gépemen telepítve van az AVR Studio 4 és Studio 7 is. Az a problémám, hogy a 7-es már nem a Jungo drivert használja (AVRISP-mkII programozóhoz), hanem "Atmel" néven megjelenő csoportba teszi. Ezzel pedig sem a Studio 4, sem az stk500.exe nem látja, nem tudja használni.
Hogyan lehet átmenetileg letiltani az "Atmel" csoportot a win eszközkezelőben, hogy a programozót Jungo-ba tegye?

A kötekedők kedvéért: használhatnám a Studio 7-et, parancssorban az atprogram.exe-t, de jelenleg egyik sem opció! Ahogy a Studio 7 deinstall sem.
(#) rolandgw válasza zombee hozzászólására (») Jún 17, 2020 /
 
Régebben fent volt az Atmel oldalán, de az MC természetesen törölte. Úgy emlékszem ez volt:
(#) zombee válasza rolandgw hozzászólására (») Jún 17, 2020 /
 
Köszönöm, ez jónak tűnik, a napokban kipróbálom. Már kaptam olyan tippet is, hogy először a 4-est kell telepíteni, utána a 7-est, miközben a használni kívánt, "programozós" gépnél épp fordítva történt. Ez ezért lehetett, mert a gép kb. két éve direkt UPDI-s eszközre lett beállítva Atmel-ICE programozóval, és most kellett volna egy régebbi szériát felprogramozni. A hozzávaló, stk500.exe-t használó programot egyelőre nincs lehetőségem átírni.
(#) tufatofu hozzászólása Jún 21, 2020 /
 
Sziasztok! Lehet rossz helyre írom ezt a totál amatőr kérdést ezért elnézést!
Nemrég kezdtem el kinlódni arduinoval. Az arduinoval működő programot szeretném megvalósítani sima Atmega328-al. A hex fájl az adott. A hozzá tartozó fusebiteket honnan tudom meg, mit kell állítani AVR studioban? STK500-am van a Zombee publikációja alapján épített.
A hozzászólás módosítva: Jún 21, 2020
(#) asch válasza tufatofu hozzászólására (») Jún 21, 2020 / 1
 
Fuse bits: én ezt a kalkulátort szoktam használni, bekattintgatod és pont olyan formátumban adja ki, amit avrdude parancssorban meg lehet adni. https://www.engbedded.com/fusecalc/

Sima Atmega328: ha nem teszel mellé kristályt, akkor a belső 8MHz lesz csak a max órajele, ha teszel kristályt, akkor 20MHz-ig lehet elvinni. Az Arduino UNO 16MHz-en ketyeg, ha lényeges, hogy ugyanaz legyen, akkor ilyen kvarcot kell betenni. (Az órajellel együtt sz UART baud rate megváltozik például.)

Sima Atmega328-ban gyárilag nincs bootloader program (ezzel lehet serialon keresztül programozni a csipet - így működik az UNO). De ha mindig STK500-al programozod, akkor nincs is erre szükséged.

Az Arduino IDE-ben egyébként be lehet kapcsolni, hogy írja ki a fordítás parancsait. Ezek alapján el lehet indulni saját fordító script vagy Makefile irányába is, én így csináltam régen, most már parancssori eszközökkel programozok 90%-ban IDE nélkül.
(#) cua válasza tufatofu hozzászólására (») Jún 22, 2020 / 1
 
Nekem nem teljesen vilagos mit szeretnel
Ha arduino-kent szeretned hasznalni az m328P-t, akkor fel kell toltened bele az arduino bootloadert. Ezt megteheted az arduino IDE-vel is, az eleg egyszeru, nincs tulbonyolitva (es nem kell torodnod tul sok beallitassal)
Utana mar a soros porton keresztul tudod feltolteni bele a sajat programodat (kell hozza usb/soros atalakito es nem akarmelyik jo). Persze ez megint izles dolga, en hasznalok USBasp-t es USBtinyISP-t is, attol fugg melyik kerul elobb a kezembe.
AVR Studio nincs linuxra (de nem is nagyon hianyzik nekem) igy konkretan abban nem tudok segiteni. A CLion-t preferalom mint IDE-t, de az hiszem abbol nincs ingyenes verzio (idolimites letoltheto kiprobalni)

Ha csak ismerkedsz az AVR mcu-val, akkor az arduino kornyezet a legjobb kiindulopont, ott nem is talalkozol fusebit-el Raadasul hihetetlen boseges irodalom van hozza millionyi peldaprogrammal.
(#) tufatofu válasza cua hozzászólására (») Jún 22, 2020 /
 
Csak ismerkedek egyenlőre az arduinoval. AVR-t használtam régebben is kész programokkal amiket más szerzők publikáltak, a programozással most kezdek barátkozni.
Annyi a gondom, hogy a kész, arduinon működő programot akarom beégetni egy atmega328-ba, egyrészt kisebb mint egy UNO, másrészt luxus egy fejlesztőpanelt felhasználni mikor sosem fogom bolygatni többé a céláramkörben.Ezért nem kell bootloader sem. A kérdésem tulajdonképpen arra vonatkozik, hogy az IDE által készített hex fájl-t milyen fusebitekkel égessem be?
(#) asch válasza tufatofu hozzászólására (») Jún 22, 2020 / 1
 
Kristály adja az órajelet, vagy a belső órával akarod hajtani? Ha erre a kérdésre megvan a válasz, akkor a többi beállításból jó a default, és a fentebb linkelt fuse bit calculatorból lehet konkrét választ adni.
(#) cua válasza tufatofu hozzászólására (») Jún 22, 2020 / 1
 
Nekem default beallitasokkal megy 8MHz : E: FD, H: DE, L: FF
A hozzászólás módosítva: Jún 22, 2020
Következő: »»   814 / 837
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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