ATmega16 + Siemens c45

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
mx7
Родился
Сообщения: 2
Зарегистрирован: Пт окт 10, 2008 18:48:06

ATmega16 + Siemens c45

Сообщение mx7 »

Вот решил разобратся с управлением АТ командами телефоном сименс с45.
Написал програмку для МК ATmega16, которая эмулирует нажатие кнопки '5' на телефоне.
Выставил фюзами внутрений задающий генератор на 8МГц.
Ножку 14(RXD) МК подключил к 5(Tx) контакту телефона, 15(TXD) ножку МК подключил к 6(Rx) контакту тел-на,
а 11(GND) ножку МК подключил к 1(GND) контакту телефона (см. рис.).
Откомпилировал в AVRStudio без ошибок.
Собрал схему и запрограмировал микроконтроллер, но устройство не работае (нету эмуляции нажатия кнопки).
Телефон рабочий, подключал к охранной GSM сигнализации, и все работало нормально. Кабель и микроконтроллер - целые.
Может я гдето допустил ошибку, помогите советом.

Код: Выделить всё

.INCLUDE "m16def.inc"

.MACRO outi    
ldi R16,@1    
out @0,R16      
.ENDMACRO    

.MACRO putc
ldi R16,@0    
rcall uart_snt ; вызываем подпрограмму передачи данных по UART.
.ENDMACRO

.org 0x0000
rjmp start; прыгаем на метку старт

start:
outi SPL,low(RAMEND)  ; инициализация стека.
outi SPH,high(RAMEND)
rcall uart_init  ; вызов подпрограммы инициализации UART.

 
putc 'A' ; AT+CKPD=5,100 Эмулируем нажатие кнопки 5.
putc 'T' ; 100 - задержка на 1 секунду
putc '+'
putc 'C'
putc 'K'
putc 'P'
putc 'D'
putc '='
putc '5'
putc ','
putc '1'  
putc '0'
putc '0'
putc 0x0D
putc 0x0A

end:
rjmp end; после нажатия кнопки 3 на телефоне программа будет крутится здесь пока будет питание

uart_init:  ; тут идет инициализация УАРТа
.equ XTAL = 8000000; частота процессора
.equ baudrate = 9600; уарт будет работать на 9600 бод.
.equ bauddivider = XTAL/(16*baudrate)-1 ; тут просто вычисляем необходимую задержку для таймера.

outi UBRRL , low(bauddivider) ; и загружаем ее в регистры уарта вначале младший байт
outi UBRRH , high(bauddivider) ; потом старший байт
outi UCSRA , 0   ; выставляем режим асинхронной приемопередачи, с обычной (не двойной) скоростью.
outi UCSRC , 1<<URSEL|3<<UCSZ0 ; настраиваем протокол на стандартный. 8 бит, один старт и стоп биты.
outi UCSRB , 1<<RXEN|1<<TXEN|1<<RXCIE|1<<TXCIE;разрешаем прием и передачу
ret        

uart_snt:
sbis UCSRA,UDRE; Ждем пока бит UDRE в регистре UCSRA станет 1, что означет готовность УАРТА к передаче.
rjmp uart_snt
out UDR,R16 ; бросаем число из регистра 16 в регистр приемопередатчика.
ret        
Вложения
sxema.gif
(25.4 КБ) 778 скачиваний
Реклама
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Посмотрите что ваше устройство шлет реально и сравните с тем, что делает прога управдния телефоном типа SoMoCo - лигить данные можно прогами перечисленными в задаче 4 у меня в домашней страничке.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Реклама
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

Можно и стандартной программой HyperTerminal посмотреть... :wink:

PS тоже хочу попробовать работу с GSM но какие телефоны подходят точно, ну в смысле те которые уже пробовали???
Изображение
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Krik99 писал(а):Можно и стандартной программой HyperTerminal посмотреть... :wink:

PS тоже хочу попробовать работу с GSM но какие телефоны подходят точно, ну в смысле те которые уже пробовали???
те которыми можно с ПК рулить по COM порту или по его эмулятору на USB.

Команды узнавать логом работу управляющей софтины.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Реклама
Эиком - электронные компоненты и радиодетали
chief
Потрогал лапой паяльник
Сообщения: 397
Зарегистрирован: Ср сен 19, 2007 09:21:04

Сообщение chief »

вы уверены что "AT+CKPD=5" правильная команда?
Попробуйте так AT+CKPD="5" или
так AT+CKPD=53 (53 это 0х35 или если хотите '5' ).
Реклама
mx7
Родился
Сообщения: 2
Зарегистрирован: Пт окт 10, 2008 18:48:06

