Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Электроника - это просто Теоретические и практические вопросы для начинающих электронщиков.

 
Опции темы
Непрочитано 06.02.2010, 12:37  
deeman30rus
Частый гость
 
Регистрация: 02.04.2009
Сообщений: 42
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
deeman30rus на пути к лучшему
По умолчанию Помогите разобраться с кодом Micro C for AVR

Доброго всем времени суток!

возникла такая проблема. надо работать с протоколом 1Wire, среда разработки microС PRO for AVR, у них в pdf фйле идущим вместе с этой прогой есть пример работы с этим протоколом, я переписал код из примера, но при компиляции мне выдаётся ошибка на строках с процедурами ow_reset() ow_write(), ow_read() "недостачно параметров" в pdf написано, что эти самые функции вызываются без параметров. поэтому у меня вопрос как исправить код и в чём именно ошибка?

пример кода - ниже.

код написан для термометра на атмега16 с подсоединённым к нему датчиком ds18b20.

//LCD module connections
sbit LCD_RS at PORTD.B2;
sbit LCD_EN at PORTD.B3;

sbit LCD_D4 at PORTD.B4;
sbit LCD_D5 at PORTD.B5;
sbit LCD_D6 at PORTD.B6;
sbit LCD_D7 at PORTD.B7;

sbit LCD_RS_Direction at DDRD.B2;
sbit LCD_EN_Direction at DDRD.B3;
sbit LCD_D4_Direction at DDRD.B4;
sbit LCD_D5_Direction at DDRD.B5;
sbit LCD_D6_Direction at DDRD.B6;
sbit LCD_D7_Direction at DDRD.B7;
// end LCD module connections

// OneWirePinOut
sbit OW_Bit_Write at PORTB.B2;
sbit OW_Bit_Read at PINB.B2;
sbit OW_Bit_Direction at DDRB.B2;
// end oneWire Definition


// SET Temperature Resolution
// 18b20 : 12
// 18s20 : 9
const unsigned short TEMP_RES = 9;
char *text = "000.0000";
unsigned temp;

void display_temp(unsigned int temp2write){
const unsigned short RES_Shift = TEMP_RES - 8;
char temp_whole;
unsigned int temp_fraction;

// if negative temperature
if (temp2write & 0x8000){
text[0] = '-';
temp2write = ~temp2write + 1;
};
// extract temp whole
temp_whole = temp2write ›› RES_Shift;
//convert to symbols
if (temp_whole/100)
text[0] = temp_whole + 48;

text[1] = (temp_whole/10)%10 + 48;
text[2] = temp_whole%10 + 48;

//extract temp fraction and convert it to integer
temp_fraction = temp2write ‹‹ (4-RES_Shift);
temp_fraction &= 0x000F;
temp_fraction *= 625;

// convet to char

text[4] = temp_fraction / 1000 + 48;
text[5] = (temp_fraction / 100)%10 + 48;
text[6] = (temp_fraction / 10)%10 + 48;
text[7] = temp_fraction % 10 + 48;
//
Lcd_out(2,5,text);
}

