| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > atmega128 и UART |
| Автор: Vilandrew 23.11.2008, 22:56 | ||
В программировании контроллеров я пока новичок. Написал программу для МК Atmega128. Проверял в протеусе, программа мигает светодиодами и передает число в порт. Как только прошиваю, вообще ноль эмоций. Пробывал все тоже самое но без порта UART, все в норме, светодиоды горят. Подскажите в чем может быть проблема.
|
| Автор: cardinal 24.11.2008, 00:30 |
| Посмотри тут примеры http://g24-tec.com/files/G24-ATM8-Examples-RevA.pdf не думаю, что эта часть сильно отличается от ATmega128 (с ним я не работал)... |
| Автор: Mazzi 24.11.2008, 10:32 |
| Скорее всего у тебя неправильно установлены Fuses. По умолчанию ATmega128 настроена на работу со встроеным тактовым генератором(т.е. твой кварц не используется) см. даташит стр.288, и включена аппаратная совместимость с ATmega103(т.е. необходимо выключить эту совместимость). Неплохое описание fuses вот здесь http://ulei.by.ru/Fuses_Ru.htm хотя и для 64 атмеги но там эти моменты совпадают с 128 атмегой. Удачи! |
| Автор: Vilandrew 24.11.2008, 19:10 |
| Mazzi, спасибо, действительно проблема была во фьюзах |
| Автор: Mazzi 25.11.2008, 12:21 |
| Vilandrew, рад за тебя. |
| Автор: Vilandrew 14.12.2008, 23:03 | ||
Столкнулся с новой проблемой. Данные передаются на компьютер, дальше уже программа обрабатывает эти значения и отправляет результат обратно на контроллер. Но, контроллер никак не реагирует. Вот собственно кусок кода который у меня не хочет работать:
|
| Автор: Mazzi 15.12.2008, 11:31 |
| Причина в том, что у тебя не используются прерывания. Нужно написать обработчики прерывания по приёму и передаче через Uart и разрешить процессору работать по прерываниям, тогда код заработает. |
| Автор: Vilandrew 15.12.2008, 21:10 |
| Mazzi, спасибо, буду двигаться в этом направлении. |
| Автор: rmise 11.4.2009, 22:10 |
| Уважаемые форумчане! Помогите пожалуйста. Схемка на ATMega8535, он отправляет команду телефону, а телефон молчит. Подключал к компу (схемку) работает, телефон с компом тоже общается (правда только на 19 200). Думаю что дело в скорости. Почитал на форумах, говорят что кварц надо ставить на 7,3728 Мг. Может можно без него? Если да, то как? Если нет, то скажите пожалуйста, что нужно в коде изменить, что бы контроллер от кварца работал? \\\\\\\\\\\\\\\\\\\\\\\\\ uart_init:; .equ XTAL = 8000000; частота процессора. .equ baudrate = 19200 .equ bauddivider = XTAL/(16*baudrate)-1 outi UBRRL , low(bauddivider) outi UBRRH , high(bauddivider) outi UCSRA , 0 outi UCSRC , 1<<URSEL|3<<UCSZ0 outi UCSRB , 1<<RXEN|1<<TXEN|1<<RXCIE|1<<TXCIE \\\\\\\\\\\\\\\\\ |
| Автор: Mazzi 13.4.2009, 09:05 | ||
Ты сначала точно определись на каких скоростях что работает, а потом уже ищи решение. |
| Автор: rmise 15.4.2009, 19:37 |
| Я уже нашел решение |