Прошу помощи по коду на BASCOM AVR

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
MHZ
Грызет канифоль
Сообщения: 270
Зарегистрирован: Сб июн 20, 2009 13:31:31

Прошу помощи по коду на BASCOM AVR

Сообщение MHZ »

Прошу помощи по коду на BASCOM AVR

Вот код регулятора влажности и температуры на датчике DHT11
termosts.zip
(8.42 КБ) 356 скачиваний


А вот код для DHT22, но не могу скомпилировать
termostat_dht22.rar
(4.45 КБ) 299 скачиваний


В чём может быть проблема?
Создать электронный мир проще,чем его понять.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: Прошу помощи по коду на BASCOM AVR

Сообщение vem566 »

Ошибки описаны в начале исходника. Все комментарии, обозначены как '? поставлены мною. После исправления ошибок комментарии убрать - все должно работать.
Вложения
termostat_dht22_M.zip
(4.76 КБ) 278 скачиваний
Аватара пользователя
MHZ
Грызет канифоль
Сообщения: 270
Зарегистрирован: Сб июн 20, 2009 13:31:31

Re: Прошу помощи по коду на BASCOM AVR

Сообщение MHZ »

подправил, сейчас компилятору не нравится строчка Dim Kod As Dword At $11e (файл прилагаю),что ещё можете посоветовать?
termostat_dht22_correct.rar
(3.86 КБ) 199 скачиваний
Создать электронный мир проще,чем его понять.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: Прошу помощи по коду на BASCOM AVR

Сообщение vem566 »

Тут все просто. Нужно добавить overlay. И по прежнему нет процедуры Read_timings. А вызов её есть.
Аватара пользователя
MHZ
Грызет канифоль
Сообщения: 270
Зарегистрирован: Сб июн 20, 2009 13:31:31

Re: Прошу помощи по коду на BASCOM AVR

Сообщение MHZ »

