<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-2">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-text-html" lang="x-central-euro"> Zdravím,<br>
      <br>
      prosím o radu...<br>
      Pokouším se rozchodit komunikaci mezi Atmega8A a Bluetooth
      modulem.<br>
      Vytvořil jsem si jednoduchý program v AVR Studiu a mám problém
      přijmout data do procesoru...<br>
      Odchozí data fungují normálně, ale jakmile pošlu byte do procesoru
      tak se to někde sekne a procesor přestane reagovat (přestane
      blikat LED, která je v timeru).<br>
      <br>
      Má být nějak speciálně ošetřen vstup RX u procesoru?<br>
      Už jakmile na něj přivedu L úroveň, tak se to sekne...<br>
      <br>
      Přikládám i testovaci SW...<br>
      <br>
      Díky za případnou ochotu pomoci<br>
      <br>
      PeTr<br>
      <br>
      <small>/*<br>
         * UART_TEST1.cpp<br>
        */ <br>
        <br>
        #include "avr\io.h"         // definiční soubor pro
        mikrokontrolér<br>
        #include "avr\interrupt.h"    // přerušení mikrokontroléru<br>
        #include "avr\sfr_defs.h"<br>
//*******************************************************************************************<br>
        //  MOJE UPRAVY<br>
//-------------------------------------------------------------------------------------------<br>
        //<br>
        #define setb(port,pin)    port |= 1&lt;&lt;pin    //nastav bit<br>
        #define clrb(port,pin)    port &amp;= ~(1&lt;&lt;pin) //nuluj
        bit<br>
        #define negb(port,pin)    port ^= 1&lt;&lt;pin    //neguj bit<br>
        <br>
//***********************************************************************************<br>
        <br>
        volatile unsigned char prijem = 0;<br>
        volatile unsigned char rxData = 0;<br>
        <br>
        volatile unsigned char ixTmr0 = 0;<br>
        <br>
        volatile unsigned char fTmr0 = 0;<br>
        <br>
        volatile unsigned char fMerSpeed = 0;<br>
        <br>
        volatile unsigned char prom1;<br>
        <br>
        //---------------------------------------------------<br>
        //Preruseni pri prijmu dat seriovou linkou  <br>
        ISR(USART_RXC_vect)<br>
        {<br>
          rxData = UDR;<br>
          prijem = 1;<br>
          negb(PORTD,6);<br>
        }<br>
        <br>
        //---------------------------------------------------<br>
        // Přerušení při přetečení T/T0<br>
        ISR(TIMER0_OVF_vect)<br>
        {<br>
            TCNT0 = 112;<br>
            ixTmr0++;<br>
            // ixTmr0 &gt;&gt; 1 = 20ms, 4 = 100ms, 24 = 500ms<br>
            if (ixTmr0 &gt; 49)<br>
            {<br>
                ixTmr0 = 0;<br>
                fTmr0 = 1;<br>
                negb(PORTB,0);<br>
            }<br>
        }<br>
        <br>
        // *** Zašle data na UART<br>
        void sendUart(unsigned char value)<br>
        {<br>
            while(!(UCSRA &amp; (1&lt;&lt;UDRE)));<br>
            UDR = value;<br>
        }<br>
        <br>
        //---------------------------------------------------<br>
        int main( void )<br>
        {<br>
        <br>
        // ******Nastaveni portu******<br>
        // DDR: 0 - vstup, 1 - výstup<br>
        // PORT: 0 - "L"/Hi-Z , 1 - "H"/Pull-up<br>
        <br>
        DDRB = 0b00000001;<br>
        PORTB = 0b00000000;<br>
        DDRC = 0b00000000;<br>
        PORTC = 0b00111110;<br>
        DDRD = 0b11000010;<br>
        PORTD = 0b00011100;<br>
        <br>
        // ********Nastaveni seriove linky******** <br>
        // USART: Příjem On, Vysílání On <br>
        // 8 bitů, Parita Žádná, StopBity Jeden <br>
        // Přenosová rychlost 9,6kBaut<br>
        // Přerušení při odeslání bajtu: Off<br>
        // Přerušení při příjmu bajtu: On<br>
        // Přerušení při Data Register Empty: Off<br>
        <br>
        UCSRC = (1&lt;&lt;URSEL)|(3&lt;UCSZ0);<br>
        UCSRB = 0b10011000;  // TX a RX<br>
        <br>
        UBRRH = 0b10000110;<br>
        UBRRL = 47;        //Bautrate 9,6kBaut<br>
        <br>
        // ********Nastaveni čítačů a časovačů********<br>
        <br>
        // *******Čítač časovač0*******<br>
        // Vstupní signál: CK/1024 (f=7,2kHz, T=138,889us)<br>
        // Přerušení při přetečení T/T0<br>
        <br>
        <br>
        // *******Čítač časovač1*******<br>
        // Vstupní signál: Extertní vstup T1, sestupná hrana<br>
        // Mód časovače: Normální čítání<br>
        // Výstup OC1A odpojen<br>
        // Výstup OC1B odpojen<br>
        <br>
        TCCR0 = 0b00000101;<br>
        TIMSK = 0b00000001;<br>
        TCCR1B = 0b00000110;<br>
        TCCR1A = 0b00000000;<br>
        TCNT0 = 112;<br>
        TCNT1 = 0;<br>
        ICR1 = 0;<br>
        OCR1A = 0;<br>
        OCR1B = 0;<br>
        <br>
        sei();        // Zapnutí všech přerušení<br>
        <br>
        while(1)<br>
         {<br>
            if (prijem == 1)<br>
            {<br>
                prijem = 0;<br>
                sendUart(51);<br>
                sendUart(rxData);  // vrátí přijatý byte<br>
            }<br>
            if (fTmr0 == 1)<br>
            {<br>
                fTmr0 = 0;<br>
                sendUart(TCNT1H);  // odešle stav čítače 1<br>
                sendUart(TCNT1L);<br>
            }<br>
         }<br>
        return (1);<br>
        }<br>
        <br>
        <br>
      </small><br>
      <br>
    </div>
  </body>
</html>