<html>
<head>
<meta content="text/html; charset=ISO-8859-2"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
chyba byla <small>ISR(USART_RXC_vect) místo ISR(USART__RXC_vect),<br>
zajímavé, že kompilátor na to nic neřekl... <br>
<br>
PeTr<br>
-- <br>
<br>
</small>Dne 1.5.2012 9:53, Petr T napsal(a):
<blockquote cite="mid:4F9F9668.6070100@atlas.cz" type="cite">
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-2">
<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<<pin //nastav bit<br>
#define clrb(port,pin) port &= ~(1<<pin) //nuluj
bit<br>
#define negb(port,pin) port ^= 1<<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 >> 1 = 20ms, 4 = 100ms, 24 = 500ms<br>
if (ixTmr0 > 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 & (1<<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<<URSEL)|(3<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>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
</body>
</html>