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   793 / 793
(#) Massawa hozzászólása Ápr 16, 2018 /
 
É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!
(#) Massawa válasza Massawa hozzászólására (») Ápr 16, 2018 /
 
Amiota betöltöttem a kodot ezt jelzi ki a Fuse Biteknél (Avr Studio 4), és nem tudom semilyen kommunikáciora rávenni.

capture.png
    
(#) Ivan93 válasza Massawa hozzászólására (») Ápr 16, 2018 /
 
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.
(#) Massawa válasza Ivan93 hozzászólására (») Ápr 16, 2018 /
 
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
(#) Ivan93 válasza Massawa hozzászólására (») Ápr 16, 2018 /
 
Sajnos nincs több ötletem, remélem mások tudnak majd segíteni.
Idézet:
„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”
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.
(#) Massawa válasza Ivan93 hozzászólására (») Ápr 16, 2018 /
 
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.
(#) ics36 válasza RoliNyh hozzászólására (») Ápr 16, 2018 / 1
 
a .dep könyvtárat létre kell hozni. Nálam ott van, ahol a C file-ok.
(#) Massawa válasza Ivan93 hozzászólására (») Ápr 17, 2018 /
 
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.
(#) Zekageri hozzászólása Ápr 17, 2018 /
 
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.
(#) Kovidivi válasza Zekageri hozzászólására (») Ápr 17, 2018 /
 
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.
(#) RoliNyh válasza ics36 hozzászólására (») Ápr 17, 2018 /
 
De jó, és ezt a program miért nem tudja elintézni? (Nyilván a kérdés a fejlesztőknek szól nem neked).

Na de valami még mindig nem kóser...

Program1:
  1. //Próba projekt
  2. //LED villogó
  3.  
  4. #include <avr/io.h>
  5. #include <util/delay.h> // a szóközt ki kell venni a < > jelek mellől, a fórummotor miatt...
  6.  
  7. //void kesleltet()
  8. //      {
  9. //      for(uint8_t i=0; i<10; i++)
  10. //            {
  11. //            _delay_ms(200);   
  12. //            }
  13. //      }
  14.  
  15. int main(void)
  16.         {
  17.         DDRD=0xFF;
  18.         while(1)
  19.                 {
  20.                 PORTD=0x00;
  21. //            kesleltet();
  22.                 PORTD=0xFF;
  23. //            kesleltet();
  24.                 }
  25.         }

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:
  1. //Próba projekt
  2. //LED villogó
  3.  
  4. #include <avr/io.h>
  5. #include <util/delay.h> // a szóközt ki kell venni a < > jelek mellől, a fórummotor miatt...
  6.  
  7. void kesleltet()
  8.         {
  9.         for(uint8_t i=0; i<10; i++)
  10.                 {
  11.                 _delay_ms(200);   
  12.                 }
  13.         }
  14.  
  15. int main(void)
  16.         {
  17.         DDRD=0xFF;
  18.         while(1)
  19.                 {
  20.                 PORTD=0x00;
  21.                 kesleltet();
  22.                 PORTD=0xFF;
  23.                 kesleltet();
  24.                 }
  25.         }


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...)
(#) RoliNyh válasza RoliNyh hozzászólására (») Ápr 17, 2018 /
 
É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?
(#) Ivan93 válasza Massawa hozzászólására (») Ápr 17, 2018 /
 
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).
(#) Massawa válasza Ivan93 hozzászólására (») Ápr 17, 2018 /
 
Akkor halvány fogalmam sincs mi és miért kapcsolodott ki a SPIEN ami miatt a Dragon nem látja már a procit...
(#) rolandgw válasza RoliNyh hozzászólására (») Ápr 18, 2018 /
 
Túlbuzgó víruskeresőre tippelek. Valamit kikapott az exe fájlok közül.
(#) RoliNyh válasza rolandgw hozzászólására (») Ápr 18, 2018 /
 
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...
(#) rolandgw válasza ics36 hozzászólására (») Ápr 18, 2018 /
 
A makefile hozza létre a .dep-et, nem neked kell.
(#) RoliNyh válasza rolandgw hozzászólására (») Ápr 18, 2018 /
 
Persze így, hogy az útvonal már rendben van, igen...
Következő: »»   793 / 793
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu