검색결과 리스트
글
하나로 공유기 제한 거는가??
지난 주말에 갑자기 공유기가 작동이 안됨.
내가 가진 공유기는, Fonera와 Linksys WRT54G v4.
둘다 DD-WRT 핵펌을 쓰고 있다.
PC를 바로 연결할 경우의 인터넷을 문제가 없었으며,
단지 공유기만이 IP를 제대로 받지 못하는 문제가 있었다.
사실 주말동안 깨작깨작 해결해 보려고 했으나 하지 못하였다.
토요일 잠시 되는 듯 하다가, 일요일 다시 해 보니 안되었다.
아마도 인터넷 시스템 업그래이드가 이 시점이었나 보다.
회사에 출근하여,
신입사원의 컴퓨터 이름을 보고 필터링하는 것이 아니냐는 의견에 따라.
공유기의 MAC Cloning을 적용하여 보았더니..
공유기 작동!!!.
결국.. 단지 하나로에서 MAC을 보고 IP를 안주는 것 같다.
다른 지역에서는 잘 된다고 하니..
아마도 내가사는 지역에서 처음으로 제한을 거는 것 같다.
설정
트랙백
댓글
글
콩나물 키우기.
콩나물 키우기는 여름에 어렵다는데..
이유는 온도이다.
온도는 약 20도를 유지해야 잘 자란다고 한다.
여름에 키우려면 온도유지가 관건!.
그래서 통풍이 잘 되는 곳에서 키워야 한다고 하는데....
이를 위해서 작은 팬을 사용하는 것도 좋은 것 같다.
위쪽이나 아래쪽에서 강제로 팬을 돌려서 공기를 돌려주는 방식.
또 생각할 점이라면,
물을 준 후, 완전히 건조되는 것을 방지하기 위하여,
바닦에 부직포같이 물을 잡고 있을 수 있는 천같은 것을 깔아주는 것도 좋을 듯..
물은 자동으로 주는 것이 좋을 것 같다.
연구에 의하면,
처음 3일은 3시간마다 3분씩주고,
그 다음 3일은 4시간마다 3분씩 혹은 2시간마다 3분씩 주는 방법이 좋다고 한다.
2~4시간마다 한번씩 줘야 하므로, 새벽에 일어나서 주지 않거나,
맞벌이라면 자동으로 물주는 기계가 필수사항임!
---->이거 장사 되겠다. 맞벌이 부부를 위한 콩나물 키우게.. ;)
설정
트랙백
댓글
글
GCC-AVR library를 이용한, standard IO test..
GCC-AVR의 기본 library에는 printf나 scanf류의 함수들이 있다.
이들 함수는 putchar와 getchar만 define해 주면 바로 사용할 수 있다.
예제:
=========
#include <stdint.h>
#include <stdio.h>
#include <avr/io.h>
#include <avr/delay.h>
#define RX_BUFSIZE 80
void uart_init(void);
int uart_putchar(char c, FILE *stream);
int uart_getchar(FILE *stream);
FILE uart_str = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW);
int
main(void)
{
// unsigned int addr;
unsigned int value;
uint8_t* addr;
char buf[80];
uart_init();
stderr = stdout = stdin = &uart_str;
printf("SKA_MON start\n");
while(1)
{
printf("$>");
if (fgets(buf, sizeof(buf) - 1, stdin) == NULL)break;
switch (tolower(buf[0]))
{
default:
printf("Unknown command: %s\n", buf);
break;
case '\n':
break;
case 'w':
if (sscanf(buf, "%*c %x %x", &addr, &value) > 0)
{
printf( "Write 0x%x, 0x%x\n", addr, value);
*addr = (uint8_t)value;
}
else printf("sscanf() failed\n");
break;
case 'r':
if (sscanf(buf, "%*c %x", &addr) > 0)
{
printf("value at 0x%x = 0x%x\n", addr, *addr);
}
else printf("sscanf() failed\n");
break;
}
}
return 0;
}
/*
* Initialize the UART to 9600 Bd, tx/rx, 8N1.
*/
void
uart_init(void)
{
UBRRL =25; // baud rate..
UCSRA = _BV(U2X);
UCSRB = _BV(TXEN) | _BV(RXEN); // enable uart tx & tx_int & rx & rx_int
}
/*
* Send character c down the UART Tx, wait until tx holding register
* is empty.
*/
int
uart_putchar(char c, FILE *stream)
{
if (c == '\a')
{
fputs("*ring*\n", stderr);
return 0;
}
if (c == '\n') uart_putchar('\r', stream);
loop_until_bit_is_set(UCSRA, UDRE);
UDR = c;
return 0;
}
// getchar는 echo때문에 조금 복잡하다.
int
uart_getchar(FILE *stream)
{
uint8_t c;
char *cp, *cp2;
static char b[RX_BUFSIZE];
static char *rxp;
if (rxp == 0)
for (cp = b;;)
{
loop_until_bit_is_set(UCSRA, RXC);
if (UCSRA & _BV(FE))
return _FDEV_EOF;
if (UCSRA & _BV(DOR))
return _FDEV_ERR;
c = UDR;
/* behaviour similar to Unix stty ICRNL */
if (c == '\r') c = '\n';
if (c == '\n')
{
*cp = c;
uart_putchar(c, stream);
rxp = b;
break;
}
else if (c == '\t')
c = ' ';
if ((c >= (uint8_t)' ' && c <= (uint8_t)'\x7e') ||
c >= (uint8_t)'\xa0')
{
if (cp == b + RX_BUFSIZE - 1)
uart_putchar('\a', stream);
else
{
*cp++ = c;
uart_putchar(c, stream);
}
continue;
}
switch (c)
{
case 'c' & 0x1f:
return -1;
case '\b':
case '\x7f':
if (cp > b)
{
uart_putchar('\b', stream);
uart_putchar(' ', stream);
uart_putchar('\b', stream);
cp--;
}
break;
case 'r' & 0x1f:
uart_putchar('\r', stream);
for (cp2 = b; cp2 < cp; cp2++)
uart_putchar(*cp2, stream);
break;
case 'u' & 0x1f:
while (cp > b)
{
uart_putchar('\b', stream);
uart_putchar(' ', stream);
uart_putchar('\b', stream);
cp--;
}
break;
case 'w' & 0x1f:
while (cp > b && cp[-1] != ' ')
{
uart_putchar('\b', stream);
uart_putchar(' ', stream);
uart_putchar('\b', stream);
cp--;
}
break;
}
}
c = *rxp++;
if (c == '\n')
rxp = 0;
return c;
}
RECENT COMMENT