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
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.
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:
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
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.
En altalaban ellenzem a forditasokat, neha nem is lehet igazan jo magyar megfelelot talalni. Lehet nem is kell keresni. Az IT nyelve az angol.
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).
É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.)
Kösz!
Tegnap én is eljutotam a te példád 4. fejezetéig
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
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.”
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.
Köszi, az oldal mindent leír, ami lényeges!
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
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.
Nem biztos, hogy nincs igazán értelme. A megszakítási rendszer kihozhatja ebből az állapotból.
Szia! A párhuzamos programozáson mit értesz? Nem az áramkörbe programozok. De köszi a
válaszod.
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.
Szia!
Én tegnap programoztam pont így. ISP-n keresztül 115.2khz-el tökéletesen működött vele.
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).
É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.
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
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.
Régebben fent volt az Atmel oldalán, de az MC természetesen törölte. Úgy emlékszem ez volt:
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.
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
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.
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.
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?
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.
Nekem default beallitasokkal megy 8MHz : E: FD, H: DE, L: FF
A hozzászólás módosítva: Jún 22, 2020
|
Bejelentkezés
Hirdetés |