Witam !
Proboje stworzyc graficzna prezentacje poziomu sygnału dochodzącego do anteny mojego Siemensa C35. Uzywam Atmega8 i komendy AT+CSQ, pisze pod AVRStudio AVR/GCC.
funkcje obslugi klawiatury i LCD sa ok. Transmisja do telefonu dziala bo wysylam SMS bez problemu. Uzywam kabelka Siemens ktory zasilam z pinu 4 napieciem +9V. Linie RX od stronu telefonu podlaczam do MAX232 na pin 8 - R2IN i dalej pinem 9 - R2OUT do ATmegi na jej pin 2 RxD. Niestety na LCD dostaje śmieci zamiast tego co powinienem - czyli chyba cos takiego: +CSQ: 20,99
Proboje stworzyc graficzna prezentacje poziomu sygnału dochodzącego do anteny mojego Siemensa C35. Uzywam Atmega8 i komendy AT+CSQ, pisze pod AVRStudio AVR/GCC.
#include <avr/io.h>
#include <avr/interrupt.h>
#include <string.h>
#include <util/delay.h>
#include "lcd.h"
#define FOSC 4000000
#define BAUD 19200
#define MYUBRR FOSC/16/BAUD-1
unsigned char wys;
void usart_init(unsigned int ubrr)
{
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(0<<USBS)|(3<<UCSZ0);
}
void nadaj_znak(unsigned char data)
{
while(!(UCSRA&(1<<UDRE)));
UDR=data;
}
unsigned char odbierz_znak(void)
{
while(!(UCSRA & (1<<RXC)) );
return UDR;
}
void wyslij_slowo(char *dana)
{
int dlugosc_slowa, k =0 ;
dlugosc_slowa = strlen(dana);
for(k = 0; k<dlugosc_slowa; k++)
{
nadaj_znak(dana[k]);
}
}
int main(void)
{
lcd_init(LCD_DISP_ON);
usart_init(MYUBRR);
_delay_ms(100);
wyslij_slowo("ATE0");
nadaj_znak(0x0D);
while(1)
{
wyslij_slowo("AT+CSQ");
nadaj_znak(0x0D);
wys = odbierz_znak();
if(wys == 0x0A) // jesli odebrano ENTER czyli LF
{
lcd_gotoxy(0,0);
while(wys!=0x2B) // dopoki nie odebrano '+' pobieraj znaki
{
wys = odbierz_znak();
}
lcd_putc(wys);
for(uint8_t p=0;p<10;p++) // wpisz kolejno 10 znakow po '+' na LCD
{
wys = odbierz_znak();
lcd_putc(wys);
}
}
for(int j=0;j<100;j++) _delay_ms(10);
}
}
funkcje obslugi klawiatury i LCD sa ok. Transmisja do telefonu dziala bo wysylam SMS bez problemu. Uzywam kabelka Siemens ktory zasilam z pinu 4 napieciem +9V. Linie RX od stronu telefonu podlaczam do MAX232 na pin 8 - R2IN i dalej pinem 9 - R2OUT do ATmegi na jej pin 2 RxD. Niestety na LCD dostaje śmieci zamiast tego co powinienem - czyli chyba cos takiego: +CSQ: 20,99