Сообщение mx7 »

tych писал(а):Посмотрите что ваше устройство шлет реально и сравните с тем, что делает прога управдния телефоном типа SoMoCo - лигить данные можно прогами перечисленными в задаче 4 у меня в домашней страничке.
SoMoCo это опечатка или есть такая прога, а то я нашел только SiMoCo.
Кабеля нету, поэтому буду собирать. У тебя в задаче 4 схемы для соm портов, а можно ли собрать схему для usb порта отсюда http://radiokot.ru/circuit/digital/pcmod/05/ на микросхеме FT 232R и подключать уже напрямую к МК или нужно ставить схему согласования сигналов как у тебя в задаче 4?

chief писал(а):вы уверены что "AT+CKPD=5" правильная команда?
Попробуйте так AT+CKPD="5" или
так AT+CKPD=53 (53 это 0х35 или если хотите '5' ).
Пробовал разные команды не одна на работает.
Реклама
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

mx7 писал(а):SoMoCo это опечатка или есть такая прога, а то я нашел только SiMoCo.
опечатка.
mx7 писал(а): на микросхеме FT 232R и подключать уже напрямую к МК или нужно ставить схему согласования сигналов как у тебя в задаче 4?
Согласование от FT232R (если она писается от 5 вольт) к телефону нужно снизить уровни напряжения резисторным делителем например 2 кОМ и 3 кОм. или 1 кОм и стабилитрон на 3-3.3 вольт. Если МК питается от 5 вольт то ехо сигнал с TxD тоже нужно понизить до 3-3.3 вольт.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
SergeBS
Вымогатель припоя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Сообщение SergeBS »

mx7
1. Находишь родной COM-шнур мобилы, который позволяет компу общаться с твоей мобилой. И программу для этого общения заодно.
2. Меряешь на его выводах напряжения (просто между корпусом компа и выводами разъема, втыкаемого в мобилу - корпус компа - это 0, т.е. GND, т.е. общий).
3. Обнаруживаешь на одном из выводов -10...-12 В и пытаешься понять, что это и откуда.
4. Читаешь про стандарт RS232 (он же СОМ) и делаешь выводы насчет соответствия выводов МК этому стандарту (или любую книжку по МК Atmel - там как правило есть подключение к СОМ).
(продолжение следует :) )
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

SergeBS писал(а):mx7
1. Находишь родной COM-шнур мобилы, который позволяет компу общаться с твоей мобилой. И программу для этого общения заодно.
2. Меряешь на его выводах напряжения (просто между корпусом компа и выводами разъема, втыкаемого в мобилу - корпус компа - это 0, т.е. GND, т.е. общий).
3. Обнаруживаешь на одном из выводов -10...-12 В и пытаешься понять, что это и откуда.
Ну и БРЕДЯТИНА !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
YurkaM
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Пн сен 01, 2008 14:49:03
Откуда: Казахстан

Сообщение YurkaM »

mx7 , я вот заглянул в "AT Commands Interface Guide for AT X41 revision" - там в синтаксисе команды нету параметра задержки...
Не пробовал без него?, т.е.

Код: Выделить всё

putc 'A' ; AT+CKPD=5 Эмулируем нажатие кнопки 5. 
putc 'T'
putc '+' 
putc 'C' 
putc 'K' 
putc 'P' 
putc 'D' 
putc '=' 
putc '5'  
putc 0x0D 
putc 0x0A
Аватара пользователя
SergeBS
Вымогатель припоя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Сообщение SergeBS »

tych писал(а): Ну и БРЕДЯТИНА !
Не хами. Есть куча мобил ( и мой МЕ-45 в том числе), у которых подключение по СОМ - просто шнур без каких бы то ни было микросхем внутри. Именно поэтому я и предлагал померять напряжение на контактах - для этого не надо разбирать переходник, а по уровням определить - есть там MAX232 или аналог или нет. Если нет - то ткнув напрямую МК туда поимеем у него убитый вход.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

Сообщение Секретный кот »

Да, у МЕ45 действительно простой шнур, только вот со стороны телефона на нём 10..12 вольт ну никак не будет.
slavik250
Родился
Сообщения: 2
Зарегистрирован: Вс янв 04, 2009 22:50:54
Откуда: Балаково
Контактная информация:

Re: ATmega16 + Siemens c45

Сообщение slavik250 »

