Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Uart для Silabs C8051F320
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Антон Андреевич
Вроде все включил, вроде даже работает, бит окончания передачи выставляется через равные промежутки времени - только на ножке ТХ глухо.
Причем как на кейловском симуляторе, так и на контроллере.

Прилепляю асм-файл программы.
Если влом смотреть де я напарил, можете прислать рабочий свой,только асм, пожалуйста.
AndreyS
Цитата(Антон Андреевич @ May 21 2008, 14:39) *
Вроде все включил, вроде даже работает, бит окончания передачи выставляется через равные промежутки времени - только на ножке ТХ глухо.
Причем как на кейловском симуляторе, так и на контроллере.

Прилепляю асм-файл программы.
Если влом смотреть де я напарил, можете прислать рабочий свой,только асм, пожалуйста.



Исходник не смотрел. Но надеюсь вы правильно смотрите TX на ноге P0.4. И при этом в неактивном режиме эта нога должна быть в логической 1 (высокий уровень)!!!
Антон Андреевич
Да, смотрю на ножке Р0.4.
Насчет неактивного уровня не понял.

Пока не запустил уарт на ножке 3.3В. Правда и после запуска, и в "процессе передачи", и после установки флага отправки байта уартом уровень не меняется.
AndreyS
Цитата(Антон Андреевич @ May 22 2008, 21:17) *
Да, смотрю на ножке Р0.4.
Насчет неактивного уровня не понял.

Пока не запустил уарт на ножке 3.3В. Правда и после запуска, и в "процессе передачи", и после установки флага отправки байта уартом уровень не меняется.


Именно это я и имел ввиду. Только я говорил об неактивном состоянии. Ну не важно (глаывное что схема не подсаживает порт).

Интересная у вас строчка в исходниках
Код
MOV P0SKIP, #00111100b;(25MHz)настройка приоритетного декодера матрицы - пропуск ножек внешнего генератора,VREF


И за чем это вы отключили ножки порта P0.4 и P0.5 из работы??? wink.gif Скип делается только для спецфункций порта (таких как Vref, Clock и CNVSTR) или для выделения ноги при работе с АЦП. Для всего другого делать пропуск ноги в матрице ненужно!!!

Напишите так
Код
MOV P0SKIP, #00001100b;(25MHz)настройка приоритетного декодера матрицы - пропуск ножек внешнего генератора,VREF


Ну и последнее. smile.gif Раз уж вы в исходник вставили определение регистров, так и используйте эти определения. А то периодические обращения к адресам SFR тяжело воспринимаются.
evg123
Цитата(AndreyS @ May 23 2008, 08:39) *
Напишите так ...
Код
MOV P0SKIP, #00001100b;(25MHz)настройка приоритетного декодера матрицы - пропуск ножек внешнего генератора,VREF


А почему вы не пользуетесь стандартным конфигуратором? С тех пор, как мы начали им пользоваться работа с силабсами превратилась в сказку. Скип в матрице превращается в лёгкое движение руки. Опять же всё наглядно.
AndreyS
Цитата(evg123 @ Jun 30 2008, 12:02) *
А почему вы не пользуетесь стандартным конфигуратором? С тех пор, как мы начали им пользоваться работа с силабсами превратилась в сказку. Скип в матрице превращается в лёгкое движение руки. Опять же всё наглядно.



Добрый день.

ЭЭЭЭЭ. Вы это мне адресовали письмо??? Инициатор темы не я и исходник не мой (это была цитат кода). smile.gif
Читайте внимательно.
repairDV
Цитата(evg123 @ Jun 30 2008, 19:02) *
А почему вы не пользуетесь стандартным конфигуратором?

