BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

Re: BASCOM AVR в вопросах и ответах

Сообщение selco »

Добрый вечер,всем! Подскажите пожалуйста как разделить число точками,есть показания частоты 7100000 а нужно так 7.100.000 я уже всё перепробовал не получилось. Если кто делал киньте кусок примера.
СПАСИБО!
Реклама
Аватара пользователя
Moto_v3x
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Ср мар 31, 2010 11:45:58
Откуда: Славянск

Re: BASCOM AVR в вопросах и ответах

Сообщение Moto_v3x »

или так

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

Disp = Fusing(frequency , "#.######")
 Text$ = Left(disp , 2) + Mid(disp , 3 , 3) + "."
 Text$ = Text$ + Right(disp , 3)
 print Text$


или так

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

Disp = Str(frequency)
 Setfont My12_16
 Text$(1) = Left(disp , 2)
 Text$(2) = Mid(disp , 3 , 3)
 Text$(3) = Right(disp , 3)
 Lcdat 4 , 15 , Text$(1) , 0
 Lcdat 4 , 47 , Text$(2) , 0
 Lcdat 4 , 83 , "." , 0
 Lcdat 4 , 91 , Text$(3) , 0


все зависит от шрифта и типа дисплея
Реклама
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

Re: BASCOM AVR в вопросах и ответах

Сообщение selco »

Для 1602 и нокиа3310.
Аватара пользователя
Moto_v3x
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Ср мар 31, 2010 11:45:58
Откуда: Славянск

Re: BASCOM AVR в вопросах и ответах

Сообщение Moto_v3x »

по идее должно подойти, особенно для 3310, а так это для GLCD128x64 на KS0108 делалось
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

Re: BASCOM AVR в вопросах и ответах

Сообщение selco »

Спасибо! Я попробую, может у кого и на 1602 найдётся.
Реклама
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение KOTик »

Доброй ночи всем неспящим котам :)
Набросал примитивную схему, состряпал прошивку. Погонял на макетке - работает замечательно!
Есть одно НО...

На портуХХ висит кнопка с замыканием на землю и, естественно, порт работает как вход.
Для индикации режима хочу туда же повесить ЛЕД, концом на минус. Портов свободных не осталось :(
А потому обращаюсь к знатокам.
Как можно динамично менять (сконфигурировать) порт из ввода на вывод и обратно?
Такое вообще возможно или это из области фантастики? :)
Никто не подкинет примерчик?
(Может как-то по таймеру, счетчику)
___
(P.S. Переходить на тиньку2313 - нет АЦП; мега8 - слишком жирно; в наличии тини13/45/85 - самое то. Не хочу лочить Ресет)
Реклама
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: BASCOM AVR в вопросах и ответах

Сообщение aleksandr-zh »

всё реально - я так же делал

Изображение

Led_key Alias Portb.1 ' Св.диод + кнопка

...

Config Pinb.1 = Input 'опрос кнопки. Если нажата - в Настройку
If Pinb.1 = 1 Then Goto Setup_cikl ' 1= нажата

...

Config Portb.1 = Output
Led_key =1
marss70
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пт май 25, 2012 21:43:14

Re: BASCOM AVR в вопросах и ответах

Сообщение marss70 »

selco писал(а):Для 1602 и нокиа3310.

Я делаю так:

преобразовываю свою переменную в строковую, а потом форматирую по "маске"

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

.
.
Dim A As Word , Astr As String * 5

.
.
.

Astr = Str(a)
Astr = Format(astr , "00.000")
.
.

Lcd Astr
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение KOTик »

Мяууу всем котам :)
Делаю моргалку с 5 эффектами мигания на тини13.
Выбранный эффект сохраняется в еепром (это мой первый проектик на еепром и я просто счастлив) :)) .
Хочу добавить сервисный ЛЕД, мигание которого будет зависеть от номера выбранного эффекта.
    - нажал 1 раз - Serviceled мигнул 1 раз и потух, запустился эффект №1
    - нажал 2 раза - Serviceled мигнул 2 раза и потух, запустился эффект №2
    - ...
    - ...
    - нажал 5 раз - Serviceled мигнул 5 раз и потух, запустился эффект №5
Мигание сервисного светодиода происходит только при выборе эффекта (в момент нажатия или отпускания кнопки). Далее он должен потухнуть.

А вот, собственно, вопрос:
Как можно инкрементировать кол-во миганий Serviceled с каждым нажатием кнопки?

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

