Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <util/delay.h>
- #include <avr/interrupt.h>
- #include <string.h>
- #include <stdio.h>
- #define USART_BAUD 19200ul
- #define USART_UBBR_VALUE ((14745600/(USART_BAUD<<4))-1)
- volatile uint8_t fla = 0;
- volatile uint8_t analog1 = 110;
- volatile uint8_t analog2 = 120;
- //funkcja wyboru kanalu ADC zwracajaca jego konwersje
- uint8_t read_ADC(uint8_t channel)
- {
- ADMUX &= 0xF0;
- ADMUX |= (channel & 0x07);
- ADCSRA |= (1<<ADSC);
- loop_until_bit_is_clear(ADCSRA, ADSC);
- return ADCH;
- }
- //inicjalizacja CTC na Timer2
- void CTC_Init()
- {
- TCCR2 = (1<<WGM21) | (1<<CS22);
- TIMSK = (1<<OCIE2);
- OCR2 = 114;
- }
- void USART_Init(void)
- {
- //ustawienie baud rate high zgodnie z dokumentacja
- UBRRH = (uint8_t)(USART_UBBR_VALUE>>8);
- //ustawienie baud rate low
- UBRRL = (uint8_t)USART_UBBR_VALUE;
- //wlaczenie rejestru UCSRC, bit parzystosci wylaczony, asynchroniczny, 1 bit stopu,
- //rozmiar danych 8-bitow
- UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
- //pozwol na otrzymywanie danych, wysyl danych oraz wlacz przerwanie RXC (gdy odebrano dane)
- UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
- }
- uint8_t USART_ReceiveByte()
- {
- //czekaj az dane trafia do buforu
- while((UCSRA&(1<<RXC)) == 0);
- //pobierz dane z bufora
- return UDR;
- }
- void USART_SendByte(uint8_t u8Data)
- {
- //czekaj az bufor bedzie pusty
- while((UCSRA&(1<<UDRE)) == 0);
- //wyslij
- UDR = u8Data;
- }
- int main()
- {
- DDRB = (1<<PB0);
- ADCSRA = (1<<ADEN) //ADEN=1 włączenie przetwornika ADC)
- |(1<<ADPS0) // ustawienie preskalera na 128
- |(1<<ADPS1)
- |(1<<ADPS2);
- ADMUX = (1<<REFS0) | (1<<ADLAR); // REFS1:0: wybór napięcia odniesienia ADC, 8 bitów high z ADC
- CTC_Init();
- USART_Init();
- sei();
- while(1)
- {
- analog1 = read_ADC(0x4);
- analog2 = read_ADC(0x5);
- }
- }
- //funkcja wysylajaca odczytane napiecia z czestotliwoscia 2kH
- ISR(TIMER2_COMP_vect)
- {
- USART_SendByte(analog1);
- USART_SendByte(analog2);
- USART_SendByte('\r');
- }
Add Comment
Please, Sign In to add comment