어느거 기준인진 좀 코드를 분석해 봐야 할 듯?


프로젝트 파일 뜯어 보니

 Device (AT89C51ID2)

 Vendor (Atmel)

크앙... AT89C51 8051계열용이네.. ㅠㅠ


[링크 : http://www.keil.com/download/docs/52.asp]

신고

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

keil bootloader example - avr/atmel  (0) 2017.11.17
avrdude -U 옵션  (0) 2017.11.13
USBasp 설치  (0) 2017.11.13
avr 저전압 감지  (0) 2017.08.11
avr bod(Brown out Detect)  (0) 2017.08.11
avr pwm 관련  (0) 2017.04.19
Posted by 구차니

댓글을 달아 주세요

-U 옵션이 무지 복잡해 보이는데

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500 -PCOM6 -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m

2016/04/06 - [embeded/arduino(genuino)] - 아두이노 부트로더 굽기?


아래 내용으로 해석을 해보면..

lock / fuse bit(extended/high/low) 를 Write 하고 immediate 모드로 해당 값을 쓰도록 한다 정도?

-Ulock:w:0x3F:m

-Uefuse:w:0x05:m

-Uhfuse:w:0xDA:m

-Ulfuse:w:0xFF:m



-U memtype:op:filename[:format]

Perform a memory operation. Multiple ‘-U’ options can be specified in order to operate on multiple memories on the same command-line invocation. The memtype field specifies the memory type to operate on. Use the ‘-v’ option on the command line or the part command from terminal mode to display all the memory types supported by a particular device. Typically, a device’s memory configuration at least contains the memory types flash and eeprom. All memory types currently known are:


calibration

One or more bytes of RC oscillator calibration data.


eeprom

The EEPROM of the device.


efuse

The extended fuse byte.


flash

The flash ROM of the device.


fuse

The fuse byte in devices that have only a single fuse byte.


hfuse

The high fuse byte.


lfuse

The low fuse byte.


lock

The lock byte.


signature

The three device signature bytes (device ID).


fuseN

The fuse bytes of ATxmega devices, N is an integer number for each fuse supported by the device.


application

The application flash area of ATxmega devices.


apptable

The application table flash area of ATxmega devices.


boot

The boot flash area of ATxmega devices.


prodsig

The production signature (calibration) area of ATxmega devices.


usersig

The user signature area of ATxmega devices.


The op field specifies what operation to perform:


r

read the specified device memory and write to the specified file


w

read the specified file and write it to the specified device memory


v

read the specified device memory and the specified file and perform a verify operation


The filename field indicates the name of the file to read or write. The format field is optional and contains the format of the file to read or write. Possible values are:


i

Intel Hex


s

Motorola S-record


r

raw binary; little-endian byte order, in the case of the flash ROM data


e

ELF (Executable and Linkable Format), the final output file from the linker; currently only accepted as an input file


m

immediate mode; actual byte values specified on the command line, separated by commas or spaces in place of the filename field of the ‘-U’ option. This is useful for programming fuse bytes without having to create a single-byte file or enter terminal mode. If the number specified begins with 0x, it is treated as a hex value. If the number otherwise begins with a leading zero (0) it is treated as octal. Otherwise, the value is treated as decimal.


a

auto detect; valid for input only, and only if the input is not provided at stdin.


d

decimal; this and the following formats are only valid on output. They generate one line of output for the respective memory section, forming a comma-separated list of the values. This can be particularly useful for subsequent processing, like for fuse bit settings.


h

hexadecimal; each value will get the string 0x prepended.


o

octal; each value will get a 0 prepended unless it is less than 8 in which case it gets no prefix.


b

binary; each value will get the string 0b prepended.


The default is to use auto detection for input files, and raw binary format for output files.


Note that if filename contains a colon, the format field is no longer optional since the filename part following the colon would otherwise be misinterpreted as format.


As an abbreviation, the form -U filename is equivalent to specifying -U flash:w:filename:a. This will only work if filename does not have a colon in it. 

[링크 : http://www.nongnu.org/avrdude/user-manual/avrdude_4.html]

[링크 : http://www.ladyada.net/learn/avr/avrdude.html]


생각해보니.. 양산용으로 avrdude를 이용해서

초기에 fuse bit 설정 -> 리부팅 -> 빠른 속도로 굽기 이런식으로 

해두고 옵션파일을 ini에 저장하도록 해서 fuse bit나 mcu 종류별로 관리하도록 하면

편할 거 같은데 avrdude용 gui front end 한번 작성해볼까..

신고

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

keil bootloader example - avr/atmel  (0) 2017.11.17
avrdude -U 옵션  (0) 2017.11.13
USBasp 설치  (0) 2017.11.13
avr 저전압 감지  (0) 2017.08.11
avr bod(Brown out Detect)  (0) 2017.08.11
avr pwm 관련  (0) 2017.04.19
Posted by 구차니

댓글을 달아 주세요

아래 링크에서 zadig를 받아서 실행하면 아래와 같이 뜨는데

[링크 : http://zadig.akeo.ie/] 드라이버


USBasp 를 찾아서 (USB ID 16C0 05DC)

드라이버를 WinUSB 에서 libusbk로 바꾼후 install driver를 하면 된다..(꽤나 삽질했네 -_-)


WinDriver로 깔면 아래와 같이 에러가 발생하면서 장치를 못 찾는다

C:\win32_executable>avrdude -cusbasp -Pusb -pm128 -v


avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53

         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/

         Copyright (c) 2007-2014 Joerg Wunsch


         System wide configuration file is "C:\win32_executable\avrdude.conf"


         Using Port                    : usb

         Using Programmer              : usbasp

avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'


avrdude done.  Thank you.


libusbk로 깔고 나서 해결 -_-

C:\win32_executable>avrdude -cusbasp -Pusb -pm128 -v


avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53

         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/

         Copyright (c) 2007-2014 Joerg Wunsch


         System wide configuration file is "C:\win32_executable\avrdude.conf"


         Using Port                    : usb

         Using Programmer              : usbasp

         AVR Part                      : ATmega128

         Chip Erase delay              : 9000 us

         PAGEL                         : PD7

         BS2                           : PA0

         RESET disposition             : dedicated

         RETRY pulse                   : SCK

         serial program mode           : yes

         parallel program mode         : yes

         Timeout                       : 200

         StabDelay                     : 100

         CmdexeDelay                   : 25

         SyncLoops                     : 32

         ByteDelay                     : 0

         PollIndex                     : 3

         PollValue                     : 0x53

         Memory Detail                 :


                                  Block Poll               Page                       Polled

           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack

           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------

           eeprom         4    12    64    0 no       4096    8      0  9000  9000 0xff 0xff

           flash         33     6   128    0 yes    131072  256    512  4500  4500 0xff 0xff

           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00

           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00

           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00

           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00

           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00

           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00


         Programmer Type : usbasp

         Description     : USBasp, http://www.fischl.de/usbasp/


avrdude: auto set sck period (because given equals null)

avrdude: warning: cannot set sck period. please check for usbasp firmware update.

avrdude: error: program enable: target doesn't answer. 1

avrdude: initialization failed, rc=-1

         Double check connections and try again, or use -F to override

         this check.



avrdude done.  Thank you.

[링크 : http://www.fischl.de/usbasp/]

[링크 : http://download.savannah.gnu.org/releases/avrdude/] avrdude

[링크 : https://rlogiacco.wordpress.com/2016/09/01/usbasp-windows-10/]

신고

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

keil bootloader example - avr/atmel  (0) 2017.11.17
avrdude -U 옵션  (0) 2017.11.13
USBasp 설치  (0) 2017.11.13
avr 저전압 감지  (0) 2017.08.11
avr bod(Brown out Detect)  (0) 2017.08.11
avr pwm 관련  (0) 2017.04.19
Posted by 구차니

댓글을 달아 주세요

mcp6002 opamp를 이용

일종의 comparator로 사용하여 gpio 입력으로 받아 감지

[링크 : http://blog.naver.com/ivy1379/220504291815]


생각해보면

gpio 히스테리시스 값 이하로 떨어지면 0이 되니

저항이나 다이오드로 전압 강하하고 gpio에 넣어서

0으로 떨어지는 순간 탐지하거나

다이오드 직렬 연결해서 단계별로 경고 셧다운 시키는 것도 방법일듯


stm32

[링크 : http://www.st.com/.../reset-and-supervisor-ics/resets-and-voltage-detectors/stm1061.html]

신고

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

avrdude -U 옵션  (0) 2017.11.13
USBasp 설치  (0) 2017.11.13
avr 저전압 감지  (0) 2017.08.11
avr bod(Brown out Detect)  (0) 2017.08.11
avr pwm 관련  (0) 2017.04.19
IAR AVR은 start section 설정이 안되나?  (0) 2017.02.17
Posted by 구차니

댓글을 달아 주세요

갑작스런 저전압이 들어왔을때 리셋하도록 하는건줄 알았는데

자세한 내용은 몰랐다가 문득 찾아 보니 좋은 자료 획득!



BOD는 MCU가 늦게 부팅이 되어야 하는, 즉 주변기기부터 리셋이 완료되고 나서 켜야 하는 시스템에서

저전압에 의한 리셋이 걸릴때도 늦게 부팅이 되어야 하니까

하드웨어 적으로 리셋을 늦게 주더라도 완전히 리셋이 걸리는게 아니니까

BOD 설정을 통해서 저전력 시에서도 주변기기 보다 늦게 켜지도록 해주는 설정


[링크 : http://cubloc.blog.me/220065808152]

신고

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

USBasp 설치  (0) 2017.11.13
avr 저전압 감지  (0) 2017.08.11
avr bod(Brown out Detect)  (0) 2017.08.11
avr pwm 관련  (0) 2017.04.19
IAR AVR은 start section 설정이 안되나?  (0) 2017.02.17
avr hex start addres 다시 설정이 가능할까?  (0) 2017.02.12
Posted by 구차니

댓글을 달아 주세요

캐리어 주파수가 도대체 머지...


[링크 : http://blog.naver.com/sigsaly/220556597729]

[링크 : http://cafe.naver.com/circuitsmanual/162950]

[링크 : http://blog.naver.com/realutopia/120013694779]

[링크 : http://blog.naver.com/ecima/80014298773]


In PWM, the frequency is usually fixed to a value. For analog servos the frequency is 30-50 Hz, and for digital servos it is 300 to 400 Hz.

[링크 : http://pcbheaven.com/wikipages/How_RC_Servos_Works/]



+

2017.05.20

캐리어는 모르겠고 PWM 주파수는 간단하게 말해서 PWM 파형에 대한 주파수 임(응?)

PWM duty 비의 정밀도랑은 상관없이 "PWM 명령어 주기"를 의미하므로

다르게 해석하면, 얼마나 명령어를 자주 보낼수 있냐에 가까운 개념

높은 응답성을 필요로 한다면 높은 PWM 주파수가 필요하고 반대급부로 pwm 하나의 명령 자체의 길이는 짧아진다.

신고

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

avr 저전압 감지  (0) 2017.08.11
avr bod(Brown out Detect)  (0) 2017.08.11
avr pwm 관련  (0) 2017.04.19
IAR AVR은 start section 설정이 안되나?  (0) 2017.02.17
avr hex start addres 다시 설정이 가능할까?  (0) 2017.02.12
우리로봇기술 사이트 폐쇄  (0) 2016.08.24
Posted by 구차니

댓글을 달아 주세요

gcc 에서는 설정이 존재하는데

영 찾아도 설정이 안보이네


[링크 : http://www.avrfreaks.net/forum/bootloader-atmega168-using-iar-compiler]


-h 옵션은 XLINK 라는 녀석에게 먹이는건데 도대체 어떻게 주는거야...

[링크 : http://www.atmel.com/Images/doc1079.pdf]

[링크 : http://supp.iar.com/FilesPublic/UPDINFO/005316/xlink.ENU.pdf]



+

_..X_FLASH_BASE 는 링커에서 넘겨주는 것 같은데

아무튼. 이 값을 기준으로 (문제는 0x000 이라는거지만) 세그먼트들의 위치가 정해지는데

문제는

-h(CODE)0-(_..X_INTVEC_SIZE-1) 

를 통해서 0x000 으로 부터 정렬하도록 되어 있어서

?FILL1 세그먼트가 생겨난다는거.. 그래서 홀로 떵그러니 0x0000 에서 존재하는데 문제가 안되려나...

신고
Posted by 구차니

댓글을 달아 주세요

대충보는데

링커에서 개별 오브젝트 파일의 상대주소나 절대주소를 변경해줄수 있는데

hex파일로 바뀐건 이미 링커의 결과물이라

임의로 변경은 힘들지도?


그럼 hex를 objdump로 object 파일로 덤프해서 다시 링커로 연결하면서 주소를 바꿀수 있을려나?

hex는 bin의 ascii 표현법이고

hex2bin으로 바이너리로 환원하고 다시 링커로 해주면 되려나


[링크 : http://www.avrfreaks.net/forum/how-link-bootloaderhex-applicationelf]


걍 찾아봐도 안나오는거 봐서는.. 그리 권장할 만한 아이디어가 아닌건가?

아니면 리버스목적이 아닌 이상 쓸모가 없는 방법이라서 그런걸까?

신고

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

avr pwm 관련  (0) 2017.04.19
IAR AVR은 start section 설정이 안되나?  (0) 2017.02.17
avr hex start addres 다시 설정이 가능할까?  (0) 2017.02.12
우리로봇기술 사이트 폐쇄  (0) 2016.08.24
avr iar __flash winavr PROGMEM  (0) 2016.07.06
부품들 정리  (0) 2016.04.16
Posted by 구차니

댓글을 달아 주세요

헐.. avrisp때문에 접속했더니 폐쇄 ㄷㄷ



구글 캐시를 보니. 어제까지는 되었던 거 같은데 비영리로 전환.


[링크 : http://webcache.googleusercontent.com/search?q=cache:sAjFbWASPycJ:www.us-technology.co.kr/+&cd=1&hl=ko&ct=clnk]


도메인은 엄청 많았는지 여러개가 연결된다.

[링크 : http://www.us-technology.co.kr/]

[링크 : http://www.mycortex.co.kr]

[링크 : http://www.myarduino.co.kr/]

[링크 : http://www.myavr.co.kr/]

[링크 : http://www.my8051.co.kr/]

[링크 : http://www.arduino-korea.com/]

[링크 : http://www.myraspberrypi.co.kr/]

[링크 : http://www.myarm.co.kr/]

[링크 : http://www.raspberrypi-korea.com/]

신고
Posted by 구차니

댓글을 달아 주세요




...strings into flash


The idea here is to override each string in the code so that it ends up in flash.


__flash char str1[] = "abcdef";

__flash char str2[] = "ghi";

__flash char __flash * pVar[] = { str1, str2 }; 


[링크 : https://www.iar.com/support/tech-notes/compiler/strings-with-iccavr-2.x/]



#include <avr/pgmspace.h>

.

.

.

unsigned char mydata[11][10] PROGMEM =

{

    {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09},

    {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13},

    {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D},

    {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27},

    {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31},

    {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B},

    {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45},

    {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F},

    {0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59},

    {0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63},

    {0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D}

}; 


[링크 : http://www.nongnu.org/avr-libc/user-manual/pgmspace.html]

신고

'embeded > AVR (ATmega/ATtiny)' 카테고리의 다른 글

avr hex start addres 다시 설정이 가능할까?  (0) 2017.02.12
우리로봇기술 사이트 폐쇄  (0) 2016.08.24
avr iar __flash winavr PROGMEM  (0) 2016.07.06
부품들 정리  (0) 2016.04.16
avr pwm timer 계산기  (0) 2016.04.14
atmega sram external  (0) 2016.04.12
Posted by 구차니

댓글을 달아 주세요