...
Serviceled = 1 : waitms 200 : Serviceled = 0
...

Код мигания примитивный, но как его привязать к кол-ву нажатий ума не приложу :(
Писать это в ручную 2-3-4-5 раз наверно нерационально, неправильно и память МК не хватит.
Аватара пользователя
htscooter
Вымогатель припоя
Сообщения: 566
Зарегистрирован: Вт ноя 18, 2008 20:33:17
Откуда: г.Луганск

Re: BASCOM AVR в вопросах и ответах

Сообщение htscooter »

Подсчитать количество нажатий, сохранить в переменную. Эту переменную передать в цикл For To Next, количество проходов в котором и будет зависеть от этой переменной.
Хорошо и надежно работающая система безусловно красива
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: BASCOM AVR в вопросах и ответах

Сообщение amv2000 »

KOTик писал(а):Код мигания примитивный, но как его привязать к кол-ву нажатий ума не приложу

Несколько страниц назад это уже разбирали, в частности на 176.

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

'----------
'                                    процедуры
'----------
Мигаем:
 For Период = 1 To 6                                        ' запускаем цикл здесь 010101 т.е три раза моргаем
    Toggle Светодиод : Waitms 500                           ' инвертируем порт в.1 каждые 0,5 сек  'Повторяемый блок
 Next Период                                                ' в начало цикла
Return                                                      ' возврат в главный цикл
asd81
Прорезались зубы
Сообщения: 247
Зарегистрирован: Вс ноя 06, 2011 16:59:31

Re: BASCOM AVR в вопросах и ответах

Сообщение asd81 »

приветствую. как настроить компилятор в баском 1.11.9.8 ? беру рабочий откомпилированный проект и компилирую по новой- ругается. до этого думал что у меня ошибки, но и без моих вмешательств компиляция идет с ошибками.
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: BASCOM AVR в вопросах и ответах

Сообщение aleksandr-zh »

в новых версиях компилятора немного обновлён синтаксис команд, LCD, иначе обрабатывается "_" и прочее...
поищите версию поновее
asd81
Прорезались зубы
Сообщения: 247
Зарегистрирован: Вс ноя 06, 2011 16:59:31

Re: BASCOM AVR в вопросах и ответах

Сообщение asd81 »

при компиляции выдает это. ругается на первые две строки
Вложения
ошибки.PNG
(26.42 КБ) 441 скачивание
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: BASCOM AVR в вопросах и ответах

Сообщение aleksandr-zh »

возможно, подпрограмма не определена оператором Declare Sub
domrustika
Грызет канифоль
Сообщения: 257
Зарегистрирован: Чт мар 22, 2007 13:50:33
Откуда: казань
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение domrustika »

здрасте. работает все, кроме показания давления. часы ds1307 и датчик давления bmp085 оба повесил на scl и sda соответственно. камень- мега 16. весь код не смотрите :) не работает только effect3 - это как раз вывод давления

нашел проблему. датчик не правильно показывает давление при подключенных часах ds1307. видимо потому что оба лежат на sda и scl . как их как то разграничить что ли ?
Спойлер$regfile = "m16def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 8
$framesize = 52

' настройка подключения пинов дисплея 3310 clock-clk, dout-sdin
Config Portc.2 = Output
D3310dc Alias Portc.2
Config Portc.3 = Output
D3310ce Alias Portc.3
Config Spi = Soft , Din = None , Dout = Portc.5 , Ss = None , Clock = Portc.4
Spiinit
$include "3310init.bas"

'периферия

Config Sda = Portc.1 ' I2C Data
Config Scl = Portc.0 ' I2C Clock
Config Serialin = Buffered , Size = 128
Config Serialout = Buffered , Size = 128


' переменные ds1307
Dim Seco As Byte
Dim Mine As Byte
Dim Hour As Byte
Dim Dat As Byte
Dim Day As Byte
Dim Month As Byte
Dim Year As Byte
'переменные для преобразования часов из цифр в строки
Dim Hh As String * 2
Dim Minut As String * 2
Dim Second As String * 2
Dim Datt As String * 2
Dim Monthe As String * 10
Dim Yeare As String * 3
Dim Day2 As String * 10

