Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * GccApplication3.c
- *
- * Created: 13.03.2018 15:41:25
- * Author : nicx321
- */
- #include <avr/interrupt.h>
- #define F_CPU 3333333
- #define USART0_BAUD_RATE(BAUD_RATE) ((float)F_CPU * 64 / (16 * (float)BAUD_RATE))
- #include <avr/io.h>
- #include <util/delay.h>
- void SendChr(char X){
- while(!(USART0.STATUS & USART_DREIF_bm)){}
- USART0.TXDATAL = X;
- }
- /*
- void SendStr(char *str){
- int i = 0;
- while(str[i] != '\0' && str[i] != 13){
- while(!(USART0.STATUS & USART_DREIF_bm)){}
- USART0.TXDATAL = str[i];
- i++;
- }
- }
- */
- char USART_readChr(){
- while(!(USART0.STATUS & USART_RXCIF_bm));
- return USART0.RXDATAL;
- }
- void USART_read(char *cp)
- {
- int state = 0;
- if((USART0.STATUS & USART_RXCIF_bm))
- {
- while ((USART0.STATUS & USART_RXCIF_bm)){
- cp[state] = USART0.RXDATAL;
- state++;
- }
- cp[state+1]=0;
- }
- }
- void InitUart(){
- PORTB.DIRSET = PIN2_bm; // RX pin as output
- PORTB.OUTCLR = PIN2_bm; //
- PORTB.DIRCLR = PIN3_bm; // TX pin set as input
- PORTB_PIN3CTRL &= ~PORT_PULLUPEN_bm; // Leave it as pulled-off
- USART0.BAUD = (uint16_t)USART0_BAUD_RATE(9600);
- USART0.CTRLB = 0 << USART_MPCM_bp /* Multi-processor Communication Mode: disabled */
- | 0 << USART_ODME_bp /* Open Drain Mode Enable: disabled */
- | 1 << USART_RXEN_bp /* Reciever enable: enabled */
- | USART_RXMODE_NORMAL_gc /* Normal mode */
- | 0 << USART_SFDEN_bp /* Start Frame Detection Enable: disabled */
- | 1 << USART_TXEN_bp; /* Transmitter Enable: enabled */
- USART0.CTRLA |= 0x80;
- }
- void initDac43(){
- VREF.CTRLA |= 0b00000011;
- VREF.CTRLA &= 0b11111011;
- DAC0.DATA = 0;
- DAC0.CTRLA |= 0b11000001;
- }
- int main(void)
- {
- initDac43();
- PORTC.DIRSET = 1;
- InitUart();
- sei();
- while(1){}
- }
- ISR(USART0_RXC_vect){
- cli();
- char X = USART_readChr();
- DAC0.DATA = X;
- SendChr(X);
- sei();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement