Atmega162 и comport

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 4
Зарегистрирован: Чт июн 17, 2010 16:32:23

Сообщение Дмитрий23 »

Здравствуйте! У меня такая задача:соединить компьютер и микроконтроллер через компорт. скорость9600, 1 стоп бит, 8 бит данных.
Я еще использую stk200. у него к порту B подключены индикаторы. Я передаю один байт. Сначала я фиксирую фактпередачи на индикаторе. Все хорошо! Следующим шагом я хочу в порт записать значение приемного буфера. Но ничего не отображается на индикаторах. Потом я отправляю обратно принятый байт, но он приходит неправильным.

Что делать, посоветуйте пожалуйста! Высылаю код программы на ассемблере!

Спасибо.
Вложения
Main.asm
(633 байт) 184 скачивания
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск

Сообщение Rimsky »

Дмитрий23 писал(а):Здравствуйте! У меня такая задача:соединить компьютер и микроконтроллер через компорт. скорость9600, 1 стоп бит, 8 бит данных.
Я еще использую stk200. у него к порту B подключены индикаторы. Я передаю один байт. Сначала я фиксирую фактпередачи на индикаторе. Все хорошо! Следующим шагом я хочу в порт записать значение приемного буфера. Но ничего не отображается на индикаторах. Потом я отправляю обратно принятый байт, но он приходит неправильным.

Что делать, посоветуйте пожалуйста! Высылаю код программы на ассемблере!

Спасибо.
Я бы посоветовал открыть даташит, и посмотреть как правильно инициализировать UART. Наверняка там есть примеры. И константы задания символьной скорости расчитаны, есть таблицы. А так же примеры прием - передачи данных.
Контактная информация:
Реклама
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Ну не мешало бы и стек инициализировать, да и прервания по USARTу заюзать, а может я и не прав :dont_know:
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Родился
Сообщения: 4
Зарегистрирован: Чт июн 17, 2010 16:32:23

Сообщение Дмитрий23 »

Я как раз все сделал по даташиту!Сам прием есть, приемник заполняется!Но почему-то данные не те!
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Мяу, GP1!
Автору.
В даташитах приводят пример с самим ресурсом, но в целом необходимо провести еще и настройку МК. См. описание прерываний - там первые строки после векторов настраивают стек.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Родился
Сообщения: 4
Зарегистрирован: Чт июн 17, 2010 16:32:23

Сообщение Дмитрий23 »

Программу как мне известно из даташита можно организовать и без прерываний! Просто проверия бит rxc0 в регистре!
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Вам так сложно добавить в начале программы 4 строки?

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

RESET: ldi r16,high(RAMEND) ; Main program start
out SPH,r16 ; Set Stack Pointer to top of RAM
ldi r16,low(RAMEND)
out SPL,r16
Взято со стр 60 и 61 даташита
PS Заставлять работать с прерываниями никто не будет - сами придете, но инициировать стек это святое.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Закрыто

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