Options->Compiler->Chipа где их выставлять?
BASCOM AVR в вопросах и ответах
- Реклама
Re: BASCOM AVR в вопросах и ответах
У меня BASCOM 2.0.5.0
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
можно взять отсюда http://cxem.net/mc/mc183.phprus084 писал(а):как написать подпрограмму измерения частоты ?
нужно от 25гц до 200гц .
и там тоже самое...может я неправильно Вас понимаю?У меня BASCOM 2.0.5.0
Re: BASCOM AVR в вопросах и ответах
Тогда я не знаю. Я же говорю что потратил на изучение всего день. Написал программу все нормально заработало. Смотрите ваши настройкиоже самое...может я неправильно Вас понимаю?
- Реклама
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
а можно нех?прогоню в протеусе...Bear2011 писал(а):Тогда я не знаю. Я же говорю что потратил на изучение всего день. Написал программу все нормально заработало. Смотрите ваши настройкиоже самое...может я неправильно Вас понимаю?
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
Попробуй поставит всё по нулям. И в коде.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Re: BASCOM AVR в вопросах и ответах
Вот тут я выкладывал архив.
http://radiokot.ru/forum/viewtopic.php? ... 3#p1872913
В нем все - hex, исходник на BASCOM и проект в Proteus'e
http://radiokot.ru/forum/viewtopic.php? ... 3#p1872913
В нем все - hex, исходник на BASCOM и проект в Proteus'e
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
спасибо!компилируется норм,78 процентов,никогда не думал о подобном,видимо даташит невнимательно читал...Bear2011 писал(а):Вот тут я выкладывал архив.
http://radiokot.ru/forum/viewtopic.php? ... 3#p1872913
В нем все - hex, исходник на BASCOM и проект в Proteus'e
- rus084
- Друг Кота
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
но мне паралельно с измерением частоты нужно еще вычислять количество шима и значение ацп с периодом в 0.1с (быстрее ненужно)pavel1979 писал(а):можно взять отсюда http://cxem.net/mc/mc183.phprus084 писал(а):как написать подпрограмму измерения частоты ?
нужно от 25гц до 200гц .
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
А в моем варианте выше led_automat.rar посмотрите как стек сконфигурирован.pavel1979 писал(а):первый раз слышу подобное ... а где их выставлять?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- rus084
- Друг Кота
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
попытался написать программу для аттини13 . так только инициализация забрала всю память .
в чем дело?
код я почти дописал , осталось уместить в 1кб и поправить константы .
вот что должна делать программа :
согласовывать входное сопротивдение степдауна с выходным . входное вычисляется по оборотам генератора , на выходе напряжение должно быть 13в . напряжение генератора на хх около 10в*1000 оборотов . ток кз-5а
в чем дело?
код я почти дописал , осталось уместить в 1кб и поправить константы .
вот что должна делать программа :
согласовывать входное сопротивдение степдауна с выходным . входное вычисляется по оборотам генератора , на выходе напряжение должно быть 13в . напряжение генератора на хх около 10в*1000 оборотов . ток кз-5а
- elf.arxont
- Опытный кот
- Сообщения: 887
- Зарегистрирован: Пн июн 27, 2011 10:06:23
- Откуда: Донецк
Re: BASCOM AVR в вопросах и ответах
Пытаюсь потренироваться с ШИМом в BASCOM'e. Пишу:
Так вот на строчку Decr pwm1b (уменьшение скважности на выводе PWM1B) BASCOM ругается благим матом: "Error 15 Wrong data type". Что я написал не так и как это исправить?
Код: Выделить всё
$regfile = "2313def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256
Config Portb.3 = Output
Config Portb.4 = Output
Start Timer1
Do
Incr Pwm1a
Decr Pwm1b
Waitms 100
Loop
End - rus084
- Друг Кота
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
меня осинило !
можно поступить более простым алгоритмом . тем более на прерывания и шим у тини13 нехватит ресурсов.
можно поступить более простым алгоритмом . тем более на прерывания и шим у тини13 нехватит ресурсов.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Здравствуйте.elf.arxont писал(а):Пытаюсь потренироваться с ШИМом в BASCOM'e. Пишу...
Вы указали заголовочный файл 2313DEF.DAT, а это старый МК AT90S2313. И у него только один регистр сравнения - OCR1A. Потому компилятор и ругается на несуществующий регистр OCR1B (PWM1B). Просто выберите правильный контроллер, и все у Вас будет хорошо.
Код: Выделить всё
$regfile = "attiny2313.dat""Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- elf.arxont
- Опытный кот
- Сообщения: 887
- Зарегистрирован: Пн июн 27, 2011 10:06:23
- Откуда: Донецк
Re: BASCOM AVR в вопросах и ответах
edm2007, спасибо! А я-то думал, что за чертовщина, что он ругается на ровном месте. А оказалось, что это я прохлопал. AT90S2313 это ж древняя версия Тини2313, у которого даже фьюзов нет, насколько я помню. И помню, что прошивки от AT90S2313 подходят к ATtiny2313, а вот наоборот....
Поменял тип МК, все откомпилировалось
Поменял тип МК, все откомпилировалось
Re: BASCOM AVR в вопросах и ответах
Помогите инвертировать трёх разрядный семи сегментный индикатор с (ОК) в (ОА) ..исходник
$regfile = "attiny26.dat"
$hwstack = 32
$swstack = 32
$framesize = 16
$crystal = 8000000
Const #100 = &B11111111
Const #87 = &B01111111
Const #75 = &B01110111
Const #62 = &B01101101
Const #50 = &B10101010
Const #38 = &B00110010
Const #25 = &B00100010
Const #15 = &B00000011
Const #8 = &B00000001
Const Rz1 = &B00000001:
Const Rz2 = &B00000010:
Const Rz3 = &B00000100:
DdrA = &B01111111 'направление линий порта A: 1 - на вывод
PortA = &B01110000
DdrB = &B01111111
PortB = &B00000000
A Alias PortB.2 'Тут вписываем порты к которым подключены сегменты индикатора
B Alias PortB.0
C Alias PortB.4
D Alias PortB.6
E Alias PortB.5
F Alias PortB.1
G Alias PortB.3
Dp Alias PortA.6
Dig1 Alias PortA.0
Dig2 Alias PortA.1
Dig3 Alias PortA.2
UPR Alias PORTA.5
tFREQ Alias PORTA.4
BUZZ Alias PORTA.3
Dim I As Byte , X As Byte , Digs(3) As Byte , SegmLink As Byte , Dg as Byte
Dim U as Word , Ut as Word
Dim Bright as Byte
Dim WordTmp As Word , DpRz As Byte , Razr As Byte , Full As Byte
Dim Second As Byte , Minut As Byte , Hour As Byte , Delit as Byte , TickCnt As Byte ' переменные для часов
Dim MinutCh As Byte , HourCh As Byte ' Время заряда до полного
Declare Sub GetU
Declare Sub DisplU
Declare Sub DisplTime(Byval Hr as Byte , Byval Mn as Byte)
Config Timer0 = Timer , Prescale = 64 : On Timer0 Timer0_int Nosave
Config Timer1 = Timer , Prescale = 1024 : On OVF1 Timer1_int Nosave
TIMSK = &B0000110 'Enable Timer0 + Timer1
Enable Interrupts
Start TIMER0
Start TIMER1
Config Adc = Single , Prescaler = Auto , Reference = Internal 'Refrenz: 2,25 V
Bright = #100
Digs(3) = 10 : Digs(2) = 1 : Digs(1) = 7 ' Версия A1.7
DpRz = 2
' 1 минуту показываем напряжение. Для подстройки например.
Bright = #25
Do
GetU
Waitms 500
Call DisplU
Loop Until Hour = 0 and Minut = 1
StartTesting:
GetU
DpRz = 0 ' < 8 вольт. Либо очень разряжен, либо его нет совсем, либо 6 вольтовый
If U < 80 then
BegTst:
Digs(3) = 24 : Digs(2) = 14 : Digs(1) = 23 ' Дисплей "t E S"
Ut = U
UPR = 0 ' Включаю заряд
Wait 1
GetU
if U > 160 then ' Аккумулятор не подключен
UPR = 1 ' Выключаю заряд
Digs(3) = 11 : Digs(2) = 10 : Digs(1) = 24 'Дисплей "b A t"
Wait 10
Goto BegTst
end if
For i = 1 to 30
' DpRz = 1
Wait 1
DpRz.1 = NOT DpRz.1
' Waitms 500
next i
UPR = 1 ' Отключить заряд
For i = 3 to 1 step -1
DpRz = i
Wait 2
Next i
DpRz = 0
GetU
If U < Ut then ' Не заряжается
Digs(3) = 11 : Digs(2) = 10 : Digs(1) = 13 ' Дисплей "b A d"
' BUZZ = 1
' Wait 1
' BUZZ = 0
Wait 10
Goto BegTst
end if
If U > 45 and U < 80 then
Ut = 72
Goto Charge
end if
end if
Ut = 146
Charge: ' Цикл зарядки
GetU
If U > Ut then
if U > 160 then Goto BegTst
if Ut = 146 then Ut = 130
if Ut = 72 then Ut = 62
Digs(3) = 15 : Digs(2) = 25 : Digs(1) = 20 ' Дисплей "F U L"
DpRz = 0
If Full = 0 then
HourCh = Hour : MinutCh = Minut
end if
Full = 1
if HourCh = Hour AND MinutCh = Minut then
Buzz = 1
Waitms 300
Buzz = 0
end if
Wait 1
Call DisplTime(HourCh , MinutCh)
Goto Charge
end if
If Ut < 130 then
Digs(3) = 25 : Digs(2) = 33 : Digs(1) = 6 ' Дисплей "u = 6"
wait 5
end if
If Full = 1 Then ' Был заряжен на полную
Digs(3) = 24 : Digs(2) = 30 : Digs(1) = 36 ' Дисплей "t r c"
Wait 30
UPR = 0
Wait 10
UPR = 1 'Выключаю заряд
Goto Charge
end if
UPR = 0 'Включаю заряд на примерно минуту
Call DisplTime(Hour , Minut) ' Показываем 2 секунды часы ххh и две секунды минуты xx|
Call DisplU 'Напряжение на батарее
For i = 1 to 50 ' Мигает точкой 50 секунд
DpRz = 2
Waitms 500
DpRz = 0
Waitms 500
Next i
UPR = 1 'Выключаю заряд
Wait 1 ' Пауза, что бы мерить напряжение на батарее, а не выход зарядного
Goto Charge 'конец основного цикла
Sub DisplTime(Hr , Mn ) '
DpRz = 0
Digs(2) = Hr Mod 10
Hr = Hr \ 10
Digs(3) = Hr Mod 10
Digs(1) = 34
wait 2
Digs(2) = Mn Mod 10
Mn = Mn \ 10
Digs(3) = Mn Mod 10
Digs(1) = 35
wait 2
end sub
Sub DisplU
WordTmp = U
DpRz = 2
for i = 1 to 3
Digs(i) = WordTmp Mod 10
WordTmp = WordTmp \ 10
next i
end sub
Sub GetU
Start Adc
U = 0
For i = 1 to 3
Waitms 30
U = U + Getadc(6)
Next i
Stop Adc
U = U / 15
End Sub
Timer0_int: ' Обработка прерываний таймера0
$asm
Push R31 'сохраним регистры
PUSH R26
Push R25
Push R24
Push R20
Push R16
Push R10
Push R0
In R31 , Sreg
Push R31
$End asm
set Dig1 : Set Dig2 : Set Dig3
Lds R31 , {Bright} 'Сдвимем биты в переменной по кольцу
LSR R31
BRCC R_NUL
ORI R31, 128
R_nul:
Sts {Bright} , R31
BRCS ON_LCD
RJMP End_IntTimer0
ON_LCD:
Stop Timer0
$asm
Lds R31 , {X}
INC R31
CPI R31, 4
BRLO Save
LDI R31,1
Save:
Sts {X}, R31
$End asm
Dg = Digs(X)
'(
if Dg > 128 then
Dg = Dg - 128
SegmLink = Lookup(Dg , Dta)
SegmLink = SegmLink + 128
else
SegmLink = Lookup(Dg , Dta)
end if
')
SegmLink = Lookup(Dg , Dta)
A = 0
$asm
Lds R31 , {SegmLink}
SBRC R31, 0
$End asm
A = 1
B = 0
$asm
SBRC R31, 1
$End asm
B = 1
C = 0
$asm
SBRC R31, 2
$End asm
C = 1
D = 0
$asm
SBRC R31, 3
$End asm
D = 1
E = 0
$asm
SBRC R31, 4
$End asm
E = 1
F = 0
$asm
SBRC R31, 5
$End asm
F = 1
G = 0
$asm
SBRC R31, 6
$End asm
G = 1
Dp = 0
$asm
SBRC R31, 7
$End asm
Dp = 1
if DpRz = X then Dp = 1
Select Case X
Case 1 : Reset Dig3
Case 2 : Reset Dig2
Case 3 : Reset Dig1
End Select
Start Timer0
End_IntTimer0:
$asm
Pop R31
OUT Sreg , R31
POP R0
POP R10
POP R16
POP R20
POP R24
POP R25
POP R26
Pop R31
' reti
$end asm
Return
Timer1_int:
$asm
Push R31 'сохраним регистры
Ldi R31 , &HB2 'переустановим счетчик
Out Tcnt1 , R31
In R31 , Sreg
Push R31
Lds R31 , {Delit}
inc R31 'Incr Delit
Sts {Delit} , R31
CPI R31, 100 'If Delit < 100 Then Goto INTT0_E
brlo EndTimer1_Int
CLR R31 'Delit = 0
Sts {Delit} , R31
'----- Ниже все вызывается 1 раз в секунду
' WDR
Lds R31 , {Second}
inc R31
Sts {Second} , R31
CPI R31, 60
brlo EndTimer1_Int
clr R31
Sts {Second} , R31
'---- Ниже все вызывается 1 раз в минуту
Lds R31 , {Minut}
inc R31
Sts {Minut} , R31
CPI R31, 60
brlo EndTimer1_Int
clr R31
Sts {Minut} , R31
'---- Ниже все вызывается 1 раз в час
Lds R31 , {Hour}
inc R31
Sts {Hour} , R31
CPI R31, 99
brlo EndTimer1_Int
clr R31
Sts {Hour} , R31
STS {Full} , R31 ' После 99 часов считаем, что нужен полный цикл заряда
EndTimer1_Int:
Pop R31
Out Sreg , R31 'восстановим регистры
Pop R31
' reti
$end asm
Return
Dta:
' 0 1 2 3 4 5 6 7 8 9
Data &B00111111 , &B00000110 , &B01011011 , &B01001111 , &B01100110 , &B01101101 , &B01111101 , &B00000111 , &B01111111 , &B01101111
' A(10) b(11) C(12) d(13) E(14) F(15) G(16) H(17) i(18) J(19)
Data &B01110111 , &B01111100 , &B00111001 , &B01011110 , &B01111001 , &B01110001 , &B01111101 , &B01110110 , &B00110000 , &B00011110
' L(20) o(21) P(22) S(23) t(24) U(25) Grad(26) -(27) .(28) Empty(29)
Data &B00111000 , &B01011100 , &B01110011 , &B01101101 , &B01111000 , &B00111110 , &B01100011 , &B01000000 , &B10000000 , &B00000000
' r(30) _(31) u(32) =(33) h (34) Минуты|(35) c (36)
Data &B01010000 , &B00001000 , &B00011100 , &B01001000 , &B01110100 , &B00100000 , &B01011000
$regfile = "attiny26.dat"
$hwstack = 32
$swstack = 32
$framesize = 16
$crystal = 8000000
Const #100 = &B11111111
Const #87 = &B01111111
Const #75 = &B01110111
Const #62 = &B01101101
Const #50 = &B10101010
Const #38 = &B00110010
Const #25 = &B00100010
Const #15 = &B00000011
Const #8 = &B00000001
Const Rz1 = &B00000001:
Const Rz2 = &B00000010:
Const Rz3 = &B00000100:
DdrA = &B01111111 'направление линий порта A: 1 - на вывод
PortA = &B01110000
DdrB = &B01111111
PortB = &B00000000
A Alias PortB.2 'Тут вписываем порты к которым подключены сегменты индикатора
B Alias PortB.0
C Alias PortB.4
D Alias PortB.6
E Alias PortB.5
F Alias PortB.1
G Alias PortB.3
Dp Alias PortA.6
Dig1 Alias PortA.0
Dig2 Alias PortA.1
Dig3 Alias PortA.2
UPR Alias PORTA.5
tFREQ Alias PORTA.4
BUZZ Alias PORTA.3
Dim I As Byte , X As Byte , Digs(3) As Byte , SegmLink As Byte , Dg as Byte
Dim U as Word , Ut as Word
Dim Bright as Byte
Dim WordTmp As Word , DpRz As Byte , Razr As Byte , Full As Byte
Dim Second As Byte , Minut As Byte , Hour As Byte , Delit as Byte , TickCnt As Byte ' переменные для часов
Dim MinutCh As Byte , HourCh As Byte ' Время заряда до полного
Declare Sub GetU
Declare Sub DisplU
Declare Sub DisplTime(Byval Hr as Byte , Byval Mn as Byte)
Config Timer0 = Timer , Prescale = 64 : On Timer0 Timer0_int Nosave
Config Timer1 = Timer , Prescale = 1024 : On OVF1 Timer1_int Nosave
TIMSK = &B0000110 'Enable Timer0 + Timer1
Enable Interrupts
Start TIMER0
Start TIMER1
Config Adc = Single , Prescaler = Auto , Reference = Internal 'Refrenz: 2,25 V
Bright = #100
Digs(3) = 10 : Digs(2) = 1 : Digs(1) = 7 ' Версия A1.7
DpRz = 2
' 1 минуту показываем напряжение. Для подстройки например.
Bright = #25
Do
GetU
Waitms 500
Call DisplU
Loop Until Hour = 0 and Minut = 1
StartTesting:
GetU
DpRz = 0 ' < 8 вольт. Либо очень разряжен, либо его нет совсем, либо 6 вольтовый
If U < 80 then
BegTst:
Digs(3) = 24 : Digs(2) = 14 : Digs(1) = 23 ' Дисплей "t E S"
Ut = U
UPR = 0 ' Включаю заряд
Wait 1
GetU
if U > 160 then ' Аккумулятор не подключен
UPR = 1 ' Выключаю заряд
Digs(3) = 11 : Digs(2) = 10 : Digs(1) = 24 'Дисплей "b A t"
Wait 10
Goto BegTst
end if
For i = 1 to 30
' DpRz = 1
Wait 1
DpRz.1 = NOT DpRz.1
' Waitms 500
next i
UPR = 1 ' Отключить заряд
For i = 3 to 1 step -1
DpRz = i
Wait 2
Next i
DpRz = 0
GetU
If U < Ut then ' Не заряжается
Digs(3) = 11 : Digs(2) = 10 : Digs(1) = 13 ' Дисплей "b A d"
' BUZZ = 1
' Wait 1
' BUZZ = 0
Wait 10
Goto BegTst
end if
If U > 45 and U < 80 then
Ut = 72
Goto Charge
end if
end if
Ut = 146
Charge: ' Цикл зарядки
GetU
If U > Ut then
if U > 160 then Goto BegTst
if Ut = 146 then Ut = 130
if Ut = 72 then Ut = 62
Digs(3) = 15 : Digs(2) = 25 : Digs(1) = 20 ' Дисплей "F U L"
DpRz = 0
If Full = 0 then
HourCh = Hour : MinutCh = Minut
end if
Full = 1
if HourCh = Hour AND MinutCh = Minut then
Buzz = 1
Waitms 300
Buzz = 0
end if
Wait 1
Call DisplTime(HourCh , MinutCh)
Goto Charge
end if
If Ut < 130 then
Digs(3) = 25 : Digs(2) = 33 : Digs(1) = 6 ' Дисплей "u = 6"
wait 5
end if
If Full = 1 Then ' Был заряжен на полную
Digs(3) = 24 : Digs(2) = 30 : Digs(1) = 36 ' Дисплей "t r c"
Wait 30
UPR = 0
Wait 10
UPR = 1 'Выключаю заряд
Goto Charge
end if
UPR = 0 'Включаю заряд на примерно минуту
Call DisplTime(Hour , Minut) ' Показываем 2 секунды часы ххh и две секунды минуты xx|
Call DisplU 'Напряжение на батарее
For i = 1 to 50 ' Мигает точкой 50 секунд
DpRz = 2
Waitms 500
DpRz = 0
Waitms 500
Next i
UPR = 1 'Выключаю заряд
Wait 1 ' Пауза, что бы мерить напряжение на батарее, а не выход зарядного
Goto Charge 'конец основного цикла
Sub DisplTime(Hr , Mn ) '
DpRz = 0
Digs(2) = Hr Mod 10
Hr = Hr \ 10
Digs(3) = Hr Mod 10
Digs(1) = 34
wait 2
Digs(2) = Mn Mod 10
Mn = Mn \ 10
Digs(3) = Mn Mod 10
Digs(1) = 35
wait 2
end sub
Sub DisplU
WordTmp = U
DpRz = 2
for i = 1 to 3
Digs(i) = WordTmp Mod 10
WordTmp = WordTmp \ 10
next i
end sub
Sub GetU
Start Adc
U = 0
For i = 1 to 3
Waitms 30
U = U + Getadc(6)
Next i
Stop Adc
U = U / 15
End Sub
Timer0_int: ' Обработка прерываний таймера0
$asm
Push R31 'сохраним регистры
PUSH R26
Push R25
Push R24
Push R20
Push R16
Push R10
Push R0
In R31 , Sreg
Push R31
$End asm
set Dig1 : Set Dig2 : Set Dig3
Lds R31 , {Bright} 'Сдвимем биты в переменной по кольцу
LSR R31
BRCC R_NUL
ORI R31, 128
R_nul:
Sts {Bright} , R31
BRCS ON_LCD
RJMP End_IntTimer0
ON_LCD:
Stop Timer0
$asm
Lds R31 , {X}
INC R31
CPI R31, 4
BRLO Save
LDI R31,1
Save:
Sts {X}, R31
$End asm
Dg = Digs(X)
'(
if Dg > 128 then
Dg = Dg - 128
SegmLink = Lookup(Dg , Dta)
SegmLink = SegmLink + 128
else
SegmLink = Lookup(Dg , Dta)
end if
')
SegmLink = Lookup(Dg , Dta)
A = 0
$asm
Lds R31 , {SegmLink}
SBRC R31, 0
$End asm
A = 1
B = 0
$asm
SBRC R31, 1
$End asm
B = 1
C = 0
$asm
SBRC R31, 2
$End asm
C = 1
D = 0
$asm
SBRC R31, 3
$End asm
D = 1
E = 0
$asm
SBRC R31, 4
$End asm
E = 1
F = 0
$asm
SBRC R31, 5
$End asm
F = 1
G = 0
$asm
SBRC R31, 6
$End asm
G = 1
Dp = 0
$asm
SBRC R31, 7
$End asm
Dp = 1
if DpRz = X then Dp = 1
Select Case X
Case 1 : Reset Dig3
Case 2 : Reset Dig2
Case 3 : Reset Dig1
End Select
Start Timer0
End_IntTimer0:
$asm
Pop R31
OUT Sreg , R31
POP R0
POP R10
POP R16
POP R20
POP R24
POP R25
POP R26
Pop R31
' reti
$end asm
Return
Timer1_int:
$asm
Push R31 'сохраним регистры
Ldi R31 , &HB2 'переустановим счетчик
Out Tcnt1 , R31
In R31 , Sreg
Push R31
Lds R31 , {Delit}
inc R31 'Incr Delit
Sts {Delit} , R31
CPI R31, 100 'If Delit < 100 Then Goto INTT0_E
brlo EndTimer1_Int
CLR R31 'Delit = 0
Sts {Delit} , R31
'----- Ниже все вызывается 1 раз в секунду
' WDR
Lds R31 , {Second}
inc R31
Sts {Second} , R31
CPI R31, 60
brlo EndTimer1_Int
clr R31
Sts {Second} , R31
'---- Ниже все вызывается 1 раз в минуту
Lds R31 , {Minut}
inc R31
Sts {Minut} , R31
CPI R31, 60
brlo EndTimer1_Int
clr R31
Sts {Minut} , R31
'---- Ниже все вызывается 1 раз в час
Lds R31 , {Hour}
inc R31
Sts {Hour} , R31
CPI R31, 99
brlo EndTimer1_Int
clr R31
Sts {Hour} , R31
STS {Full} , R31 ' После 99 часов считаем, что нужен полный цикл заряда
EndTimer1_Int:
Pop R31
Out Sreg , R31 'восстановим регистры
Pop R31
' reti
$end asm
Return
Dta:
' 0 1 2 3 4 5 6 7 8 9
Data &B00111111 , &B00000110 , &B01011011 , &B01001111 , &B01100110 , &B01101101 , &B01111101 , &B00000111 , &B01111111 , &B01101111
' A(10) b(11) C(12) d(13) E(14) F(15) G(16) H(17) i(18) J(19)
Data &B01110111 , &B01111100 , &B00111001 , &B01011110 , &B01111001 , &B01110001 , &B01111101 , &B01110110 , &B00110000 , &B00011110
' L(20) o(21) P(22) S(23) t(24) U(25) Grad(26) -(27) .(28) Empty(29)
Data &B00111000 , &B01011100 , &B01110011 , &B01101101 , &B01111000 , &B00111110 , &B01100011 , &B01000000 , &B10000000 , &B00000000
' r(30) _(31) u(32) =(33) h (34) Минуты|(35) c (36)
Data &B01010000 , &B00001000 , &B00011100 , &B01001000 , &B01110100 , &B00100000 , &B01011000
- dimon-790
- Мучитель микросхем
- Сообщения: 442
- Зарегистрирован: Пт авг 29, 2008 09:22:37
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
пробуй - должен работать ...
$hwstack = 32
$swstack = 32
$framesize = 16
$crystal = 8000000
Const #100 = &B11111111
Const #87 = &B01111111
Const #75 = &B01110111
Const #62 = &B01101101
Const #50 = &B10101010
Const #38 = &B00110010
Const #25 = &B00100010
Const #15 = &B00000011
Const #8 = &B00000001
Const Rz1 = &B00000001:
Const Rz2 = &B00000010:
Const Rz3 = &B00000100:
DdrA = &B01111111 'направление линий порта A: 1 - на вывод
PortA = &B01110000
DdrB = &B01111111
PortB = &B00000000
A Alias PortB.2 'Тут вписываем порты к которым подключены сегменты индикатора
B Alias PortB.0
C Alias PortB.4
D Alias PortB.6
E Alias PortB.5
F Alias PortB.1
G Alias PortB.3
Dp Alias PortA.6
Dig1 Alias PortA.0
Dig2 Alias PortA.1
Dig3 Alias PortA.2
UPR Alias PORTA.5
tFREQ Alias PORTA.4
BUZZ Alias PORTA.3
Dim I As Byte , X As Byte , Digs(3) As Byte , SegmLink As Byte , Dg as Byte
Dim U as Word , Ut as Word
Dim Bright as Byte
Dim WordTmp As Word , DpRz As Byte , Razr As Byte , Full As Byte
Dim Second As Byte , Minut As Byte , Hour As Byte , Delit as Byte , TickCnt As Byte ' переменные для часов
Dim MinutCh As Byte , HourCh As Byte ' Время заряда до полного
Declare Sub GetU
Declare Sub DisplU
Declare Sub DisplTime(Byval Hr as Byte , Byval Mn as Byte)
Config Timer0 = Timer , Prescale = 64 : On Timer0 Timer0_int Nosave
Config Timer1 = Timer , Prescale = 1024 : On OVF1 Timer1_int Nosave
TIMSK = &B0000110 'Enable Timer0 + Timer1
Enable Interrupts
Start TIMER0
Start TIMER1
Config Adc = Single , Prescaler = Auto , Reference = Internal 'Refrenz: 2,25 V
Bright = #100
Digs(3) = 10 : Digs(2) = 1 : Digs(1) = 7 ' Версия A1.7
DpRz = 2
' 1 минуту показываем напряжение. Для подстройки например.
Bright = #25
Do
GetU
Waitms 500
Call DisplU
Loop Until Hour = 0 and Minut = 1
StartTesting:
GetU
DpRz = 0 ' < 8 вольт. Либо очень разряжен, либо его нет совсем, либо 6 вольтовый
If U < 80 then
BegTst:
Digs(3) = 24 : Digs(2) = 14 : Digs(1) = 23 ' Дисплей "t E S"
Ut = U
UPR = 0 ' Включаю заряд
Wait 1
GetU
if U > 160 then ' Аккумулятор не подключен
UPR = 1 ' Выключаю заряд
Digs(3) = 11 : Digs(2) = 10 : Digs(1) = 24 'Дисплей "b A t"
Wait 10
Goto BegTst
end if
For i = 1 to 30
' DpRz = 1
Wait 1
DpRz.1 = NOT DpRz.1
' Waitms 500
next i
UPR = 1 ' Отключить заряд
For i = 3 to 1 step -1
DpRz = i
Wait 2
Next i
DpRz = 0
GetU
If U < Ut then ' Не заряжается
Digs(3) = 11 : Digs(2) = 10 : Digs(1) = 13 ' Дисплей "b A d"
' BUZZ = 1
' Wait 1
' BUZZ = 0
Wait 10
Goto BegTst
end if
If U > 45 and U < 80 then
Ut = 72
Goto Charge
end if
end if
Ut = 146
Charge: ' Цикл зарядки
GetU
If U > Ut then
if U > 160 then Goto BegTst
if Ut = 146 then Ut = 130
if Ut = 72 then Ut = 62
Digs(3) = 15 : Digs(2) = 25 : Digs(1) = 20 ' Дисплей "F U L"
DpRz = 0
If Full = 0 then
HourCh = Hour : MinutCh = Minut
end if
Full = 1
if HourCh = Hour AND MinutCh = Minut then
Buzz = 1
Waitms 300
Buzz = 0
end if
Wait 1
Call DisplTime(HourCh , MinutCh)
Goto Charge
end if
If Ut < 130 then
Digs(3) = 25 : Digs(2) = 33 : Digs(1) = 6 ' Дисплей "u = 6"
wait 5
end if
If Full = 1 Then ' Был заряжен на полную
Digs(3) = 24 : Digs(2) = 30 : Digs(1) = 36 ' Дисплей "t r c"
Wait 30
UPR = 0
Wait 10
UPR = 1 'Выключаю заряд
Goto Charge
end if
UPR = 0 'Включаю заряд на примерно минуту
Call DisplTime(Hour , Minut) ' Показываем 2 секунды часы ххh и две секунды минуты xx|
Call DisplU 'Напряжение на батарее
For i = 1 to 50 ' Мигает точкой 50 секунд
DpRz = 2
Waitms 500
DpRz = 0
Waitms 500
Next i
UPR = 1 'Выключаю заряд
Wait 1 ' Пауза, что бы мерить напряжение на батарее, а не выход зарядного
Goto Charge 'конец основного цикла
Sub DisplTime(Hr , Mn ) '
DpRz = 0
Digs(2) = Hr Mod 10
Hr = Hr \ 10
Digs(3) = Hr Mod 10
Digs(1) = 34
wait 2
Digs(2) = Mn Mod 10
Mn = Mn \ 10
Digs(3) = Mn Mod 10
Digs(1) = 35
wait 2
end sub
Sub DisplU
WordTmp = U
DpRz = 2
for i = 1 to 3
Digs(i) = WordTmp Mod 10
WordTmp = WordTmp \ 10
next i
end sub
Sub GetU
Start Adc
U = 0
For i = 1 to 3
Waitms 30
U = U + Getadc(6)
Next i
Stop Adc
U = U / 15
End Sub
Timer0_int: ' Обработка прерываний таймера0
$asm
Push R31 'сохраним регистры
PUSH R26
Push R25
Push R24
Push R20
Push R16
Push R10
Push R0
In R31 , Sreg
Push R31
$End asm
Reset Dig1 : Reset Dig2 : Reset Dig3
Lds R31 , {Bright} 'Сдвимем биты в переменной по кольцу
LSR R31
BRCC R_NUL
ORI R31, 128
R_nul:
Sts {Bright} , R31
BRCS ON_LCD
RJMP End_IntTimer0
ON_LCD:
Stop Timer0
$asm
Lds R31 , {X}
INC R31
CPI R31, 4
BRLO Save
LDI R31,1
Save:
Sts {X}, R31
$End asm
Dg = Digs(X)
'(
if Dg > 128 then
Dg = Dg - 128
SegmLink = Lookup(Dg , Dta)
SegmLink = SegmLink + 128
else
SegmLink = Lookup(Dg , Dta)
end if
')
SegmLink = Lookup(Dg , Dta)
A = 0
$asm
Lds R31 , {SegmLink}
SBRC R31, 0
$End asm
A = 1
B = 0
$asm
SBRC R31, 1
$End asm
B = 1
C = 0
$asm
SBRC R31, 2
$End asm
C = 1
D = 0
$asm
SBRC R31, 3
$End asm
D = 1
E = 0
$asm
SBRC R31, 4
$End asm
E = 1
F = 0
$asm
SBRC R31, 5
$End asm
F = 1
G = 0
$asm
SBRC R31, 6
$End asm
G = 1
Dp = 0
$asm
SBRC R31, 7
$End asm
Dp = 1
If Dprz = X Then Dp = 0
Select Case X
Case 1 : Set Dig3
Case 2 : Set Dig2
Case 3 : Set Dig1
End Select
Start Timer0
End_IntTimer0:
$asm
Pop R31
OUT Sreg , R31
POP R0
POP R10
POP R16
POP R20
POP R24
POP R25
POP R26
Pop R31
' reti
$end asm
Return
Timer1_int:
$asm
Push R31 'сохраним регистры
Ldi R31 , &HB2 'переустановим счетчик
Out Tcnt1 , R31
In R31 , Sreg
Push R31
Lds R31 , {Delit}
inc R31 'Incr Delit
Sts {Delit} , R31
CPI R31, 100 'If Delit < 100 Then Goto INTT0_E
brlo EndTimer1_Int
CLR R31 'Delit = 0
Sts {Delit} , R31
'----- Ниже все вызывается 1 раз в секунду
' WDR
Lds R31 , {Second}
inc R31
Sts {Second} , R31
CPI R31, 60
brlo EndTimer1_Int
clr R31
Sts {Second} , R31
'---- Ниже все вызывается 1 раз в минуту
Lds R31 , {Minut}
inc R31
Sts {Minut} , R31
CPI R31, 60
brlo EndTimer1_Int
clr R31
Sts {Minut} , R31
'---- Ниже все вызывается 1 раз в час
Lds R31 , {Hour}
inc R31
Sts {Hour} , R31
CPI R31, 99
brlo EndTimer1_Int
clr R31
Sts {Hour} , R31
STS {Full} , R31 ' После 99 часов считаем, что нужен полный цикл заряда
EndTimer1_Int:
Pop R31
Out Sreg , R31 'восстановим регистры
Pop R31
' reti
$end asm
Return
Dta:
' 0 1 2 3 4 5 6 7 8 9
Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001 , &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000
' A(10) b(11) C(12) d(13) E(14) F(15) G(16) H(17) i(18) J(19)
Data &B10001000 , &B10000011 , &B11000110 , &B10100001 , &B10000110 , &B10001110 , &B10000010 , &B10001001 , &B11001111 , &B11100001
' L(20) o(21) P(22) S(23) t(24) U(25) Grad(26) -(27) .(28) Empty(29)
Data &B11000111 , &B10100011 , &B10001100 , &B10010010 , &B10000111 , &B11000001 , &B10011100 , &B10111111 , &B01111111 , &B11111111
' r(30) _(31) u(32) =(33) h (34) Минуты|(35) c (36)
Data &B10101111 , &B11110111 , &B11100011 , &B10110111 , &B10001011 , &B11011111 , &B10100111
Спойлер
$regfile = "attiny26.dat"$hwstack = 32
$swstack = 32
$framesize = 16
$crystal = 8000000
Const #100 = &B11111111
Const #87 = &B01111111
Const #75 = &B01110111
Const #62 = &B01101101
Const #50 = &B10101010
Const #38 = &B00110010
Const #25 = &B00100010
Const #15 = &B00000011
Const #8 = &B00000001
Const Rz1 = &B00000001:
Const Rz2 = &B00000010:
Const Rz3 = &B00000100:
DdrA = &B01111111 'направление линий порта A: 1 - на вывод
PortA = &B01110000
DdrB = &B01111111
PortB = &B00000000
A Alias PortB.2 'Тут вписываем порты к которым подключены сегменты индикатора
B Alias PortB.0
C Alias PortB.4
D Alias PortB.6
E Alias PortB.5
F Alias PortB.1
G Alias PortB.3
Dp Alias PortA.6
Dig1 Alias PortA.0
Dig2 Alias PortA.1
Dig3 Alias PortA.2
UPR Alias PORTA.5
tFREQ Alias PORTA.4
BUZZ Alias PORTA.3
Dim I As Byte , X As Byte , Digs(3) As Byte , SegmLink As Byte , Dg as Byte
Dim U as Word , Ut as Word
Dim Bright as Byte
Dim WordTmp As Word , DpRz As Byte , Razr As Byte , Full As Byte
Dim Second As Byte , Minut As Byte , Hour As Byte , Delit as Byte , TickCnt As Byte ' переменные для часов
Dim MinutCh As Byte , HourCh As Byte ' Время заряда до полного
Declare Sub GetU
Declare Sub DisplU
Declare Sub DisplTime(Byval Hr as Byte , Byval Mn as Byte)
Config Timer0 = Timer , Prescale = 64 : On Timer0 Timer0_int Nosave
Config Timer1 = Timer , Prescale = 1024 : On OVF1 Timer1_int Nosave
TIMSK = &B0000110 'Enable Timer0 + Timer1
Enable Interrupts
Start TIMER0
Start TIMER1
Config Adc = Single , Prescaler = Auto , Reference = Internal 'Refrenz: 2,25 V
Bright = #100
Digs(3) = 10 : Digs(2) = 1 : Digs(1) = 7 ' Версия A1.7
DpRz = 2
' 1 минуту показываем напряжение. Для подстройки например.
Bright = #25
Do
GetU
Waitms 500
Call DisplU
Loop Until Hour = 0 and Minut = 1
StartTesting:
GetU
DpRz = 0 ' < 8 вольт. Либо очень разряжен, либо его нет совсем, либо 6 вольтовый
If U < 80 then
BegTst:
Digs(3) = 24 : Digs(2) = 14 : Digs(1) = 23 ' Дисплей "t E S"
Ut = U
UPR = 0 ' Включаю заряд
Wait 1
GetU
if U > 160 then ' Аккумулятор не подключен
UPR = 1 ' Выключаю заряд
Digs(3) = 11 : Digs(2) = 10 : Digs(1) = 24 'Дисплей "b A t"
Wait 10
Goto BegTst
end if
For i = 1 to 30
' DpRz = 1
Wait 1
DpRz.1 = NOT DpRz.1
' Waitms 500
next i
UPR = 1 ' Отключить заряд
For i = 3 to 1 step -1
DpRz = i
Wait 2
Next i
DpRz = 0
GetU
If U < Ut then ' Не заряжается
Digs(3) = 11 : Digs(2) = 10 : Digs(1) = 13 ' Дисплей "b A d"
' BUZZ = 1
' Wait 1
' BUZZ = 0
Wait 10
Goto BegTst
end if
If U > 45 and U < 80 then
Ut = 72
Goto Charge
end if
end if
Ut = 146
Charge: ' Цикл зарядки
GetU
If U > Ut then
if U > 160 then Goto BegTst
if Ut = 146 then Ut = 130
if Ut = 72 then Ut = 62
Digs(3) = 15 : Digs(2) = 25 : Digs(1) = 20 ' Дисплей "F U L"
DpRz = 0
If Full = 0 then
HourCh = Hour : MinutCh = Minut
end if
Full = 1
if HourCh = Hour AND MinutCh = Minut then
Buzz = 1
Waitms 300
Buzz = 0
end if
Wait 1
Call DisplTime(HourCh , MinutCh)
Goto Charge
end if
If Ut < 130 then
Digs(3) = 25 : Digs(2) = 33 : Digs(1) = 6 ' Дисплей "u = 6"
wait 5
end if
If Full = 1 Then ' Был заряжен на полную
Digs(3) = 24 : Digs(2) = 30 : Digs(1) = 36 ' Дисплей "t r c"
Wait 30
UPR = 0
Wait 10
UPR = 1 'Выключаю заряд
Goto Charge
end if
UPR = 0 'Включаю заряд на примерно минуту
Call DisplTime(Hour , Minut) ' Показываем 2 секунды часы ххh и две секунды минуты xx|
Call DisplU 'Напряжение на батарее
For i = 1 to 50 ' Мигает точкой 50 секунд
DpRz = 2
Waitms 500
DpRz = 0
Waitms 500
Next i
UPR = 1 'Выключаю заряд
Wait 1 ' Пауза, что бы мерить напряжение на батарее, а не выход зарядного
Goto Charge 'конец основного цикла
Sub DisplTime(Hr , Mn ) '
DpRz = 0
Digs(2) = Hr Mod 10
Hr = Hr \ 10
Digs(3) = Hr Mod 10
Digs(1) = 34
wait 2
Digs(2) = Mn Mod 10
Mn = Mn \ 10
Digs(3) = Mn Mod 10
Digs(1) = 35
wait 2
end sub
Sub DisplU
WordTmp = U
DpRz = 2
for i = 1 to 3
Digs(i) = WordTmp Mod 10
WordTmp = WordTmp \ 10
next i
end sub
Sub GetU
Start Adc
U = 0
For i = 1 to 3
Waitms 30
U = U + Getadc(6)
Next i
Stop Adc
U = U / 15
End Sub
Timer0_int: ' Обработка прерываний таймера0
$asm
Push R31 'сохраним регистры
PUSH R26
Push R25
Push R24
Push R20
Push R16
Push R10
Push R0
In R31 , Sreg
Push R31
$End asm
Reset Dig1 : Reset Dig2 : Reset Dig3
Lds R31 , {Bright} 'Сдвимем биты в переменной по кольцу
LSR R31
BRCC R_NUL
ORI R31, 128
R_nul:
Sts {Bright} , R31
BRCS ON_LCD
RJMP End_IntTimer0
ON_LCD:
Stop Timer0
$asm
Lds R31 , {X}
INC R31
CPI R31, 4
BRLO Save
LDI R31,1
Save:
Sts {X}, R31
$End asm
Dg = Digs(X)
'(
if Dg > 128 then
Dg = Dg - 128
SegmLink = Lookup(Dg , Dta)
SegmLink = SegmLink + 128
else
SegmLink = Lookup(Dg , Dta)
end if
')
SegmLink = Lookup(Dg , Dta)
A = 0
$asm
Lds R31 , {SegmLink}
SBRC R31, 0
$End asm
A = 1
B = 0
$asm
SBRC R31, 1
$End asm
B = 1
C = 0
$asm
SBRC R31, 2
$End asm
C = 1
D = 0
$asm
SBRC R31, 3
$End asm
D = 1
E = 0
$asm
SBRC R31, 4
$End asm
E = 1
F = 0
$asm
SBRC R31, 5
$End asm
F = 1
G = 0
$asm
SBRC R31, 6
$End asm
G = 1
Dp = 0
$asm
SBRC R31, 7
$End asm
Dp = 1
If Dprz = X Then Dp = 0
Select Case X
Case 1 : Set Dig3
Case 2 : Set Dig2
Case 3 : Set Dig1
End Select
Start Timer0
End_IntTimer0:
$asm
Pop R31
OUT Sreg , R31
POP R0
POP R10
POP R16
POP R20
POP R24
POP R25
POP R26
Pop R31
' reti
$end asm
Return
Timer1_int:
$asm
Push R31 'сохраним регистры
Ldi R31 , &HB2 'переустановим счетчик
Out Tcnt1 , R31
In R31 , Sreg
Push R31
Lds R31 , {Delit}
inc R31 'Incr Delit
Sts {Delit} , R31
CPI R31, 100 'If Delit < 100 Then Goto INTT0_E
brlo EndTimer1_Int
CLR R31 'Delit = 0
Sts {Delit} , R31
'----- Ниже все вызывается 1 раз в секунду
' WDR
Lds R31 , {Second}
inc R31
Sts {Second} , R31
CPI R31, 60
brlo EndTimer1_Int
clr R31
Sts {Second} , R31
'---- Ниже все вызывается 1 раз в минуту
Lds R31 , {Minut}
inc R31
Sts {Minut} , R31
CPI R31, 60
brlo EndTimer1_Int
clr R31
Sts {Minut} , R31
'---- Ниже все вызывается 1 раз в час
Lds R31 , {Hour}
inc R31
Sts {Hour} , R31
CPI R31, 99
brlo EndTimer1_Int
clr R31
Sts {Hour} , R31
STS {Full} , R31 ' После 99 часов считаем, что нужен полный цикл заряда
EndTimer1_Int:
Pop R31
Out Sreg , R31 'восстановим регистры
Pop R31
' reti
$end asm
Return
Dta:
' 0 1 2 3 4 5 6 7 8 9
Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001 , &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000
' A(10) b(11) C(12) d(13) E(14) F(15) G(16) H(17) i(18) J(19)
Data &B10001000 , &B10000011 , &B11000110 , &B10100001 , &B10000110 , &B10001110 , &B10000010 , &B10001001 , &B11001111 , &B11100001
' L(20) o(21) P(22) S(23) t(24) U(25) Grad(26) -(27) .(28) Empty(29)
Data &B11000111 , &B10100011 , &B10001100 , &B10010010 , &B10000111 , &B11000001 , &B10011100 , &B10111111 , &B01111111 , &B11111111
' r(30) _(31) u(32) =(33) h (34) Минуты|(35) c (36)
Data &B10101111 , &B11110111 , &B11100011 , &B10110111 , &B10001011 , &B11011111 , &B10100111
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
- Dnepr_1186
- Потрогал лапой паяльник
- Сообщения: 398
- Зарегистрирован: Чт мар 26, 2009 20:53:27
- Откуда: Беларусь.Минская обл.
Re: BASCOM AVR в вопросах и ответах
Добрый вечер уважаемы коты!
Начну с того, чтов Баском я новичек. И на данный момент могу писать ооочень простенькие програмки, а то что посложене делаю по шаблону или меняю что-то в откоментированных исходниках.
Появилась необходимость снимать данные с термопары и выводит на жк.
Нашел микросхему драйвера термопары MAX6675 она считывает данные с термопары и передает в МК по spi
Вот загвостка в том как настроить чтобы драйвер передваал данные в МК . Знаю что для этого нужна библиотека. НО! Библиотеки есть только на зыке С/с++. Может кто поможет решить эту задачу в Баском? Библиотеки и пример работы в С/С++ предоставлю! Спасибо!
Начну с того, чтов Баском я новичек. И на данный момент могу писать ооочень простенькие програмки, а то что посложене делаю по шаблону или меняю что-то в откоментированных исходниках.
Появилась необходимость снимать данные с термопары и выводит на жк.
Нашел микросхему драйвера термопары MAX6675 она считывает данные с термопары и передает в МК по spi
Вот загвостка в том как настроить чтобы драйвер передваал данные в МК . Знаю что для этого нужна библиотека. НО! Библиотеки есть только на зыке С/с++. Может кто поможет решить эту задачу в Баском? Библиотеки и пример работы в С/С++ предоставлю! Спасибо!
Re: BASCOM AVR в вопросах и ответах
[quote="dimon-790"]
СПАСИБО! помогло
другая проблема всё работает (пишет A1.7:204
tes) потом (bat:tes)по кругу циклирует а напряжение не показывает. Tfreq-отвечает за это порт 4 если я правильно понимаю (14 нога тини26). \
Если на 14 ногу подать 5вольт на дисплее должно быть 999? и как переназначить порт ввода который следит за напругой? Tfreq- как оно работает если в программе присутствует 1 раз ито при назначении портов?
СПАСИБО! помогло
другая проблема всё работает (пишет A1.7:204
Если на 14 ногу подать 5вольт на дисплее должно быть 999? и как переназначить порт ввода который следит за напругой? Tfreq- как оно работает если в программе присутствует 1 раз ито при назначении портов?




