- 3D-Druck Einstieg und Tipps         
RSS-Feed anzeigen

fugitivus

Frage zu Software Uart mit TimerOverflow Interrupt

Bewerten
habe den timer auf 600Hz warte jetzt mit einem flag die halbe bitzeit dennoch kommt nur müll raus... was mach ich falsch ?

Code:
#include <avr/io.h>
#include <stdlib.h>
#include <avr/interrupt.h>
#include <util/delay.h>

#include "init.h"
#include "lcd.h"


//SoftUART PINS
#define RXPIN 2
#define RXINT INT0
#define UARTDDR DDRD
#define UARTPIN PIND
#define UARTPORT PORTD
#define T0REL 152

char iOut[20];

unsigned char bitFlag = 0;
unsigned char bitCnt = 0;
unsigned char udr = 0;


void cfgInt0(void)
{
    MCUCR |= (1<<ISC01);        //INT0 falling edge
    GICR |= (1<<INT0);            //INT0 interrupt enable
}

void cfgTimer0(void)
{
    TCNT0 = T0REL;
    TCCR0 |= (1<<CS02);
    //TIMSK |=(1<<TOIE0);
}

void cfgSoftUart(void)
{
    UARTDDR &=~ (1<<RXPIN);        //RX Pin als Input
    UARTPORT &=~ (1<<RXPIN);    //RX Pin auf 0

    cfgInt0();                    //Software Uart Interrupt
    cfgTimer0();                //Software Uart Timer
}


int main(void)
{
    cfgPorts();
    cfgSoftUart();
    cfgLcd(LCD_ON_CURSOR_OFF);
    lcdCls();
    enableInterrupts();

    _delay_ms(200);
    lcdPrint("Software Uart",1,1);

    while(1)

    {    
        itoa(udr,iOut,10);
        lcdPrint("                    ",1,3);
        lcdPrint(iOut,1,3);
        itoa(udr,iOut,2);
        lcdPrint(iOut,5,3);
        
        _delay_ms(1000);
    }
      return 0;
}


ISR(INT0_vect)
{
    GICR &=~ (1<<INT0);
    TCNT0 = T0REL;
    TIMSK |=(1<<TOIE0);
}

ISR(TIMER0_OVF_vect)
{
    TCNT0 = T0REL;
    if(bitFlag == 0)
    {
        bitFlag = 1;
    }else 
    {
        bitFlag = 0;
        if(!(PIND & (1 << PD2)))
        {
            udr &=~ (1<<bitCnt++);
        }else
        {
            udr |= (1<<bitCnt++);
        }

        if(bitCnt == 7)
        {
            bitCnt = 0;
            TIMSK &=~(1<<TOIE0);
            GIMSK |= (1<<INT0);
        }
    }
}
mfg Fugitivus

"Frage zu Software Uart mit TimerOverflow Interrupt" bei Twitter speichern "Frage zu Software Uart mit TimerOverflow Interrupt" bei Facebook speichern "Frage zu Software Uart mit TimerOverflow Interrupt" bei Mister Wong speichern "Frage zu Software Uart mit TimerOverflow Interrupt" bei YiGG.de speichern "Frage zu Software Uart mit TimerOverflow Interrupt" bei Google speichern "Frage zu Software Uart mit TimerOverflow Interrupt" bei del.icio.us speichern "Frage zu Software Uart mit TimerOverflow Interrupt" bei Webnews speichern "Frage zu Software Uart mit TimerOverflow Interrupt" bei My Yahoo speichern

Stichworte: - Stichworte bearbeiten
Kategorien
Kategorielos

Kommentare


Labornetzteil AliExpress