Atmega8A UART Rx problém - vyřešeno

Petr T p.tr na atlas.cz
Úterý Květen 1 12:30:41 CEST 2012


chyba byla ISR(USART_RXC_vect) místo ISR(USART__RXC_vect),
zajímavé, že kompilátor na to nic neřekl...

PeTr
-- 

Dne 1.5.2012 9:53, Petr T napsal(a):
> Zdravím,
>
> prosím o radu...
> Pokouším se rozchodit komunikaci mezi Atmega8A a Bluetooth modulem.
> Vytvořil jsem si jednoduchý program v AVR Studiu a mám problém 
> přijmout data do procesoru...
> 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).
>
> Má být nějak speciálně ošetřen vstup RX u procesoru?
> Už jakmile na něj přivedu L úroveň, tak se to sekne...
>
> Přikládám i testovaci SW...
>
> Díky za případnou ochotu pomoci
>
> PeTr
>
> /*
>  * UART_TEST1.cpp
> */
>
> #include "avr\io.h"         // definiční soubor pro mikrokontrolér
> #include "avr\interrupt.h"    // přerušení mikrokontroléru
> #include "avr\sfr_defs.h"
> //*******************************************************************************************
> //  MOJE UPRAVY
> //-------------------------------------------------------------------------------------------
> //
> #define setb(port,pin)    port |= 1<<pin    //nastav bit
> #define clrb(port,pin)    port &= ~(1<<pin) //nuluj bit
> #define negb(port,pin)    port ^= 1<<pin    //neguj bit
>
> //***********************************************************************************
>
> volatile unsigned char prijem = 0;
> volatile unsigned char rxData = 0;
>
> volatile unsigned char ixTmr0 = 0;
>
> volatile unsigned char fTmr0 = 0;
>
> volatile unsigned char fMerSpeed = 0;
>
> volatile unsigned char prom1;
>
> //---------------------------------------------------
> //Preruseni pri prijmu dat seriovou linkou
> ISR(USART_RXC_vect)
> {
>   rxData = UDR;
>   prijem = 1;
>   negb(PORTD,6);
> }
>
> //---------------------------------------------------
> // Přerušení při přetečení T/T0
> ISR(TIMER0_OVF_vect)
> {
>     TCNT0 = 112;
>     ixTmr0++;
>     // ixTmr0 >> 1 = 20ms, 4 = 100ms, 24 = 500ms
>     if (ixTmr0 > 49)
>     {
>         ixTmr0 = 0;
>         fTmr0 = 1;
>         negb(PORTB,0);
>     }
> }
>
> // *** Zašle data na UART
> void sendUart(unsigned char value)
> {
>     while(!(UCSRA & (1<<UDRE)));
>     UDR = value;
> }
>
> //---------------------------------------------------
> int main( void )
> {
>
> // ******Nastaveni portu******
> // DDR: 0 - vstup, 1 - výstup
> // PORT: 0 - "L"/Hi-Z , 1 - "H"/Pull-up
>
> DDRB = 0b00000001;
> PORTB = 0b00000000;
> DDRC = 0b00000000;
> PORTC = 0b00111110;
> DDRD = 0b11000010;
> PORTD = 0b00011100;
>
> // ********Nastaveni seriove linky********
> // USART: Příjem On, Vysílání On
> // 8 bitů, Parita Žádná, StopBity Jeden
> // Přenosová rychlost 9,6kBaut
> // Přerušení při odeslání bajtu: Off
> // Přerušení při příjmu bajtu: On
> // Přerušení při Data Register Empty: Off
>
> UCSRC = (1<<URSEL)|(3<UCSZ0);
> UCSRB = 0b10011000;  // TX a RX
>
> UBRRH = 0b10000110;
> UBRRL = 47;        //Bautrate 9,6kBaut
>
> // ********Nastaveni čítačů a časovačů********
>
> // *******Čítač časovač0*******
> // Vstupní signál: CK/1024 (f=7,2kHz, T=138,889us)
> // Přerušení při přetečení T/T0
>
>
> // *******Čítač časovač1*******
> // Vstupní signál: Extertní vstup T1, sestupná hrana
> // Mód časovače: Normální čítání
> // Výstup OC1A odpojen
> // Výstup OC1B odpojen
>
> TCCR0 = 0b00000101;
> TIMSK = 0b00000001;
> TCCR1B = 0b00000110;
> TCCR1A = 0b00000000;
> TCNT0 = 112;
> TCNT1 = 0;
> ICR1 = 0;
> OCR1A = 0;
> OCR1B = 0;
>
> sei();        // Zapnutí všech přerušení
>
> while(1)
>  {
>     if (prijem == 1)
>     {
>         prijem = 0;
>         sendUart(51);
>         sendUart(rxData);  // vrátí přijatý byte
>     }
>     if (fTmr0 == 1)
>     {
>         fTmr0 = 0;
>         sendUart(TCNT1H);  // odešle stav čítače 1
>         sendUart(TCNT1L);
>     }
>  }
> return (1);
> }
>
>
>
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20120501/12521d5a/attachment.htm>


Další informace o konferenci Hw-list