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
Én is segitséget keresek. Egy AVR ATmega328P modult programozok. Amikor elöször a Dragonhoz kapcsoltam minden normálisan müködött. Betöltöttem egy félig kész programot, ami ugy ahogy müködik is. ( teljesen elfelejtettem, hogy ezen a kütyün csak ISP port van és azon nem lehet debuggolni, eddig többnyire JTAG-l programoztam hasonlo szerkezetet. Az ISP-n keresztül akartam összerakni a programrészeket, ami sajnos nem müködik).
A baj, hogy a betöltés ota a Dragon nem ismeri fel a chipet, a portok még szabadon vannak, azaz nincs rajtuk semmi aktiv jel. A kimenet (soros kommunikacion át) egy LED sort hajt meg, ami világit is ahogy kellene, de igy is marad. Azota, ha megprobalom a Dragonnal összekapcsolni, az már nem tudja a Signaturet kiolvasni, igy kommunikálni sem. Az ISP portokon PB3,4,5, PC6 nincs jel. A kommunikacios freki 125 kHz. Semilyen Lock Bits nincs használva. Amikor a Dragon összekapcsolodik a modullal kialszik a piros LED és csak a zöld világit. Ilyenkor még hibajelentés nincs. Ha megprobálom kiolvasni a Signaturet akkor jön a hibajelentés, hogy nem jo az ISP kommunikacio a Dragon meg az AVR között. Egy másik modult szo nélkül kiolvas, azaz nagyon valoszinü, hogy a beirt kod okozza a konfliktust. Nem használok sem külsö kristályt, sem egyébb extra dolgot. A proci müködik, mert felgyujtja a LED sort, de mintha ott megragadna, és a törölni/átirni sem engedi a kodot. Van valami ötlet mit kezdhetek ezzel? Van még néhány modulom, de nem akarom azokat programozni, mig nem tudom a hiba okát. Sajnos ez a modul ilyen formában már nem létezik, igy ha más 328P modult kell használni akkor át kell épiteni a szerkezetet, ezért vagyok egy kicsit gondban. Kösz!
Amiota betöltöttem a kodot ezt jelzi ki a Fuse Biteknél (Avr Studio 4), és nem tudom semilyen kommunikáciora rávenni.
Szia! A fuse biteket véletlenül nem állítottad el? Lehet letiltottad az ISP feltöltést vagy a reset lábat. Utóbbira reagál? A képen a kérdőjel tapasztalatom szerint csak annyit jelent, hogy nem tud kapcsolódni, ez lehet hardveres hiba is (nincs csatlakoztatva), nem feltétlenül a letiltott feltöltést jelenti. Még egy tipp, próbáld lejjebb állítani a kommunikáció frekvenciáját.
Szia
Ezt már mind végigzongoráztam. a Fuse bitekhez nem szoktam nyulni ( most sem) mert eddig nem igen kellett semmihez. A hardware jo volt ( az elsö letöltést elfogadta) és a program egy bonyolultabb széria kod el is indult lehet, hogy annak a végén maradt valami ami zavart okozott, csak hát nem tudom igen kinyomozni, mert nem tudom léptetni a kodot ésnem tudok ujat se betölteni. A frekivel lementem 100 Hz-ig de nem segitett. (125 kHz-n töltöttem be a kodot). Ami érdekes, hogy a C4-s porton most 10 ms impulzusok vannak a jo modulon ( nincs benne ez a program) viszont nincs, ami valoszinü, hogy jo is mert az adja a CLK-t arra széria kommunikáciora ami a LED-t kezeli. A resetre reagál, de érdekes modon. Ha megnyomom a resetet (C6) megállnak az impulzusok a C4-n. Ha kikapcsolom meg vissza, akkor viszont megjelennek. A hozzászólás módosítva: Ápr 16, 2018
Sajnos nincs több ötletem, remélem mások tudnak majd segíteni.
Idézet: Ezt egyébként hogy érted? Az IC tokozása változott meg, vagy az cserélhető a panelon? Mert végső esetben leforrasztod az IC-t és teszel rá egy másikat, így maradhatna a hardver. „ez a modul ilyen formában már nem létezik, igy ha más 328P modult kell használni akkor át kell épiteni a szerkezetet”
Nem, csak a mechanikai kivitel illetve a modulra szerelt alkatrészek igy már nem kaphatok, én meg ehhez készitettem az egész fogado berendezéset ( 4-5 gépre valo NYÁKokat, stb) az IC-t lehet, hogy ki lehet cserélmi, de elöbb tudnom kéne miért döglött meg, ha egyáltalán. Szerintem nem ment tönkre, mert hajtja a LED displayt, csak nem tudom változtatni a kodot ill kinyomozni, hogy miben akadt meg.
a .dep könyvtárat létre kell hozni. Nálam ott van, ahol a C file-ok.
Egy kicsit nyomozgattam. A chipbe berakott program sajnos egy zárt hurokban fut. Okozhatja ez, hogy nem programozhato?. Nem tudom megállitani a hurkot.
A RESETre mintha megállna a program, de az SPIEN továbbra is szürke, benne a kérdöjellel.
Sziasztok! Egy kis segítséget szeretnék kérni. Egy arduino uno-val dolgoztam és egy NodeMCU ESP8266-al hoztam össze egy webes felületet. Az UNO-n futott a fő program ami egy RFID-s beléptető rendszer volt , ahol a tagokat és minden egyebet feldolgoztam , majd az RFID-n bejövő adattól függően szóltam az ESP-nek sorosan hogy mit írjon ki a webes felületre. A helyzet az hogy van egy T-bird 3 asom egy Atmega 128A MCU-val. Az arduinon lévő MCU pedig Atmega328P-volt. A T-bird-re szeretném átírni az arduinós programot , viszont nem tudok standard C-ben programozni teljesen. A legnagyobb problémám a Baud Rate beállítással van inkább. Most Atmel Studio 7-ben rátaláltam egy olyan opcióra hogy az arduinó kódomat bele tudom illeszteni és befordítja magának C-be, amit aztán elvileg rá tudok tölteni az Atmega128A-ra. Viszont amikor rárakom a T-Bird 3 as lapot a gépre , az atmel studio 7 nem tud rácsatlakozni. Próbáltam AVR studió 4 ben , ott rátudtam tölteni egy alap programot ami C-ben volt írva. Viszont Atmel Studió 7 ben nem jön létre a kapcsolat. Megvan a "befordított" arduinó program , hiba nélkül lefordítja , viszont amikor tölteném rá a T-Birdre , kiválasztom hogy STK500 és Atmega128A , aztán a portot amin van , és ki írja hogy " Unable to connect to tool STK500 (COM4)". Valaki tudna valami megoldást mondani? Esetleg ha több információra van szükség , vagy a programra akkor szivesen megosztom.
Atmega128 és Arduino nem passzolnak össze! Vagy ezt megoldottad? "Unable to connect to tool STK500 (COM4)" - ez teljesen más problémára utal. Ki se tudja olvasni az AVR típusát. Az alapok rosszak, a kommunikáció sem működik.
De jó, és ezt a program miért nem tudja elintézni?
![]() Na de valami még mindig nem kóser... Program1:
Hibaüzenet1: Idézet: „> "make.exe" all -------- begin -------- avr-gcc (WinAVR 20100110) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Size before: /bin/sh: avr-size: command not found Creating load file for EEPROM: main.eep avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \ --change-section-lma .eeprom=0 --no-change-warnings -O ihex main.elf main.eep || exit 0 /bin/sh: avr-objcopy: command not found Creating Symbol Table: main.sym avr-nm -n main.elf > main.sym /bin/sh: avr-nm: command not found make.exe: *** [main.sym] Error 127 > Process Exit Code: 2 > Time Taken: 00:00” Mi az az Error 127? Program2:
Hibaüzenet2: Idézet: „> "make.exe" all -------- begin -------- avr-gcc (WinAVR 20100110) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Size before: /bin/sh: avr-size: command not found Compiling C: main.c avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o main.c:8: warning: function declaration isn't a prototype Linking: main.elf avr-gcc -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o -std=gnu99 -MMD -MP -MF .dep/main.elf.d main.o --output main.elf -Wl,-Map=main.map,--cref -lm Creating load file for Flash: main.hex avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock main.elf main.hex Creating load file for EEPROM: main.eep avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \ --change-section-lma .eeprom=0 --no-change-warnings -O ihex main.elf main.eep || exit 0 /bin/sh: avr-objcopy: command not found Creating Extended Listing: main.lss avr-objdump -h -S -z main.elf > main.lss /bin/sh: avr-objdump: command not found make.exe: *** [main.lss] Error 127 > Process Exit Code: 2 > Time Taken: 00:01” A fügvénydeklarációval is van valami baja, de mi? És a 127 -es hiba az megint ott figyel... (Amúgy a hangszóró jár a megoldásért...)
És ha már itt tartunk, ez nem írja ki, hogy az adott program mennyi tárhelyet és RAM -ot foglal az adott prociban, és mennyi szabad erőforrás áll még rendelkezésre?
A legtöbb mikrovezérlős program egy hurok, ez nem lehet baj. Már csak azért sem, mert a programfeltöltés reset állapotban történik. A programozó földre húzza a reset lábat, és így tölti be a programot (meghatározott protokoll szerint).
Akkor halvány fogalmam sincs mi és miért kapcsolodott ki a SPIEN ami miatt a Dragon nem látja már a procit...
Túlbuzgó víruskeresőre tippelek. Valamit kikapott az exe fájlok közül.
Telepítés közben nem szólt, hogy úgy lett volna. Mindenesetre úgy néz ki, nem szereti az ékezetes karaktereket a telepítési útvonalban. Uninstaláltam, aztán telepítettem egy sima ékezetes karakterek nélküli mappába, onnan megy rendesen...
A makefile hozza létre a .dep-et, nem neked kell.
Persze így, hogy az útvonal már rendben van, igen...
Szép esét mindenkinek!
Nem is tudom hol kezdjem. Én inkább HW terén érzem otthon magam de szükségem volt egy kontrollerre egy programmal amire megkértem egy ismerőst. A programot gyorsan meg is írta de mivel ő elég magas szinten programozik (java, phyton, C# stb) ezért arduinot használt. Szóval ő nem igazán szokott hozzá a registerek "piszkálásához". A gond a következő. Én a kis projektem az adatlap (atmega328p) utáni árammal számoltam ami sehogy sem passzol a valósággal. A kontroller az arduino bootloderrel és semmi más programmal, belső oszcillátorral, 5V táppal 8MHz-en ~8,2mA-t, 1MHz-en ~3.2-5mA-t és 128kHz-en ~2mA-t fogyaszt. Ezek az értékek a FUSE bitek modósításával voltak mérve és nagyon eltérnek az adatlapban szereplő értékektől (~50-500%-ban). Az összes periféria aktiválva (legrosszabb esettel akartam számolni, hogy hátha kijön) kb 1,2mA többletfogyasztást jelent ami még mindig hozzáadva az alapfogyasztáshoz nagyon kevés a mért értékekhez viszonyítva. Az érdekes, hogy ahogy a feszültséget ejtem az áram nagyon drasztikusan esik, drasztikusabban mint az adatlapi görbén (vagyis nekem így tűnik, nem lineárisan), persze még így is nagyon távol áll az ottani értékektől. A tápfeszültséget nem módosítanám, főleg addig míg nem értem mi van a háttérben. nem szerteke HW módosítást alkalmazni míg SW-ből orvosolható. Jelenleg az "altatást" is kizárnám mert 1) az adatlapi áram, vagy legalább közeli érték megfelelne 2) jelenleg nincs egy felköltést támogató bemenet az interrupt portra kötve. Kizárva, hogy más panelen levő modulok fogyasztanának mivel már odáig jutottam, hogy egy új kontrollert egy tesztpanelre téve volt tesztelve. Rákerestem pár kulcsszóra de nem kaptam választ, remélem nem síklottam át rajta. Valaki találkozott már ezzel a problémával? Előre is köszönöm. Kellemes estét.
Sziasztok!
Avr hex file-t vissza lehet alakítani .bas-ra? Bascom ide-t használok mert a c az nekem magas. Át kellene írnom egy program lábkiosztását. Üdv!
Arduinon ott vannak a LED-ek, a soros-usb konverter IC fogyasztása is. Ezeket lekötötted?
Én Arduino nélkül tesztelgettem, hozta az adatlapi értékeket! A hozzászólás módosítva: Máj 15, 2018
Mint írtam, a kontroller külön pcbn is volt mérve, magára. 2 kontrollerrel is tesztelve volt.
Nekem egyszer rajtamaradt a programozó kábel, és emiatt szívtam. Lehúzva jöttek a megfelelő áram értékek.
Ezzel kezdem a méréseket jóideje mivel párszor én is megjártam, szóval sajnos kizárva. Nem tudom mi okozhatja. Esetleg valami tipp mivel kezdhetném? Az arudiono bootloder ami lehetővé teszi a soros interfészen való programozást okozhatja ezt? A tipikus aktív fogyasztást ilyen sokkal meghaladva? Nem konfigurált port okozhat ekkora eltérést? Bár ahogy tudom az arudino alapbol a nem használt portokat felhúzó ellenállással bemenetre teszi. Sajnos mint írtam időhiány miatt az én programozó tudásom nagyon alap. 100%, hogy SW és pontosan mérem de mint írtam rám maradt a kiderítése. Vajon megérné írjak egy "Hello World" kódot és lecseréljem az arduinó bootlodert? Mit ajánlotok kezdőknek C-ben való programozásra? GCC, WinAVR? Pár nap alatt szeretnék írni egy Hello World programot de úgy, hogy tudom "tiszta".
A bootloader csak az első mp-ben fut, utána a te programod veszi át a szerepet. A lábak alap esetben magas impedanciás bemenetek, felhúzó ellenállás nélkül. Képet mutathatnál, ami eszembe jutott, azt már leírtam.
Én Atmel Studio-t használok.
Szervusztok !
Mint kezdő a témában kérdésem,hogy az ATMEGA 8-at csak a D9-E1 fusebit-el lehet programozni vagy a következő kijelölésekkel is:WDTON,SPIEN,CKORT,BOTSZ 1,BOTSZ 0, BODLEVEL,BODEN.
Sziasztok!
Avr lábát szeretném beolvasni, hogy magas vagy alacsony állapotban van-e. Van erre valami útmutató valahol?
Pl. innen megnézheted: Microchip. Amilyen AVR-ed van, annak letöltheted az adatlapját és annak az I/O Port fejezete részletesen taglalja a témát. Még minta program részlet is van benne.
Rég néztem bele, de szerintem itt a 8 lábú cikkekben is találsz pár egyszerű példát rá: Bővebben: Link
Ott is minden ott van, ahol a kolléga irta. Meg van egy sereg ezzel kapcsolatos oldal is (AVR kezdöknek stb) ahol az ilyen alapinfirmáciok nagyon jol le vannak irva.
Ennek önmagában nem sok értelme van, mert hogy mihez kezdesz a beolvasott értékkel az a lényeg. De bármilyen programnyelv kb. második pársoros példa programja bemutatja ezt. Tehát például BASCOM-ban az inputként definiált port értékét hozzárendeled egy változóhoz:
config pinb.1 = input dim a as bit a=pinb.1 |
Bejelentkezés
Hirdetés |