доброго времени суток всем, сколько постов было выше, никто ни разу не упомянул о том что необходима команда инициализации передачи управления телефоном через последовательный интерфейс, это есть на сайте журнала хакер, номер 11 за 2007 год, есл не ошибаюсь, а на счет уровней ком порта подойдет любой преобразователь rs323-TTL232 что касается размаха сигнала то разница между 3-5 вольт не имеет значения так как в том же теле встроены ограничивающие резисторы, можете посмотреть схему тела или разница между 5 и 3 вольтами составляет <30% а разработчиков схе обязывают делать запас по напряжению для работы электрических сиггналов внешних нтерфейсов с разнцей не менее 20% тоесть разница составляет 20-25% это вполне рабочие уровни, для примера могу привести пример дата кабеля ком прта разобрал там стоит макс232 и к7805л это пятивольтовый стабилизатор.. и соответственно размах самой макс на стороне ттл будет 5 вольт и эти шнурки работают со всеми телефонами делайте выводы.... :)))
Аватара пользователя
yeskela
Встал на лапы
Сообщения: 84
Зарегистрирован: Сб ноя 22, 2008 22:11:28

Re: ATmega16 + Siemens c45

Сообщение yeskela »

Соединяю мобилку и контроллер через ком порт.
По поводу соединения - в разрыв линии передачи от контроллера в мобилку ставлю на всякий случай 300 омный резистор.

Посылаю из контроллера в мобилку команду 'AT+GSN'+#13+#10
#13 #10 - Это 0x0D 0x0A, просто я на микропаскале пишу, т.к. мне это ближе, чем мутный С.
Мобилка в ответ на эту команду выдает свой IMEI

Мобилка в ответ действительно отсылает свой имей (вижу в терминалке на персоналке, которая подцеплена к ответной линии)
а в контроллер приходит какая-то лабуда.

Вопрос, как правильно считывать из СОМ порта в ATmega 8/16/32 ?
Если можно, то не пример кода на С, а расписать по русски по шагам.

Кварц 8мгагерц, скорость 9600
UCSRA:=$00;
UCSRB:=$18; Или $98 Должно быть ??????????
UCSRC:=$86;
UBRRH:=$00;
UBRRL:=$33;
(Значения шестнадцатеричные)

Как определить, что что-то пришло в порт?
UDRE - Что за флаг?
RXC - Что за флаг?
UDR - Содержит принятые данные?
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

Сообщение clawham »

Ну вообще-то есть отличный вариант прерывания "Завершение приёма СОМ" там уже будет правильная строчка, хотя я на "Мутном" Си одной коммандой делаю приём строки из РС232 порта МК :)
Аватара пользователя
Yftul
Вымогатель припоя
Сообщения: 540
Зарегистрирован: Пт фев 20, 2009 12:26:26

Re: ATmega16 + Siemens c45

Сообщение Yftul »

slavik250 писал(а):для примера могу привести пример дата кабеля ком прта разобрал там стоит макс232 и к7805л это пятивольтовый стабилизатор.. и соответственно размах самой макс на стороне ттл будет 5 вольт и эти шнурки работают со всеми телефонами делайте выводы.... :)))

Вообще-то max232 содержит преобразователь, так что напряжение на выходе будет от минус 10 до плюс 10 Вольт, несмотря на питание 5 вольт.
Касательно уровней 5В TTL и 3В TTL разницы особой нет: уровень логической единицы считается 2,4 В и выше и в том и в другом случае. Проблема может быть лишь в повышенном токе со стороны 5ти вольтовой логики в сторону 3х вольтовой при выдаче уровня лог. единицы, потому желательно либо ставить токоограничительные резисторы, либо логику, позволяющую непосредственное сопряжение 5В и 3В. К слову вроде есть ИМС max2332, являющаяся аналогом max232, только с питанием и логикой TTL 3В
Аватара пользователя
DiGiCat
Друг Кота
Сообщения: 4793
Зарегистрирован: Пт июл 11, 2008 09:42:35
Откуда: Made in USSR

Сообщение DiGiCat »

Yftul :shock:
Yftul писал(а): так что напряжение на выходе будет от минус 10 до плюс 10 Вольт, несмотря на питание 5 вольт.
да, со стороны СОМ - RS232, он то про другую сторону говорил - про TTL :)))
slavik250 писал(а): и соответственно размах самой макс на стороне ттл будет 5 вольт
МАХ232 то ж она RS232< =>TTL :)))
Аватара пользователя
Yftul
Вымогатель припоя
Сообщения: 540
Зарегистрирован: Пт фев 20, 2009 12:26:26

Сообщение Yftul »

Безусловно, я лишь захотел внести ясность и обобщить.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»