void main() {
Lcd_Init();
// Lcd_Cmd(LCD_CLEAR);
// Lcd_Cmd(LCD_CURSOR_OFF);
Lcd_out(1,1,"temperature: ");
// print "C"
Lcd_Chr(2,13,233);
Lcd_Chr(2,14,"C");

// - main loop
do{
// perform temperature reading
OW_Reset();
Ow_Write(0xCC);
Ow_Write(0x44);
Delay_us(120);

Ow_Reset();
Ow_Write(0xCC);
Ow_Write(0xBE);

temp = Ow_Read();
temp = (Ow_Read() ‹‹ + temp;

//
display_temp(temp);
Delay_ms(500);
} while(1);



}
Реклама:
deeman30rus вне форума  
Непрочитано 06.02.2010, 13:26  
lyk
Гражданин KAZUS.RU
 
Регистрация: 20.05.2005
Сообщений: 660
Сказал спасибо: 40
Сказали Спасибо 186 раз(а) в 116 сообщении(ях)
lyk на пути к лучшему
По умолчанию Re: помогите разобраться с кодом Micro C for AVR

Хелп читали?
unsigned short Ow_Reset(unsigned short *port, unsigned short pin);
unsigned short Ow_Read(unsigned short *port, unsigned short pin);
И где вы такой пример нашли, тот что идет в комлекте с прогой, компилится нормально.
lyk вне форума  
Непрочитано 06.02.2010, 16:10  
deeman30rus
Частый гость
 
Регистрация: 02.04.2009
Сообщений: 42
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
deeman30rus на пути к лучшему
По умолчанию Re: помогите разобраться с кодом Micro C for AVR

в комплект с прогой идёт что-то типа мануала, вот в нём нашёл, там и табличка для ow_reset() точно помню в графе parameters стояло none...

тогда что я ставлю в скобки ? PORTB, PINB ?
deeman30rus вне форума  
Непрочитано 06.02.2010, 22:10  
lyk
Гражданин KAZUS.RU
 
Регистрация: 20.05.2005
Сообщений: 660
Сказал спасибо: 40
Сказали Спасибо 186 раз(а) в 116 сообщении(ях)
lyk на пути к лучшему
По умолчанию Re: помогите разобраться с кодом Micro C for AVR

Сообщение от deeman30rus Посмотреть сообщение
в комплект с прогой идёт что-то типа мануала, вот в нём нашёл, там и табличка для ow_reset() точно помню в графе parameters стояло none...

тогда что я ставлю в скобки ? PORTB, PINB ?
Ow_Reset(&PORTB, 2); // Onewire reset signal
если датчик висит на порте B, pin 2

Откройте проект c:\Program Files\Mikroelektronika\mikroC PRO for AVR\Examples\Development Systems\EasyAVR6\One Wire\OneWire.mcpav
и внимательно его изучите.
Версия mikroC у вас какая?
lyk вне форума  
Сказали "Спасибо" lyk
deeman30rus (08.02.2010)
Непрочитано 08.02.2010, 12:12  
deeman30rus
Частый гость
 
Регистрация: 02.04.2009
Сообщений: 42
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
deeman30rus на пути к лучшему
По умолчанию Re: помогите разобраться с кодом Micro C for AVR

версия 2.1,

да спасибо пример нашёл, компилится нормально, только температуру выдаёт неверно, собрал модель в протеусе датчике менял значения от 23 до 100 , постоянно выдаёт температуру 0.5 ... это из-за прошивки или модель неправильная ?

Последний раз редактировалось deeman30rus; 08.02.2010 в 12:42.
deeman30rus вне форума  
Непрочитано 08.02.2010, 17:58  
lyk
Гражданин KAZUS.RU
 
Регистрация: 20.05.2005
Сообщений: 660
Сказал спасибо: 40
Сказали Спасибо 186 раз(а) в 116 сообщении(ях)
lyk на пути к лучшему
По умолчанию Re: помогите разобраться с кодом Micro C for AVR

Сообщение от deeman30rus Посмотреть сообщение
версия 2.1,

да спасибо пример нашёл, компилится нормально, только температуру выдаёт неверно, собрал модель в протеусе датчике менял значения от 23 до 100 , постоянно выдаёт температуру 0.5 ... это из-за прошивки или модель неправильная ?
Причин может быть много...
Попробуйте в ветку по протеусу закинуть свой проект, может кто-то подскажет.
Я протеусу не очень доверяю, лучше на макетке.
lyk вне форума  
Непрочитано 08.02.2010, 18:30  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,528
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: помогите разобраться с кодом Micro C for AVR

похоже датчик не читается. Т.е. нули по шине считываются.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 09.02.2010, 11:46  
deeman30rus
Частый гость
 
Регистрация: 02.04.2009
Сообщений: 42
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
deeman30rus на пути к лучшему
По умолчанию Re: помогите разобраться с кодом Micro C for AVR

когда я в протеусе меняю частоту на 8МГц на CKSEL Fuses, (в прошивке пишу для контроллера часы ему выставляю на 8МГц) он у меня начинает гнать какие то левые числа .... причём повышение/уменьшение температуры на 1 градус, соответствуют повышению/уменьшению значения, отображаемого на дисплее на 8, если доходит до нуля то в отрицательное не уходит, а прибавляется ....

кстати, если уж зашла речь о макетке, не в курсе сколько будет стоить такой датчик ?

Последний раз редактировалось deeman30rus; 09.02.2010 в 15:08.
deeman30rus вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Codevision AVR + AVR Studio помогите разобраться с отладкой Daget Микроконтроллеры, АЦП, память и т.д 24 07.03.2011 14:41
Помогите разобраться с SPI AVR Basan Микроконтроллеры, АЦП, память и т.д 30 02.09.2010 17:31
Помогите разобраться с кодом _grey_ Микроконтроллеры, АЦП, память и т.д 1 23.07.2010 19:16
mega8 помогите разобраться с кодом AGAT0365 Микроконтроллеры, АЦП, память и т.д 10 27.05.2010 16:08
WinAVR+avrLibc+AVR Studio помогите разобраться di_halt Микроконтроллеры, АЦП, память и т.д 17 14.01.2009 23:04


Часовой пояс GMT +4, время: 00:32.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot