영화들을 보면, 인류가 우주로 뻗어 나가는 내용들이 많다.
머.. 아래 적게될 내용은 어쩌면 가이낙스 작품인 '건버스터'와 유사할수도 있다.
간혹 인간의 활동을 세포 수준에서 상상해 볼때가 있다.
근육의 확장과 수축을 통한 인간이라는 유기체 수준에서의 운동
근육세포와 다른 세포들의 차이점은 모르겠지만,
모든 세포에는 똑같은 전기적 자극이 흐를테고 조금더 많이 통하고 주로 통하는 곳이 신경이 되는 걸꺼고
조금더 많이 수축하고 늘어나는게 근육세포일테지만,
그 세포수준에서 외부의 자극 - 여기서는 전기가 되겠지만 - 에 의해서 움츠러 들고 늘어나는 수준의 행동이
유기체 수준에서 보여질때는 잡거나 던지거나 이런식으로 해석이 되는게 아닐까
세포수준에서 볼수 있는건 바로 옆 세포 정도?
광학탐지보다는 우주를 탐험하는데에는 X-ray등의 고주파 성분을 사용하지만
어떻게 되었던 인류에게는 매우 먼 거리일지라도, 정말 먼걸까? 라는 의문이 든다.
세포내부 넘어서, 분자 원자 수준으로 가면 그런게 아닐까?
원자 수준에서는 옆에 원자들과 멀리 떨어져있지만,
원자에서 관측해봤자 시야각제한도 있고, 멀어져봤다 옆에 세포까지 관측하기도 버겁지 않을까?
아무튼 각설하고,
인류가 다른 우주로 넘어가서까지 활동할 수 있을진 모르겠지만,
그렇게 된다면 지금의 인류와는 다른 정신적 진화로 과분하게 살지 않고
착해질지 아닐지는 모르겠지만, 지금대로라면 과연~? 이라는 생각이 든다.
현생 인류가 다른 우주에 까지 가서 자원을 채취하게 되면
(머.. 이 내용들은 영화 '아바타'를 보고 책 '가이아'를 읽고 나서 이전의 경험인 애니메이션 '건버스터'를 보고 느낀점이다)
그 우주의 자원도 소모하고 다른 곳으로 가고. 인류가 전 우주에 우글우글하는
또 다른 암(cancer)이 되지 않을까? 라는 생각이 든다.
문득, 이런 생각을 넘어서 SETI 프로젝트의 효용마저도 의구심이 든다.
정신적으로 진화를 하게 되면 가이아와의 조화를 이루며 이렇게 무리한 바벨탑을 만들어가며
우주를 휘젓고 다닐만한 '인간형' 유기생명체를 우주적 수준의 '가이아'가 만들어 내지 않을것 같다.
우리가 인지가능한 우주에서 살아있는 인간형 유기생명체는 우리뿐만이 아닐까.
우리보다 큰 인간형 생명체는 실은 우리가 살고있는 우주가 아닐까. 단지 너무 커서 우리가 관측할수 없을뿐이고
그렇고 그런게 아닐까~
# mount -t ntfs-3g /dev/sda1 /root/sda1
mount: mounting /dev/sda1 on /root/sda1 failed: No such device
# ntfs-3g /dev/sda1 /root/sda1
WARNING: Deficient Linux kernel detected. Some driver features are
not available (swap file on NTFS, boot from NTFS by LILO), and
unmount is not safe unless it's made sure the ntfs-3g process
naturally terminates after calling 'umount'. If you wish this
message to disappear then you should upgrade to at least kernel
version 2.6.20, or request help from your distribution to fix
the kernel problem. The below web page has more information:
http://ntfs-3g.org/support.html#fuse26
# mount
rootfs on / type rootfs (rw)
/dev/root on / type nfs (rw,noatime,vers=2,rsize=4096,wsize=4096,hard,nolock,proto=tcp,timeo=600,retrans=2,addr=192.168.10.10)
proc on /proc type proc (rw)
usbfs on /proc/bus/usb type usbfs (rw)
sysfs on /sys type sysfs (rw)
/dev/sda1 on /root/sda1 type fuse (rw,user_id=0,group_id=0,allow_other)
일단 사용법을 몰라서. 구글 검색하다 나온 rcan 님의 블로그 내용을 일단 복사해서 붙여넣었다.
[링크 : http://rcan.net/560]
기본적인 내용은 printf() 사용하는 것들이고, F_CPU는 cpu 클럭에 관한 선언문으로
AVRStudio wizard 사용시 클럭을 넣어주면 생성되는 변수이다.
타이머 관련 내용은 다음과 같다.
ISR(TIMER0_OVF_vect) // 8bit Timer0 에 대한 인터럽트 루틴
TCCR0; // 타이머 프리스케일러
TCNT0; // 타이머/타운터용 초기값
TIMSK; // 타이머 오버플로우시 인터럽트 발생
일단 TCCR0를 보자면
타이머/카운터 제어용 레지스터로서,
Bit 7 – FOC0: Force Output Compare
Bit 6, 3 – WGM01:0: Waveform Generation Mode
Bit 5:4 – COM01:0: Compare Match Output Mode Bit 2:0 – CS02:0: Clock Select
에 대한 설정을 하게 된다.
TCCR0 = 0x04 에서 0은 WGM01:0=0 으로 아래의 테이블을 보면(엄밀하게는 0x48 값의 위치이다) Timer/Counter Mode of Operation 가 Normal로 되어있다.
Normal Mode
The simplest mode of operation is the normal mode (WGM01:0 = 0). In this mode the counting direction is always up (incrementing), and no counter clear is performed. The counter simply
overruns when it passes its maximum 8-bit value (TOP = 0xFF) and then restarts from the bot- tom (0x00). In normal operation the Timer/Counter overflow flag (TOV0) will be set in the same
timer clock cycle as the TCNT0 becomes zero. The TOV0 flag in this case behaves like a ninth
bit, except that it is only set, not cleared. However, combined with the timer overflow interrupt
that automatically clears the TOV0 flag, the timer resolution can be increased by software. There
are no special cases to consider in the normal mode, a new counter value can be written anytime.
The output compare unit can be used to generate interrupts at some given time. Using the output
compare to generate waveforms in normal mode is not recommended, since this will occupy
too much of the CPU time.
이 모드에서는 0에서 부터 255까지(8bit 타이머) 증가하며,
별도의 카운터 값 리셋은 하지 않으나 오버플로우 된상태로 계속 더하므로,
실질적으로 255다음에 0부터 계속 증가하게 된다. (TCNT0는 수정하는 즉시 그 값부터 증가하게 됨)
TCCR0 = 0x04 에서 4는 CS02=1로 아래의 테이블을 보면 clkT0S/64 (From prescaler) 라고 되어있다. 즉, 입력 클럭을 64로 나누어서 느긋하게 증가시킨다.
그리고 TCNT0는
카운트를 위한 변수이고, 8bit timer/counter 이므로 0x00 에서 0xFF 즉, 0 에서 255 값을 가지며
255가 되면 overflow interrupt를 발생시킨후 0부터 다시 숫자를 증가시킨다. (normal mode)
그런데 이 변수에 복잡한 수식으로 값을 넣는 이유는 정확한 시간을 발생하기 위해서이다.
클럭마다 다르겠지만, 일단 클럭을 위에서 1/64로 주므로 64 clock 마다 1씩 증가된다. 16Mhz 에서 64clock 마다 인터럽트를 생성하면(F_CPU / Prescaler) 1초에 250,000 번 발생하게 되고 이 오버플로우 갯수를 세어 1000번을 묶으면 (tic_time == 1000 그리고 F_CPU / TICKS_PER_SEC / Prescaler) 1초에 250번의 오버플로우가 발생하게 된다.
그런데 오버플로우 값은 255 까지(총 256) 이므로, 0부터 증가해서 255까지 timer를 증가시키면
1초가 맞지 않게 되므로, TCNT0의 값을 OVERFLOW - 250 으로 하여 초기값을 맞춰주게 된다.
결과적으로 TCNT0의 값은 6이 된다.
(음.. OVERFLOW가 255여야 하지 않을려나..)
그리고 TIMSK는 이름대로 타이머 인터럽트 마스크 레지스터로,
Bit 1 – OCIE0: Timer/Counter0 Output Compare Match Interrupt Enable
Bit 0 – TOIE0: Timer/Counter0 Overflow Interrupt Enable