' переменные для dht11
Dim T3 As Byte '??????????? ??? ???????? ???????????
Dim H2 As Byte '?????????? ??? ???????? ?????????
Dim Crc As Byte '?????????? ??? ???????? ????? ????????
Dim Mybyte As Byte
Dim Sensor_data As String * 40 '???? ????? ???????????? ?????? ?????????? ????????
Dim Tmp_str8 As String * 8
Dim Count As Byte '?????????? ??? ???????? ???????? ???
' переменные для преобразования температуры и влажности
Dim Vl As String * 5
Dim Ss2 As String * 5

' переменная для смены страниц
Dim Stramica As Integer
' процедура старта часов
Declare Sub Inittimer
' процедура измерения температуры и влажности dht11
Declare Sub Get_th(t3 As Byte , H2 As Byte)
'подключение датчика dht 11 к PortD.3
Dht_put Alias Portd.3
Dht_get Alias Pind.3
Dht_io_set Alias Ddrd.3

' ниже все для датчика давления bmp085
Declare Sub Messen
Dim Ac1 As Integer
Dim Ac1a As Long
Dim Ac2 As Integer
Dim Ac3 As Integer
Dim Ac4 As Word
Dim Ac5 As Word
Dim Ac5a As Single
Dim Ac6 As Word
Dim B1 As Integer
Dim B2 As Integer
Dim B3 As Long
Dim B3a As Long
Dim B4 As Long
Dim B5 As Long
Dim B6 As Integer
Dim B6a As Long
Dim B7 As Long
Dim Mb As Integer
Dim Mc As Integer
Dim Mc2 As Long
Dim Md As Integer
Dim Adres As Byte
Dim Wert As Byte
Dim Ut As Long
Dim X1 As Long
Dim X1t As Single
Dim X2 As Long
Dim X3 As Long
Dim T As Single
Dim T2 As Long
Dim Temperatur As String * 6
Dim Luftdruck As String * 8
Dim Druck As Single

Dim P As Long
Dim P2 As Long
Dim 2potenz15 As Long
Dim 2potenz11 As Integer
Dim 2potenz13 As Integer
Dim 2potenz8 As Integer
Dim 2potenz4 As Integer
Dim 2potenz2 As Integer
Dim 2potenz16 As Long
Dim 2potenz12 As Integer
Dim Potenz5255 As Single
Dim Altitude As Single
Dim Altitudes As String * 8
Dim Msb As Long
Dim Lsb As Long
Dim Up As Long
Dim Druckvar As Byte


Declare Sub Berechne_temp
Declare Sub Berechne_druck
Declare Sub Schreibe_bmp085(byval Adres As Byte , Byval Wert As Byte)
Declare Sub Lese_bmp085(byval Adres As Byte , Wert As Byte)
Declare Sub Lese_roh_daten

Declare Sub Lese_kalib_data

Const Addr_schreiben = &B11101110 'адрес микросхемы + запись
Const Addr_lesen = &B11101111 'адрес микросхемы + чтение



Enable Interrupts

Set Dht_io_set
Set Dht_put

Call D3310init
Stramica = 0
'Gosub Inittimer 'Запустить 1 Раз
Do
Incr Stramica

If Stramica > 0 And Stramica < 10 Then
If Stramica = 1 Then
Call D3310clear
End If
Gosub Effect1
End If

If Stramica > 9 And Stramica < 19 Then
If Stramica = 10 Then
Call D3310clear
End If
Gosub Effect3
End If

If Stramica > 18 And Stramica < 38 Then
If Stramica = 19 Then
Call D3310clear
End If
Gosub Effect2
End If

If Stramica > 37 Then
Stramica = 0
End If

Waitms 920
Loop
End
$include "3310end.bas"
$include "Dom.bas"

Effect1:

Restore Dom
Call D3310bmpout
' выводим температуру
Call D3310position(11 , 5)
Call Get_th(t3 , H2) ' вызов функции измерения температуры и влажности
Vl = Str(t3) ' Возвращает строку с десятичным значением числа (влажность)
Call D3310print(vl) ' выводим значение влажности


' выводим влажность
Call D3310position(11 , 4)
'Call Get_th(t3 , H2) ' вызов функции измерения температуры и влажности
Vl = Str(h2) ' Возвращает строку с десятичным значением числа (влажность)
Call D3310print(vl) ' выводим значение влажности
Return

