а можно ATtiny2313 напрямую подключить по USART к диалап модему? или между ними нужно max232?
AVR+dial-up modem
- Сообщения: 107
- Зарегистрирован: Чт июл 17, 2008 16:21:32
Приветствую!
а можно ATtiny2313 напрямую подключить по USART к диалап модему? или между ними нужно max232?
а можно ATtiny2313 напрямую подключить по USART к диалап модему? или между ними нужно max232?
- Реклама
можно выпилить модем на самом AVR
Правда V23 только вроде.
Если внешний модем использовать, то через max232 и хз как
Если внешний модем использовать, то через max232 и хз как
- Сообщения: 107
- Зарегистрирован: Чт июл 17, 2008 16:21:32
собственно хочу подключить это к внешнему модему(без стабилитрона на 3,3В), с мобильным телефоном работало нормально. пробовал подключать через самодельный девайс пока ничего не выходит.
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
можно
через преобразователь интерфейсов типа max232
подключили, выдаете на скорости 9600 или 11520 команду AT и 10,13
вам в ответ можем должен ответить OK
если нет - закоротить линии RTS и CTS
и перепробывать на разных скоростях
через преобразователь интерфейсов типа max232
подключили, выдаете на скорости 9600 или 11520 команду AT и 10,13
вам в ответ можем должен ответить OK
если нет - закоротить линии RTS и CTS
и перепробывать на разных скоростях
- Сообщения: 541
- Зарегистрирован: Вт фев 09, 2010 17:52:26
Если в модеме нет USART порта, то не напрямую не через max232 работать не будет.akkinak писал(а):Приветствую!
а можно ATtiny2313 напрямую подключить по USART к диалап модему? или между ними нужно max232?
- Реклама
- Сообщения: 107
- Зарегистрирован: Чт июл 17, 2008 16:21:32
Хочу уточнить: такой старый модем, который на компорт вешается? У него есть UART.
Перед отсылкой команды может потребоваться DTR подергать.
Перед отсылкой команды может потребоваться DTR подергать.
- Сообщения: 107
- Зарегистрирован: Чт июл 17, 2008 16:21:32
пробовал на ZyXEL Omni 56K MINI , про DTR тоже думал, подавал на вход 4(соm) модема 5В , 10В, без результатно. модем не снимает трубку.
И не снимет пока через компорт его не настроете.
ATA и еще помоему ATS0 можно.
Да, еще на каких-то совсем старых были дип-переключатели. Можно было аппаратно настроить на автоподнятие и др. действия.
DTR работает так:
1)установить DTR
2)пообщаться с устройством
3)отпустить DTR в самом конце. После этого модем не обязан на вас реагировать.
RTS-CTS перемкнуть если не используется аппаратное квитирование.
ATA и еще помоему ATS0 можно.
Да, еще на каких-то совсем старых были дип-переключатели. Можно было аппаратно настроить на автоподнятие и др. действия.
DTR работает так:
1)установить DTR
2)пообщаться с устройством
3)отпустить DTR в самом конце. После этого модем не обязан на вас реагировать.
RTS-CTS перемкнуть если не используется аппаратное квитирование.
- Сообщения: 107
- Зарегистрирован: Чт июл 17, 2008 16:21:32
устройство которое хочу подключить к модему работало по такому коду:
Спойлер
Код: Выделить всё
#include <avr/io.h>
#include <stdio.h>
#include <avr/delay.h>
int UBRR,UCR;
char str0[]="ATZ\r\n";
char str1[]="ATD123654;\r\n";
volatile unsigned char LOCK;
void USART_TX(char *s)
{
while (*s)
{
while ( !( UCSRA & (1<<UDRE)));
UDR = *s++;
}
}
int main (void)
{
// Set baud rate
UBRRH = 0;
UBRRL = 12;
UCSRA = (1<<U2X);
// Enable receiver and transmitter
UCSRB = (1<<RXEN) | (1<<TXEN);
// Set frame format
UCSRC = (1<<UCSZ1) | (1<<UCSZ0);
//Set port B input
DDRB=0x00;
PORTB=0xFF;
while (1)
{
if(!(PINB&(1<<PB0)))
{
if(LOCK==0)
USART_TX("ATZ\r\n");
USART_TX("ATD123654;\r\n");
_delay_ms(3000);
LOCK=1;
}
if(PINB&(1<<PB0))
LOCK=0;
}
}
Последний раз редактировалось akkinak Вс мар 23, 2014 21:26:43, всего редактировалось 1 раз.
- Сообщения: 107
- Зарегистрирован: Чт июл 17, 2008 16:21:32
я так понимаю нужно добавить в код:uk8amk писал(а):И не снимет пока через компорт его не настроете.
ATA и еще помоему ATS0 можно.
Код: Выделить всё
char str0[]="ATZ\r\n";
char str1[]="ATA\r\n";
char str2[]="ATD123654;\r\n";- Сообщения: 107
- Зарегистрирован: Чт июл 17, 2008 16:21:32
заработало, когда подключил выходы USART ATtiny2313 на выходы GD75323 модема: TxD-TxD, RxD-RxD, GND-GND.
только программу нужно подкоректирровать(в программировании не особо, может кто поможет). задача устройства- тупо набирать номер автоответчика, выдачей в модем по USARTу двух команд ATZ и ATD12345678 при подачи корпуса на пин В0, сначала модем набирает номер, затем ответ-отбой и сигнал "занято" в тел. линии, модем не реагирует на следующую команду ATZ ,а команда ATD12345678 проходит как бы в никуда. Модем освобождает тел. линию, после того как сам определит сигнал "занято", тогда набор номера идет нормально.может между ATZ и ATD12345678 установить задержку? а после того как устройство вывести из режима набора номера(снять корпус из пин В0) то модем "не вешает трубку", тоже не знаю как здесь.
только программу нужно подкоректирровать(в программировании не особо, может кто поможет). задача устройства- тупо набирать номер автоответчика, выдачей в модем по USARTу двух команд ATZ и ATD12345678 при подачи корпуса на пин В0, сначала модем набирает номер, затем ответ-отбой и сигнал "занято" в тел. линии, модем не реагирует на следующую команду ATZ ,а команда ATD12345678 проходит как бы в никуда. Модем освобождает тел. линию, после того как сам определит сигнал "занято", тогда набор номера идет нормально.может между ATZ и ATD12345678 установить задержку? а после того как устройство вывести из режима набора номера(снять корпус из пин В0) то модем "не вешает трубку", тоже не знаю как здесь.
- Сообщения: 107
- Зарегистрирован: Чт июл 17, 2008 16:21:32
в общем работает устройство, вот решил перенести на ATmega8515(было ATtiny2313), но на ATmega8515 не работает, думаю что все дело в настройках USART
выяснил что регистр UBRRH размещается по тому самому адресу, что и регистр управления UCSRC. Как это отобразить в коде?
Код: Выделить всё
// Set baud rate
UBRRH = 0;
UBRRL = 12;
UCSRA = (1<<U2X);
// Enable receiver and transmitter
UCSRB = (1<<RXEN) | (1<<TXEN);
// Set frame format
UCSRC = (1<<UCSZ1) | (1<<UCSZ0);UBRRH размещается по тому самому адресу, что и регистр управления UCSRC. Как это отобразить в коде?
Accessing
UBRRH/UCSRC
Registers
When doing a write access of this I/O location, the high bit of the value written, the
USART Register Select (URSEL) bit, controls which one of the two registers that will be
written. If URSEL is zero during a write operation, the UBRRH value will be updated. If
URSEL is one, the UCSRC setting will be updated.


