Witam
Chciałem zrobić cyfrowe sterowanie głośnością w oparciu o układ DS1806. Nie mogę go rozgryźć. Sterowanie wprowadzaniem danych podpiąłem do portów ATmegi8 poprzez rezystory 20k w kolejności : Din=PC2, CLK=PC3, RST=PC4.
Po włączeniu zasilania DS1806 ma same zera rejestrach a ja chciałbym (w ramach dobrego początku) wpisać same jedynki w przerwaniu INT0.
Napisałem program, który niestety nie wywołuje pożądanego skutku :
Co mogę robić źle, proszę o podpowiedź.
Pozdrawiam
Chciałem zrobić cyfrowe sterowanie głośnością w oparciu o układ DS1806. Nie mogę go rozgryźć. Sterowanie wprowadzaniem danych podpiąłem do portów ATmegi8 poprzez rezystory 20k w kolejności : Din=PC2, CLK=PC3, RST=PC4.
Po włączeniu zasilania DS1806 ma same zera rejestrach a ja chciałbym (w ramach dobrego początku) wpisać same jedynki w przerwaniu INT0.
Napisałem program, który niestety nie wywołuje pożądanego skutku :
#define F_CPU 1000000UL
#include <avr/io.h>
#include<util/delay.h>
#include<avr/interrupt.h>
void inicjalizacja(void);
int main(void)
{
inicjalizacja();
while(1){
}
return 0;
}
ISR(INT0_vect){
_delay_ms(30);
//ustawienie resetu w stan wysoki
uint8_t licznik1=0;
uint8_t licznik2=0;
PORTB|=_BV(PB0);
//RST w stan wysoki
PORTC|=_BV(PC4);
_delay_us(50);
do{
do{
PORTC|=_BV(PC3);
_delay_us(20);
PORTC|=_BV(PC2);
licznik1=licznik1+1;
PORTC&=~_BV(PC3);
_delay_us(20);
}while(licznik1<=7);
licznik1=0;
licznik2=licznik2+1;
}while(licznik2<=6);
licznik2=0;
PORTC&=~_BV(PC4);
PORTB&=~_BV(PB0);
}
void inicjalizacja(void){
/*ustawienie portów do komunikacji*/
/*dioda PB0 sygnalizuje transfer bitow*/
DDRB|=_BV(PB0);
PORTB&=~_BV(PB0);
DDRC|=_BV(PC2);
DDRC|=_BV(PC3);
DDRC|=_BV(PC4);
PORTC&=~_BV(PC2);
PORTC&=~_BV(PC3);
PORTC&=~_BV(PC4);
/********************************************/
/*ustawienie przerwania INT0
aktywne zboczem opadającym*/
DDRD&=_BV(PD2);
PORTD|=_BV(PD2);
sei();
MCUCR|=_BV(ISC01);
MCUCR&=~_BV(ISC00);
GICR|=_BV(INT0);
/*koniec ustawiania przerwania int0*/
/********************************************/
}
Co mogę robić źle, proszę o podpowiedź.
Pozdrawiam