Effect2:
'Теперь выведем время
I2cstart
I2cwbyte &HD0
I2cwbyte &H00
I2cstart
I2cwbyte &HD1
I2crbyte Seco , Ack
I2crbyte Mine , Ack
I2crbyte Hour , Ack
I2crbyte Day , Ack ' число месяца
I2crbyte Dat , Ack ' день недели
I2crbyte Month , Ack ' месяц
I2crbyte Year , Nack ' год
I2cstop
Seco = Makedec(seco)
Mine = Makedec(mine)
Hour = Makedec(hour)
' Day = Makedec(day)
Dat = Makedec(dat)
Month = Makedec(month)
Year = Makedec(year)


Call D3310position(4 , 0)
Call D3310print( "Время:")
Call D3310position(0 , 1)

Hh = Str(hour)
If Hour < 10 Then
Call D3310print( "0")
Call D3310print(hh)
Else
Call D3310print(hh)
End If
Call D3310position(2 , 1)
Call D3310print( ":")
Call D3310position(3 , 1)

Minut = Str(mine)
If Mine < 10 Then
Call D3310print( "0")
Call D3310print(minut)
Else
Call D3310print(minut)
End If
'(
Call D3310position(5 , 1)
Call D3310print( ":")

Call D3310position(6 , 1)
Second = Str(seco)
If Seco < 10 Then
Call D3310print( "0")
Call D3310print(second)
Else
Call D3310print(second)
End If
')
Call D3310position(4 , 2)
Call D3310print( "Дата:")
Call D3310position(0 , 3)

Datt = Str(dat)
If Dat < 10 Then
Call D3310print( "0")
Call D3310print(datt)
Else
Call D3310print(datt)
End If

Call D3310position(3 , 3)

Select Case Month
Case 1 : Call D3310print( "Января")
Case 2 : Call D3310print( "Февраля")
Case 3 : Call D3310print( "Марта" )
Case 4 : Call D3310print( "Апреля")
Case 5 : Call D3310print( "Мая")
Case 6 : Call D3310print( "Июня")
Case 7 : Call D3310print( "Июля")
Case 8 : Call D3310print( "августа")
Case 9 : Call D3310print( "Сентября" )
Case 10 : Call D3310print( "Октября " )
Case 11 : Call D3310print( "Ноября")
Case 12 : Call D3310print( "Декабря")
Case Else : Month = 1
End Select

Call D3310position(10 , 3)
Call D3310print( "20")
Call D3310position(12 , 3)
Yeare = Str(year)
Call D3310print(yeare)



Call D3310position(3 , 5)
Select Case Day
Case 1 : Call D3310print( "Понедельник")
Case 2 : Call D3310print( "Вторник")
Case 3 : Call D3310print( "Среда" )
Case 4 : Call D3310print( "Четверг")
Case 5 : Call D3310print( "Пятница")
Case 6 : Call D3310print( "Суббота")
Case 7 : Call D3310print( "Воскресенье")
Case Else : Day = 1
End Select
Return

Effect3:
Waitms 1500



Call Messen
'T = T / 10
'Temperatur = Fusing(t , "###.##")
'Potenz5255 = 1 / 5.255
'Altitude = P / 101325
'Altitude = Altitude ^ Potenz5255
'Altitude = 1 - Altitude
'Altitude = Altitude * 44330
Druck = P
Druck = Druck * 0.0075
Luftdruck = Fusing(druck , "####.##")

'Altitudes = Fusing(altitude , "#####.##")



Call D3310position(0 , 3)
Call D3310print( "Па:")
Call D3310print(luftdruck)
Call D3310print( " мм")



Return

'Запустим часы
Sub Inittimer
Seco = 00
Seco = Makebcd(seco)
I2cstart
I2cwbyte &HD0
I2cwbyte 0
I2cwbyte Hour
I2cstop

Mine = 00
Mine = Makebcd(mine)
I2cstart
I2cwbyte &HD0
I2cwbyte 1
I2cwbyte Mine
I2cstop

Hour = 00
Hour = Makebcd(hour)
I2cstart
I2cwbyte &HD0
I2cwbyte 2
I2cwbyte Hour
I2cstop

Dat = 14
Dat = Makebcd(dat)
I2cstart
I2cwbyte &HD0
I2cwbyte 4 ' адрес хранения даты
I2cwbyte Dat
I2cstop

Month = 08
Dat = Makebcd(month)
I2cstart
I2cwbyte &HD0
I2cwbyte 5 ' адрес хранения месяца
I2cwbyte Month
I2cstop

