2016-08-06 54 views
-1

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); 

} 

}

+0

* "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

Antwort

0

Sie sprechen offenbar nicht zu Ihrem SIM900. Der Befehl "ATE0", den Sie ausgeben, soll SIM900 dazu bringen, das Echo auszuschalten. Nach diesem Befehl können Sie kein Echo von der SIM-Karte sehen.

die von Ihnen bereitgestellten Informationen Gegeben ich folgendes vorschlagen könnte:

Ihre max232 Pläne prüfen. Der einfachste Fall ist hier das du irgendwie Rx/Tx angeschlossen hast, was beides erklären würde - du siehst das Echo und kommunizierst nicht mit SIM. Um dies zu beheben, verbinden Sie einfach Ihren max232 mit dem Computer mit dem seriellen Terminalprogramm und verbinden Sie Rx/Tx auf der Ausgangsseite des Konverters. Sie sollten das Echo sehen. Dann trennen Sie sie - Sie sollten das Echo nicht sehen.

Allgemeiner Vorschlag - das ist nicht der richtige Ort für solche Diskussionen. Das ist mehr Frage/Antwort Knowledgebase.