Witam wszystkich, mam do Was prosbe, zamiesiclem w zalacznikach zgodnie z ich nazwa pliki z WinAVR, a dokladnie obsluge uarta dla ATMegi128...czy ktos moglby mi powiedziec, czy rzeczywiscie ten kod wszysztko co robi to po podlaczniu do procka zasilania wysyla na port kolejna wartosc...tzn to co jest w petli w main'ie?? Pod spodem zamieszczam sam kod obslugi...
Moj problem polega na tym ze podlaczam atmege poprzez modul konwertera na FT232BM i za cholere mi nie chce dzialac...jezeli bylbym pewny ze procek dziala prawidlowo, to moge szukac gdzie indziej przyczyn...
Atmega ma nastepujace paramtery:
1. rezonator 16MHz i mam ustawione takie fusebity:
JTAG Interface Enabled
BootFlash size=4096...
Boot reset vector...
Brown-out detection level at VCC=4.0V
Brown-out detection enabled
CKOPT fuse
Ext. Crystal/resonator High Freq; Start-up 16K CK + 4ms
2. Z LockBits mam ustawione tylko:
Mode 1 - No memory Lock
App. Prot. Mode 1 No lock SPM and LPM in App. Section
Loader prot. mode 1 no lock...
...ponizej kod obslugi uarta
...dziekuje za jakakolwiek pomoc...
pzdr
Moj problem polega na tym ze podlaczam atmege poprzez modul konwertera na FT232BM i za cholere mi nie chce dzialac...jezeli bylbym pewny ze procek dziala prawidlowo, to moge szukac gdzie indziej przyczyn...
Atmega ma nastepujace paramtery:
1. rezonator 16MHz i mam ustawione takie fusebity:
JTAG Interface Enabled
BootFlash size=4096...
Boot reset vector...
Brown-out detection level at VCC=4.0V
Brown-out detection enabled
CKOPT fuse
Ext. Crystal/resonator High Freq; Start-up 16K CK + 4ms
2. Z LockBits mam ustawione tylko:
Mode 1 - No memory Lock
App. Prot. Mode 1 No lock SPM and LPM in App. Section
Loader prot. mode 1 no lock...
...ponizej kod obslugi uarta
#include <avr/io.h>
#include <stdlib.h>
#define FREQUENY_CPU 16000000 // MCU clock
#define CYCLES_PER_US ((FREQUENY_CPU+500000)/1000000) // cpu cycles per microsecond
#define UART_BAUD 115200ul // conection speed
#define UART_CONST (FREQUENY_CPU/(16ul*UART_BAUD)-1)
void USART_Init(unsigned int baud){
/* Set baud rate */
UBRR0H = (unsigned char)(baud >>8);
UBRR0L = (unsigned char)baud;
/* Enable receiver and transmitter */
UCSR0B = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8 data bit, 2 stop bit */
UCSR0C = (1<<USBS)|(3<<UCSZ0);
}
void USART_Transmit(unsigned char data){
/* Wait for empty transmit buffer... */
while( !(UCSR0A & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR0 = data;
}
unsigned char USART_Receive(void){
/* Wait for data to be received... */
while( !(UCSR0A & (1<<RXC)) )
;
/* Get and return received data from buffer */
return UDR0;
}
void USART_Flush(void){
unsigned char dummy;
while ( UCSR0A & (1<<RXC) )
dummy = UDR0;
}
int main (void){
register int i;
/* Initialization USART */
USART_Init(7);
for(i=0;i<255;i++){
USART_Transmit(i);
}
while(1){
}
return 0;
}
...dziekuje za jakakolwiek pomoc...
pzdr