В Proteus работает, в железе нет.

PIC версия программы(разные темы)

Re: В Proteus работает, в железе нет.

Сообщение andr_l (Андрей) » 19 ноя 2016, 18:21

Да, на твой вопрос ответ да, спасибо за описание и за исправленный компонент 1-wire... вообще как то не кашерно получается:у меня в протеусе это все работает, хотя в железе да и исходя из твоего опыта работать не должно...походе у меня явно двойная ошибка в протеусе компенсировала сама себя :)

Там только один момент. У тебя написано
Макросы rx_bit и tx_bit – внутренние макросы рассмотренных выше макросов, но пользователь может ими пользоваться и (если есть необходимость изменить временные интервалы длительности). в 5 - byte. Это очепятка в тексте или в 5м поменяли внутренний макрос?
Ник: andr_l
Имя: Андрей
(msk)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: В Proteus работает, в железе нет.

Сообщение Taska (Максим) » 19 ноя 2016, 20:06

Если ты запусишт камень на 16 или 32 МГц то отпадут все вопросы, а если на 4 будешь крутить - то это кощунство
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе

Re: В Proteus работает, в железе нет.

Сообщение andr_l (Андрей) » 19 ноя 2016, 21:52

Услышал. Но это ведь не решит вопрос с которым я обратился к форумчанам :(
Ник: andr_l
Имя: Андрей
(msk)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: В Proteus работает, в железе нет.

Сообщение Taska (Максим) » 20 ноя 2016, 07:06

Конечно не решит, почитай много раз писали о задержках на 4 МГц
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: В Proteus работает, в железе нет.

Сообщение andr_l (Андрей) » 21 ноя 2016, 12:31

Первый вопрос решен
конфиг
//Set Internal Oscillator Frequency 16MHz
st_bit(osccon, IRCF0);
st_bit(osccon, IRCF1);
st_bit(osccon, IRCF2);
st_bit(osccon, IRCF3);
//If PLLEN in Configuration Word 1 = 1:
//SPLLEN bit is ignored. 4x PLL is always enabled.
//If PLLEN in Configuration Word 1 = 0:
//1 = 4x PLL Is enabled
//0 = 4x PLL is disabled
cr_bit(osccon, SPLLEN);
//System Clock Select bits
//1x = Internal oscillator block
//01 = Timer1 oscillator
//00 = Clock determined by FOSC<2:0> in Configuration Word 1.
st_bit(osccon, SCS1);
//Global Pull-up enabled, clear bit WPUEN
cr_bit(option_reg, 7);

программка
//Interview switch and calculations data for lightning and rux

//Interview start
//Direction "input"
trisb=0xFF;
//Pull-up enabled on Port B
wpub = 0xFF;

//Delay
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();

//interview of switches
FCV_SWITCH = portb;
//Interview end
//Calculations data for lightning and rux start
if (FCV_SWITCH == 0b11111110)
{
FCV_LEDI=0b11111110;
FCV_RUX_SW=21;
}
if (FCV_SWITCH == 0b11111101)
{
FCV_LEDI=0b11111101;
FCV_RUX_SW=22;
}if (FCV_SWITCH == 0b11111011)
{
FCV_LEDI=0b11111011;
FCV_RUX_SW=23;
}
if (FCV_SWITCH == 0b11110111)
{
FCV_LEDP=0b11110111;
FCV_RUX_SW=24;
}
if (FCV_SWITCH == 0b11011111)
{
FCV_LEDP=0b11011111;
FCV_RUX_SW=25;
}
if (FCV_SWITCH == 0b10111111)
{
FCV_LEDP=0b10111111;
FCV_RUX_SW=26;
}
if (FCV_SWITCH == 0b01111111)
{
FCV_LEDP=0b01111111;
FCV_RUX_SW=27;
}
FCV_LED = FCV_LEDI & FCV_LEDP;
//Calculations data for lightning and rux end

//lightning start
//Direction "output"
trisb=0x00;
//output LED
portb = FCV_LED;
//lightning stop

Теперь и на 4 и на 8 и на 16 и на 32 работает. Протеусу по барабану на скорость работы кристалла, поэтому программа в нем исполнялась, а в железе нет. Теперь и там и там работает. В моем варианте используются одни и те же порты и для светодиодов и для кнопок, и оказывается, что если время между переводом порта с режима выдачи инфы в режим опроса меньше чем 2 NOP (16MHz), на входах пика не успевает "появиться 1". при 4x считывание еще неуверенное, при 375с на тестовой плате всегда есть четкое считывание. Так как девайс будет и на холоде работать и при влажности (в машине), то просто количество NOP увеличил в 2 раза для надежности. Возможно потом просто в это место поставлю другой обработчик (мне еще 2 кнопки надо будет потом опрашивать, но там всегда PullUP внешний и порт только на вход), чтобы зазря NOP не исполнять. Сейчас пик пашет на 16МГЦ (максимальная частота без PLL). Задержка делается ногами. Может это и кривое решения, но в моем случае она заработала. Честно говоря я не знаю это из-за того, что резюк медленно включается или медленно заряжается емкость платы (хотя она там совсем копеечная)...

Дальше попробую (как выше давали советы) посмотреть что у меня твориться с one-wire. В протеусе работает, но суд по тому что на этом и старом форуме написано даже отправка байта и его прием совсем неоптимально реализованы...
P.S. данный пульт управления будет работать вот с этим девайсом http://magnitola.org/attachments/vysshi ... .44.20.png. Это 10 канальный процесор, где на 8 каналов стоит 4 PCM1795 c ламповыми буферами на 6н28б на выходе, 9, 10 каналы на PCM3060. Ядро ADAU1445. Платку делал в Eagle, сегодня отдам в резонит в производство. Пока буду играться с предыдущей версией этого проца без ламп. Фотка в приложении.

P.P.S. Если тема может кому-то быть интересна, то могу продолжать выкладывать то, что получилось. Если нет, то тему можно закрыть.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: andr_l
Имя: Андрей
(msk)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Пред.

Вернуться в Flowcode PIC

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

cron