Мною был сделан модем на SIM900R с подключением к миру через MAX3232 (TX,RX,GND). Написана программа для ПК для этапа конфигурирования и отладки устройства. Была написана прошивка для подключаемой к данному модему железки на ATmega8A (ничего сложного - опрос нескольких датчиков и управление релюшками). Железка общается с миром через MAX232 (TX,RX,GND). Подключаю к ПК через переходник КОМ-ЮСБ, написанной программой проверяю связь, настраиваю SIM карту, использую прочие АТ-команды - все работает. Запускаю прошивку в Proteuse, подключаю модем через переходник КОМ-ЮСБ - все замечательно работает. Подключаю железку к модему - молчание. Оставил в прошивке лишь проверку тестового запроса AT+0x0D. Подтверждения опять нет. Смотрю что на выходе железки - та честно отправляет 3 символа 'A','T',0x0D каждые 16 секунд (если нет ответа от модема). Проверил все напряжения, прозвонил все связи - все в порядке. Добавил в прошивке после запроса паузу и вывод того что пришло в ответ на тестовый запрос АТ. И вижу там следующее:
AT$0D}WнAT$0D}Wн}WН}Wн
Что-то приходит, но далеко не ОК. Полагаю что ошибка в связи железки с модемом. SIM900R имеет следующие настройки: включено эхо (в основной прошивке проверяю предыдущую отправленную команду), 9600, 8/0/1, контроля четности нет, (+ICF: 3,3), контроль передачи (+IFC: 0,0). Настройки железки: 9600, 8/0/1, контроля четности нет, асинхронный режим. Ниже приведу настройки USART:
Код
void usart_init(void)
{
// инициализация выводов
USART_DDR&=~RX;
USART_DDR|=TX;
// запись значения скорости передачи
UBRRL = LO(bauddivider);
UBRRH = HI(bauddivider);
// инициализация регистров управления
UCSRA = 0;
UCSRB = 1<<RXEN| // включить прием
1<<TXEN| // включить передачу
1<<RXCIE| // включить прерывание по приему
1<<TXCIE; // включить прерывание по передаче
UCSRC = 1<<URSEL| // запись в регистр UCSRC
1<<UCSZ0| // размер данных 8 бит
1<<UCSZ1;
}
{
// инициализация выводов
USART_DDR&=~RX;
USART_DDR|=TX;
// запись значения скорости передачи
UBRRL = LO(bauddivider);
UBRRH = HI(bauddivider);
// инициализация регистров управления
UCSRA = 0;
UCSRB = 1<<RXEN| // включить прием
1<<TXEN| // включить передачу
1<<RXCIE| // включить прерывание по приему
1<<TXCIE; // включить прерывание по передаче
UCSRC = 1<<URSEL| // запись в регистр UCSRC
1<<UCSZ0| // размер данных 8 бит
1<<UCSZ1;
}
Подскажите пожалуйста, в чем может быть проблема? Буду весьма благодарен!!!
С уважением, Станислав.