BASIC4MCU | 질문게시판 | 컴퓨터(AVR 오류) 풍수지리설
페이지 정보
작성자 master 작성일2018-09-05 11:45 조회7,588회 댓글0건본문
안녕하세요 특성화고 학생인데요 학교에서 ATMEGA128을 사용해서 km7092라는 산업용 mp3모듈을 외부 인터럽트를 사용해서 제어하려고 했습니다. 그런데 이게 LED를 이용해서 테스트를 할 때는 말을 잘듣더니 모듈에 연결 하자마자 이게 말을 안듣는 겁니다. 근데 저희 학교에 실이 2개가 있는데 첫번째 실은 잘 된다 하더라고요 저희 실은 첫번째 실에서 구동시킨애가 와서 똑같이 소스를 짜도 이상하게도 동작이 안됩니다;;;; 질문은 이렇습니다
1. 컴퓨터 문제(학교 공용PC임)로 인해서 atmega128이 제대로 동작 안될 수도 있습니까(컴퓨터 풍수지리설)?
2.
제가 원하는 동작은
SW1을 누르면 노래가 바뀌지만 노래는 나오지 않고
SW2을 누르면 노래가 나오게 하는 동작을 원했습니다.
제가 틀리게 한거 있으면 좀 알려주십쇼 ㅜㅜㅜㅜ
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>volatile int pos;
ISR(INT0_vect) //speaker +1 스위치
{
pos++;if(pos>3) pos=1;
}
ISR(INT1_vect)
{
PORTA = pos;
if(pos==3) PORTA=0x04;}
int main()
{
DDRA = 0xFF;
EIMSK = 0x03;
EICRA = 0x0a;
EIFR=0xFF;
sei();while(1)
{
}
}
제가 스위치로 mp3 모듈을 제어하려고 했는데 왜 안되는지 모르겄습니다 ㅜㅜ 제가 하드웨어적으로 연결을 잘못한걸 까요?
http://kisansystem.kr/index/shop/item.php?it_id=1274945591 산업용 모듈에 대한 설명이 있습니다.
//
실력이 부족해서 모르면 귀신 씌운 것이라고 믿을 수도 있고알면 별 것 아니죠40여년동안 이 분야 전공하면서 풍수지리설(?) 같은 것을 본 적이 없습니다.다 내(실력이 부족한) 탓이죠//#define F_CPU 16000000UL#include <avr/io.h>#include <util/delay.h>#include <avr/interrupt.h>//volatile char pos=0;//INT0_vect(){ if(++pos>3)pos=1; } //speaker +1 스위치//ISR(INT1_vect){ if(pos==3)PORTA=4; else PORTA=pos; }//int main(){DDRA=0xFF;PORTD=3;EICRA=0xAA; EIFR=0xFF; EIMSK=3; sei();while(1){}}스위치에 핀 내부 풀업저항 달았습니다.핀 외부에도 10K 풀업저항 및 채터링을 방지하기 위한 104(0.1uF) 커패시트를 사용하는 것이 좋습니다.텍트 스위치인 경우에는 10K 풀업저항 사용 시 0.1uF~1uF 정도의 커패시터면 채터링이 잡히지만일반 푸쉬 스위치 경우에는 채터링이 심하므로 훨씬 큰 용량의 커패시터를 사용해야 합니다.//풀업저항은 반드시 있어야하고외부 인터럽트 1은 pos를 PORTA로 출력하는 것 밖에 없으니 채터링에 의한 오동작을 하지 않습니다.외부 인터럽트 0만 신경쓰면 됩니다.채터링 방지용 딜레이를 추가 해보죠//#define F_CPU 16000000UL#include <avr/io.h>#include <util/delay.h>#include <avr/interrupt.h>//volatile char pos=0;//INT0_vect(){ if(++pos>3)pos=1;_delay_ms(100); EIFR=1; } //speaker +1 스위치//ISR(INT1_vect){ if(pos==3)PORTA=4; else PORTA=pos; }//int main(){DDRA=0xFF;PORTD=3;EICRA=0xAA; EIFR=0xFF; EIMSK=3; sei();while(1){}}
댓글 0
조회수 7,588등록된 댓글이 없습니다.