Заголовок сообщения: Re: Терморегулятор на микроконтроллере PIC16F84 датчикe DS18
Добавлено: Ср ноя 23, 2011 15:34:16
Модератор
Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4594 Откуда: Планета Земля
Рейтинг сообщения:-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
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4594 Откуда: Планета Земля
Рейтинг сообщения:-1 Медали: 1
Я так понял у Вас компилятор MicroC ? Скомпилил Ваш проект, попробовал запустить в протеусе, всё показывает. У Вас где 00 показывает ? На железе или в протеусе ?
Заголовок сообщения: Re: Терморегулятор на PIC16F628А, mikroC PRO
Добавлено: Пн ноя 28, 2011 12:25:36
Модератор
Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4594 Откуда: Планета Земля
Рейтинг сообщения:-1 Медали: 1
Скорее всего. Т.е. не выдержаны таймауты в тайм-слотах. И ещё, у Вас задержка между командой преобразования и командой чтения = 500 Мс, а нужно минимум 750.
Заголовок сообщения: Re: Терморегулятор на PIC16F628А, mikroC PRO
Добавлено: Вт ноя 29, 2011 12:24:07
Модератор
Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4594 Откуда: Планета Земля
Рейтинг сообщения:-1 Медали: 1
Roma4ka, изучите 1-wire и реализуйте протокол сами, без всяких готовых библиотек. Только тогда уже можно будет понять в чём у Вас проблема. Хрен знает, что там делает эта библиотека...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения