Заголовок сообщения: Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Добавлено: Ср ноя 23, 2011 15:34:16
Модератор
Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4614 Откуда: Планета Земля
Рейтинг сообщения:-1 Медали: 1
Roma4ka писал(а):
без этого не как (
Прерывания нужно запрещать только на основную часть тайм-слота, которая критична к увеличению задержек. Фтопку встроенные ф-ии, только свои. Сделайте хотя-бы через каждую команду, а не через несколько. Кстати, у Вас частота на каждый индикатор = ~28Гц, это очень мало.
можно. например, при индикации какое -то время вы уверены, что 10 мс у вас есть или сколько там. Ставьте флаг - разрешение - запрет работы в прерывании ,а в основном цикле анализируйте, сначала ожидайте запрета, он пройдет - и у вас есть время для работы.
помогите, почему 16F628A внутреннего генератора на 4MHz при работе с датчикам DS18B20 показывает 0,00
Код:
/* '******************************************************************************* ' Description: The temperature most be displayed on the digits (7 segments) in this method (00,0C) ' Test configuration: ' MCU: PIC16F628A ' Configuration Word ' Oscillator: INTOSC: I/O on ' Watchdog Timer: OFF ' Power up Timer: Disabled ' Master Clear Enable: Enabled ' Browun Out Detect: Enabled ' Low Voltage Program: Disabled ' Data EE Read Protect: Disabled ' Code Protect: OFF '******************************************************************************* */
switch (m) { case 0: Display_Temperature(value);break; case 1: {temperatur();} break; case 2: {razn(); } break; default: Display_Temperature(value); }
}
void InitMain() { CMCON = 7; // Set AN pins to Digital I/O; OPTION_REG = 0x80; // Set timer TMR0; portb_index = 0; shifter = 1; TMR0 = 0; INTCON = 0xA0; // Disable interrupt PEIE,INTE,RBIE,T0IE PORTA = 0x00; TRISA = 0x50; TRISB = 0x00; // All port D pins are configured as outputs PORTB = 0x00; // Turn off all display segments PCON.OSCF = 1; // Set internal oscillator frequency to 4 MHz sensor(); Delay_ms(500);
Заголовок сообщения: Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Добавлено: Пн ноя 28, 2011 10:36:17
Модератор
Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4614 Откуда: Планета Земля
Рейтинг сообщения:-1 Медали: 1
Я так понял у Вас компилятор MicroC ? Скомпилил Ваш проект, попробовал запустить в протеусе, всё показывает. У Вас где 00 показывает ? На железе или в протеусе ?
Заголовок сообщения: Re: Терморегулятор на PIC16F628А, mikroC PRO
Добавлено: Пн ноя 28, 2011 12:25:36
Модератор
Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4614 Откуда: Планета Земля
Рейтинг сообщения:-1 Медали: 1
Скорее всего. Т.е. не выдержаны таймауты в тайм-слотах. И ещё, у Вас задержка между командой преобразования и командой чтения = 500 Мс, а нужно минимум 750.
Заголовок сообщения: Re: Терморегулятор на PIC16F628А, mikroC PRO
Добавлено: Вт ноя 29, 2011 12:24:07
Модератор
Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4614 Откуда: Планета Земля
Рейтинг сообщения:-1 Медали: 1
Roma4ka, изучите 1-wire и реализуйте протокол сами, без всяких готовых библиотек. Только тогда уже можно будет понять в чём у Вас проблема. Хрен знает, что там делает эта библиотека...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения