Witam.
Mam oto tutaj taki programik, który imituje generator fali prosotkątnej o regulowanej częstotliwości i jitter, jednak nie jest to tu istotne.
Korzystając z rejestru porównań i pracy licznika w trybie CTC generowany jest sygnał prostokątny na wyjściu OC0A, czyli na 3 trzecim pinie portu B, czyli PB2.
Jednak niezbędnym dla mnie jest (bo mam już gotową płytkę z wyprowadzeniami itp id), żeby ten sygnał znalazł się na pierwszym pinie portu D czyli PD0, czyli chodzi mi o przepisanie stanu portu PB2 na port PD0. Trochę już nad tym główkuję i mi nie wychodzi.
Drodzy użytkownicy forum macie na to jakiś prosty sposób?
Oto kod:
Bardzo serdecznie z góry dziękuję za wszelkie sugestie.
Mam oto tutaj taki programik, który imituje generator fali prosotkątnej o regulowanej częstotliwości i jitter, jednak nie jest to tu istotne.
Korzystając z rejestru porównań i pracy licznika w trybie CTC generowany jest sygnał prostokątny na wyjściu OC0A, czyli na 3 trzecim pinie portu B, czyli PB2.
Jednak niezbędnym dla mnie jest (bo mam już gotową płytkę z wyprowadzeniami itp id), żeby ten sygnał znalazł się na pierwszym pinie portu D czyli PD0, czyli chodzi mi o przepisanie stanu portu PB2 na port PD0. Trochę już nad tym główkuję i mi nie wychodzi.
Drodzy użytkownicy forum macie na to jakiś prosty sposób?
Oto kod:
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdlib.h>
volatile int jitter=1,freq=0;
SIGNAL(SIG_TIMER0_COMPA)
{
OCR0A=rand()%jitter+freq+30;
}
int main (void)
{
DDRD = 0x01;
DDRB=0x04;
PORTB=0x00;
PORTD = 0x0C;
sei();
TCCR0A=0x42;
TCCR0B=0x81;
OCR0A=30;
TIMSK=0x01;
while(1){
while (!(PIND & 0x08))
{
jitter++;
if (jitter>25) jitter=1;
while (!(PIND & 0x08)) {}
}
while (!(PIND & 0x04))
{
freq=freq+5;
if (freq>101) freq=0;
while (!(PIND & 0x04)) {}
}
}
return(0);
}Bardzo serdecznie z góry dziękuję za wszelkie sugestie.
