Ich habe ein sim900 Modul, das eine RS232 serielle Schnittstelle hat. Wenn ich es an meinen Computer anschließe, funktioniert es gut auf einem Terminal, aber wenn ich es an einen atmega16 Mikrocontroller anschließe, gibt es nur zurück, was auch immer ich es sende und nicht auf Befehle antworte. Außerdem benutze ich ein max232 ic um RS232 zu ttl zu konvertieren.sim900 echos zu Mikro aber tut nichts
#include <io.h>
#include <mega16a.h>
#include <alcd.h>
#include <delay.h>
#include <stdio.h>
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if(data!=0xd && data!= 0xa)lcd_putchar(data);
}
void main(void)
{
////////////////////////I/O REGISTERS
DDRB = 1 << DDB0;
///////////////////////USART REGISTERS
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x33;
///////////////////////ENABLE GLOBAL INTERUPTS
#asm("sei")
///////////////////////LCD CONFIGURATION
lcd_init(16);
lcd_gotoxy(0,0);
delay_ms(2000);
printf("ATE0\r\n");
delay_ms(2000);
printf("ATD+989190077175;\r\n");
delay_ms(20000);
while (1)
{
lcd_clear();
lcd_gotoxy(0,0);
// Please write your application code here
printf("AT\r\n");
delay_ms(2000);
}
}
* "Außerdem benutze ich eine max232 ic um rs232 in ttl zu konvertieren." * - Das fügt einen weiteren Satz von Verbindungen hinzu, um RxD und TxD Zeilen zu tauschen. Was haben Sie getan, um die richtigen Verbindungen zu überprüfen? Haben Sie überprüft, dass dieser Adapter die richtige Stromversorgung erhält? – sawdust