Year = 13
Year = Makebcd(year)
I2cstart
I2cwbyte &HD0
I2cwbyte 6 ' адрес хранения года
I2cwbyte Year
I2cstop
End Sub

Sub Get_th(t3 As Byte , H2 As Byte)

Count = 0
Sensor_data = ""
Set Dht_io_set '?????? PD.6 ???????
Reset Dht_put '????????? ???? ? ?????
Waitms 25 '???? ?? ????? 18??

Set Dht_put '????????? ????
Waitus 40
Reset Dht_io_set '?????? PD.6 ??????
Waitus 40 '???? 40 ???
If Dht_get = 1 Then '???? ?? ??? ?? ???????? 1
H2 = 1 '?????? ?????? ?? ???????
Exit Sub '??????? ?? ????????????
End If

'???? ?????? ??????? ? ?????? ???? ? ????? ?????????? ??????
Waitus 80 '???? ??? 80 ???
If Dht_get = 0 Then '???? ?? ????? ?? ???????? 0
H2 = 2 '?????? ?????? ????? ? ???
Exit Sub '??????? ?? ????????????
End If

'???? ??? ????????? ? ?????? ??????? ?????????, ????? ??????????

While Dht_get = 1 : Wend '???? ???? ?? ???? ???????? 1

Do '???????? ????????? 40 ??? ??????
While Dht_get = 0 : Wend '???? ????????? ?? ???? 0
Waitus 30 '????? ????????? 0 ???? 30???
If Dht_get = 1 Then '???? ?? ???? 1
Sensor_data = Sensor_data + "1" '?????????? ? ?????????? ??? ???????
While Dht_get = 1 : Wend '? ???? ???? ?????? ???????? ????????? ???
Else '?????, ???? ??? ??? 0
Sensor_data = Sensor_data + "0" '?????????? ???? 0 ? ??????????
End If
Incr Count '??????????? ??????? ?? 1
Loop Until Count = 40 '????????? ???? ??????? ?? ????????? ?? 40

Set Dht_io_set
Set Dht_put

'???????? ???????????? ?????????? ??????

Tmp_str8 = Left(sensor_data , 8) '????? ????? 8 ???????? ??????????
H2 = Binval(tmp_str8) '??? ????? ????? ?????????

Tmp_str8 = Mid(sensor_data , 17 , 8) '??????????? 8 ???????? ?? ????????
T3 = Binval(tmp_str8) '??? ????? ????? ???????????

Tmp_str8 = Right(sensor_data , 8) '?????? 8 ????????
Crc = Binval(tmp_str8) '??????????? ??????

'???????? ??????????? ?????

Mybyte = T3 + H2 '?????????? ???????? ??????????? ? ?????????
If Mybyte <> Crc Then '???? ??????????? ????? ?? ???????
H2 = 3 '?????? ?????????? ?????? ?? ?????
End If

End Sub

' ниже процедуры для датчика давления

Sub Messen
'Измерение температуры
Call Schreibe_bmp085(&Hf4 , &H2E)
Adres = &HF6
Call Lese_roh_daten
'Print "msb " ; Msb
'Print "lsb " ; Lsb
Shift Msb , Left , 8
'Print "msb shift " ; Msb
Ut = Msb + Lsb
Call Berechne_temp


'Измерение давления
Call Schreibe_bmp085(&Hf4 , &H74 )
Adres = &HF6
Call Lese_roh_daten
Shift Msb , Left , 16
Shift Lsb , Left , 8
Up = Msb + Lsb
Shift Up , Right , 6
'Print "msb " ; Msb ; "lsb " ; Lsb ; "up " ; Up
Call Berechne_druck
End Sub


Sub Berechne_temp
'X1
Ut = Ut - Ac6
2potenz15 = 2 ^ 15
Ac5a = Ac5 / 2potenz15
X1t = Ut * Ac5a
'Print "X1 " ; X1t

'X2
2potenz11 = 2 ^ 11
Mc2 = Mc * 2potenz11
X3 = X1t + Md
X2 = Mc2 / X3
'Print "X2 " ; X2
'B5

B5 = X1t + X2
'Print "B5 " ; B5
'T
2potenz4 = 2 ^ 4
T2 = B5 + 8
T = T2 / 2potenz4



End Sub