Всё исправил, сейчас всё компилируется. Прошил показания датчика 0 0 похоже не опрашивается или опрашивается но не так. Похоже в алгоритме опроса косяк. :(
termostat_dht22_correct2.rar
(3.85 КБ) 224 скачивания
Создать электронный мир проще,чем его понять.
virb
Родился
Сообщения: 1
Зарегистрирован: Ср май 21, 2014 07:56:43

Re: Прошу помощи по коду на BASCOM AVR

Сообщение virb »

Добрый день!
Я тоже хочу регулятор влажности и температуры сделать используя DHT22. Но для начала занялся поиском работающего кода баском хотя бы просто высвечивать температуру и влажность. Испробовал несколько вариантов. Только вот прикрепленный внизу код заставил корректно работать с датчиком DHT22.
Может получится измерительную часть кода отсюда взять, а исполняющую часть из кода термостата, который вы выложили выше

Код: Выделить всё

'######################## DHT-22 Humidity & Temperature Sensor####################
' DHT-22
'
'  |-----o-- Vcc
'  |     |
'  |     -
'  |     10k
'  |     -
'  |     |
'  |-----o-- Data ~~~ PC0 (?C)
'  |
'  |-------- NC
'  |
'  |-------- GND
'
'  Timings: Bit = 0 ~ 28 ?s / Bit = 1 ~ 70 ?s
'  Min_time = 28 ?s < TCNT0 Value (ticks) < 70 ?s  (in ticks)
'  every time > Min_time >>> Bit = 1
'  every time < Min_time >>> Bit = 0
'
'  Min_time ~ 20 (ticks) for 3.6864 MHz
'
' ~ ticks for Bit = 0: 26 ?s * $crystal (in MHz) / Prescale = 460800*0,000026=11,96 dla mojej czestotliwoasi  ==26
' ~ ticks for Bit = 1: 70 ?s * $crystal (in MHz) / Prescale = 460800*0,000070=32,25 dla mojej czestotliwosci  ==70
' zmienilem Min_time z 20 na 48
'
'######################## DHT-22 Humidity & Temperature Sensor####################


$regfile = "m8def.dat"
'$crystal = 3686400
$crystal = 8000000                                          'taktowanie
'$baud = 115200                                              'Liczba okreslajaca szybkosc pracy lacza RS 232 w bitach na sekunde (bod)
'stala okreslajaca rozmiar wybranego stosu

'$hwstack = 64
'$swstack = 64
'$framesize = 64

'#####################################

Config Pind.6 = Input
Config Timer0 = Timer , Prescale = 8
Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0
Config Lcd = 16 * 2
Cursor = Off
Cls                                                         'konfiguracja linii
      'mikrokontrolera, do ktorych
      'dolaczono wyswietlacz
      'LCD

'#####################################

'Const Min_time = 20
Const Min_time = 48                                         'this has to be changed according to your frequency settings in $crystal

Dim Count As Byte
Dim Signaltime(43) As Byte
Dim Humidityw As Word
Dim Temperaturew As Word
Dim Humsens_chksum As Byte

Dim Humiditys As String * 16
Dim Temperatures As String * 16

'#####################################

Declare Sub Read_timings
Declare Sub Humtemp_values
Declare Function Compare_chksum(byval Hsens_humidity As Word , Byval Hsens_temperature As Word , Byval Hsens_chksum As Byte) As Byte

'##################################### Main loop
Lcd "DHT22 TEST"
Wait 1

Do

  Call Humtemp_values

 ' If Compare_chksum(humidityw , Temperaturew , Humsens_chksum) = 1 Then

   Humiditys = Str(humidityw)
   Temperatures = Str(temperaturew)

   Cls

  Lcd "Humi: " ; Format(humiditys , "0.0") ; " %"
  Lowerline
  Lcd "Temp: " ; Format(temperatures , "0.0") ; " C"
  Waitms 100
  'Else

  ' Lcd "Read Error"

  'End If

Loop

End

'#############################################################  Read timings
' measure time (in ticks) for signal = high (Start / Stop  TIMER0)
' 1st two measurements do not contain sensor values

Sub Read_timings

   Wait 3

   Count = 1

   Config Pind.6 = Output : Portc.0 = 0                     ' request data
   Waitms 20                                                ' wait 20 ms
   Config Pind.6 = Input                                    ' wait for data, receive data

   While Count < 43                                         'collect 42 timings / signals

      Bitwait Pind.6 , Set                                  'signal goes high > start timer
      Start Timer0
      Bitwait Pind.6 , Reset                                'signal goes low  > stop timer
      Stop Timer0
      Signaltime(count) = Tcnt0                             'store number of ticks per signal in Signaltime byte

      Tcnt0 = 0
      Incr Count

  Wend


End Sub

'############################################################# Humidity and temperature values
'  transform timings into bits (40 timings > 40 Bits)
'  every time (in ticks) > Min_time >>> Bit = 1
'  every time (in ticks) < Min_time >>> Bit = 0
'  first word contains humidity
'  second word contains temperature
'  last byte contains checksum

Sub Humtemp_values

   Local X As Byte

   Humidityw = 0
   Temperaturew = 0
   Humsens_chksum = 0

   Call Read_timings

   For Count = 3 To 42                                      ' skip first two

      Select Case Count

         Case 3 To 18
            X = 18 - Count
            If Signaltime(count) > Min_time Then Toggle Humidityw.x

         Case 19 To 34
            X = 34 - Count
            If Signaltime(count) > Min_time Then Toggle Temperaturew.x

         Case 34 To 42
            X = 42 - Count
            If Signaltime(count) > Min_time Then Toggle Humsens_chksum.x

      End Select

  Next

End Sub

'############################################################# Calculate Checksum and compare with trasnmitted value


Function Compare_chksum(byval Hsens_humidity As Word , Byval Hsens_temperature As Word , Byval Hsens_chksum As Byte) As Byte

   Local Chksum As Byte

   Chksum = Low(hsens_humidity ) + High(hsens_humidity )
   Chksum = Chksum + Low(hsens_temperature)
   Chksum = Chksum + High(hsens_temperature)

   If Chksum = Hsens_chksum Then
      Compare_chksum = 1
   Else
      Compare_chksum = 0
   End If

End Function
rozario
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Вт сен 27, 2011 09:04:38

Re: Прошу помощи по коду на BASCOM AVR

Сообщение rozario »

Нашёл я рабочий код для DHT22 с минусовой температурой.
Написан он под 88 мегу я подправил на 8 мегу и протестировал.
Всё работает без глюков и корректно.
http://www.ne.jp/asahi/shared/o-family/ ... st_101.bas
Может кто поможет в исходник вставить?
http://avrproject.ru/112/22.zip

Прошу прощения так вышло.
Там Японский язык вроде . При открытии этого веб узла просит (cplexe.exe) типа установите японский с установочного диска , а у меня шрифта нету такого.
Поэтому такая белиберда вышла.
Последний раз редактировалось rozario Чт окт 16, 2014 00:03:39, всего редактировалось 1 раз.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: Прошу помощи по коду на BASCOM AVR

Сообщение vem566 »

А зачем такой текст на несколько экранов вставлять? Что конкретно нужно? Вроде, как людям делать нечего, как эти погонные метры разбирать. Ну и русификатор нормальный в баском подключить не мешает. Комментарии то не читаемые.
rozario
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Вт сен 27, 2011 09:04:38

Re: Прошу помощи по коду на BASCOM AVR

Сообщение rozario »

Перевёл коментарии.
Вложения
Код для DHT22 с минусовой температурой.rar
(6.96 КБ) 356 скачиваний
Ответить

Вернуться в «AVR»