Что за конфигуратор?
Немного не в тему. Почему-то у этой серии UART конфликтует с SPI. По-раздельному работают стабильно, когда запускаешь одновременно- UART выдаёт серию из байт 20-ти и зависает. При этом SPI продолжает работать нормально. Никто не сталкивался?
AndreyS
Цитата(repairDV @ Jun 30 2008, 18:00) *
Что за конфигуратор?
Немного не в тему. Почему-то у этой серии UART конфликтует с SPI. По-раздельному работают стабильно, когда запускаешь одновременно- UART выдаёт серию из байт 20-ти и зависает. При этом SPI продолжает работать нормально. Никто не сталкивался?



Вот. Но относиться к нему нужно с осторожностью. В предыдущей версии были ошибки. Как говорится доверяй, но проверяй.
repairDV
Цитата(AndreyS @ Jul 2 2008, 00:19) *
Вот. Но относиться к нему нужно с осторожностью. В предыдущей версии были ошибки. Как говорится доверяй, но проверяй.

Неплохая вроде штука. Но - если говорить о моём вопросе - конфликт UART и SPI, то у меня эти модули отконфигурированы так же, как у них. Ну что за жизнь. Вроде неплохой проц. Всё-таки нет совершенных микроконтроллеров.
kosyak©
Цитата(repairDV @ Jul 3 2008, 15:25) *
Неплохая вроде штука. Но - если говорить о моём вопросе - конфликт UART и SPI, то у меня эти модули отконфигурированы так же, как у них. Ну что за жизнь. Вроде неплохой проц. Всё-таки нет совершенных микроконтроллеров.

Коллега делал девайс на 320, были задествованы SPI, UART проблем не возникало....
SashaGubov
может не в тему, но та же проблема с C8051F350, в конфигураторе задал все, но на ножках глухо в Keile? Помогите!

CODE
#include "C8051F350.h"

void Timer_Init(){
TMOD = 0x20;
TH1 = 0x96;
}
void UART_Init(){
SCON0 = 0x10;
}
void Port_IO_Init(){
// P0.0 - Unassigned, Open-Drain, Digital // P0.1 - Unassigned, Open-Drain, Digital // P0.2 - Unassigned, Open-Drain, Digital
// P0.3 - Unassigned, Open-Drain, Digital // P0.4 - TX0 (UART0), Open-Drain, Digital // P0.5 - RX0 (UART0), Open-Drain, Digital
// P0.6 - Unassigned, Open-Drain, Digital // P0.7 - Unassigned, Open-Drain, Digital
// P1.0 - Unassigned, Open-Drain, Digital // P1.1 - Unassigned, Open-Drain, Digital // P1.2 - Unassigned, Open-Drain, Digital
// P1.3 - Unassigned, Open-Drain, Digital // P1.4 - Unassigned, Open-Drain, Digital // P1.5 - Unassigned, Open-Drain, Digital
// P1.6 - Unassigned, Open-Drain, Digital // P1.7 - Unassigned, Open-Drain, Digital
XBR0 = 0x01;
XBR1 = 0x40;
}
void Oscillator_Init(){
OSCICN = 0x83;
}

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void){
Timer_Init();
UART_Init();
Port_IO_Init();
Oscillator_Init();
}
void Main(){
char ch='A';
Init_Device();

while (1){
// P0++;
SBUF0=ch++;
}
}
barabek
Цитата(SashaGubov @ Aug 19 2009, 18:14) *
может не в тему, но та же проблема с C8051F350, в конфигураторе задал все, но на ножках глухо в Keile? Помогите!

CODE
#include "C8051F350.h"


// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void){
Timer_Init();
UART_Init();
Port_IO_Init();
Oscillator_Init();

}

А что-то у Вас в коде нет отключения watchdog? Просто не привели или его действительно нет? Дело в том, что в Silabs МК он включается автоматически после сброса. Первым делом, если что-то не идет смотрите регистр сброса, от чего был последний сброс.
И второе.
Код
while (1){
            // P0++;
          SBUF0=ch++;    
  }

Вы дождитесь, когда байт передастся, а потом только следущий передавайте. Хотя бы полингом TI флага.
SashaGubov
ага, спасибо, в этом и дело smile.gif еще б его прошить в реале..
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.