Sub Berechne_druck
'B6
B6 = B5 - 4000
'X1
2potenz12 = 2 ^ 12
B6a = B6 * B6
B6a = B6a / 2potenz12
X1 = B2 * B6a
X1 = X1 / 2potenz11
'X2
X2 = Ac2 * B6
X2 = X2 / 2potenz11
'X3
X3 = X1 + X2
'B3
Ac1a = Ac1 * 4
Ac1a = Ac1a + X3
Shift Ac1a , Left , 2
Ac1a = Ac1a + 2
B3 = Ac1a / 4
'X1 die zweite
2potenz13 = 2 ^ 13
B6a = B6 / 2potenz13
X1 = Ac3 * B6a
'X2 die zweite
B6a = B6 * B6
B6a = B6a / 2potenz12
X2 = B1 * B6a
2potenz16 = 2 ^ 16
X2 = X2 / 2potenz16
'X3 die zweite
X3 = X1 + X2
X3 = X3 + 2
2potenz2 = 2 ^ 2
X3 = X3 / 2potenz2
'B4
B4 = X3 + 32768
B4 = B4 * Ac4
B4 = B4 / 2potenz15
If B4 <= 0 Then B4 = B4 * -1

'Print B4
'B7
B7 = Up - B3
B3a = 50000
Shift B3a , Right , 2 '
B7 = B7 * B3a
If B7 <= 0 Then B7 = B7 * -1

'Print B7
If B7 < &H80000000 Then
P = B7 * 2
'Print "p1 " ; P
P = P / B4
'Print "p1 " ; P
Else
P = B7 / B4
'Print "p2 " ; P
P = P * 2
'Print "p2 " ; P
End If

'Print P
'nochmal X1
2potenz8 = 2 ^ 8
P2 = P / 2potenz8
X1 = P2 * P2
'Print X1

X1 = X1 * 3038
X1 = X1 / 2potenz16
'Print X1

' nochmal X2
X2 = -7357 * P
X2 = X2 / 2potenz16

'Print X2
P2 = P
P = X2 + 3791
P = P + X1
P = P / 2potenz4
P = P + P2

End Sub


Sub Lese_kalib_data
Adres = &HAA
'Ac1 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac1 = Msb + Lsb

Adres = Adres + 1
'Ac2 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac2 = Msb + Lsb

Adres = Adres + 1
'Ac3 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac3 = Msb + Lsb

Adres = Adres + 1
'Ac4 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac4 = Msb + Lsb

Adres = Adres + 1
'Ac5 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac5 = Msb + Lsb

Adres = Adres + 1
'Ac6 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Ac6 = Msb + Lsb

Adres = Adres + 1
'B1 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
B1 = Msb + Lsb

Adres = Adres + 1
'B2 lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
B2 = Msb + Lsb

Adres = Adres + 1
'MB lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Mb = Msb + Lsb

Adres = Adres + 1
'MB lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Mc = Msb + Lsb

Adres = Adres + 1
'Md lesen
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
Shift Msb , Left , 8
Md = Msb + Lsb

Adres = Adres + 1
End Sub




Sub Lese_roh_daten
Call Lese_bmp085(adres , Wert)
Msb = Wert
Adres = Adres + 1
Call Lese_bmp085(adres , Wert)
Lsb = Wert
End Sub

Sub Schreibe_bmp085(byval Adres As Byte , Byval Wert As Byte)
I2cstart
I2cwbyte Addr_schreiben
I2cwbyte Adres
I2cwbyte Wert
I2cstop
Waitms 10
End Sub


Sub Lese_bmp085(byval Adres As Byte , Wert As Byte)
I2cstart
I2cwbyte Addr_schreiben
I2cwbyte Adres
I2cstart
I2cwbyte Addr_lesen
I2crbyte Wert , Nack
I2cstop
Waitms 10
End Sub
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

domrustika, самое простое - разведи их на разные ноги.
domrustika
Грызет канифоль
Сообщения: 257
Зарегистрирован: Чт мар 22, 2007 13:50:33
Откуда: казань
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение domrustika »

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

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

Ошибся я. Это по 1-Wire можно произвольно ноги цеплять.
По I2C только адресация. Вот тут все написано: http://scbist.com/datasheets/microchip/ ... C_INTR.pdf
asd81
Прорезались зубы
Сообщения: 247
Зарегистрирован: Вс ноя 06, 2011 16:59:31

Re: BASCOM AVR в вопросах и ответах

Сообщение asd81 »

подскажите что такое basc- avr.dll и где его скачать? спасибо
Ответить

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