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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

pavel123 писал(а):возник вопрос измерить ток на этом самом светодиоде.
Как это правильно сделать.
Спасибо.

А для чего Вам это собственно? если для рассчета резистора то http://www.casemods.ru/services/raschet_rezistora.html
или другие цели?
Реклама
<>
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Так драйвер же. Чтобы нужный ток поддерживать, его ведь нужно знать. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Реклама
гостевая2
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

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

Сообщение pavel123 »

edm2007 писал(а):Так драйвер же. Чтобы нужный ток поддерживать, его ведь нужно знать. :)

Ну да, как раз для этого.
Я покопался в Сетях, схемно это выглядит так, что измеряемое сопротивление подключено к двум входам АДС. А вот описание алгоритма как это все работает я не нашел.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Ну если к двум входам, то это скорее всего АЦП в режиме дифференциального входа. Там и возможность усиления есть, только не у всех МК есть такая возможность АЦП. Вы какой МК используете?

А можно просто усилить сигнал с шунта. Либо обычным операционником, либо при помощи специализированой микросхемы - усилителя сигнала токового шунта. Те вообще никакой обвязки не требуют.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

Светодиод подключить через резистор, резистором на минус. Резистор расчитать по закону Ома, что бы падение на нём при номинальном токе светодиода было в приделах опорного напр. АЦП (к примеру 2 вольта). И подключаем АЦП между светодиодом и резистором и измеряем.
КПД ни какого, только возможность регулировать и стабилизировать.
В остальном, применение ОУ смысла не имеет (разве только для самооброзования).
Например, можно сделать драйвер на МС34063-15р и для повышения КПД повесить ОУ, а можно купить аналог NCP3065 c низким опорным напряжением за 20р.
Вообщем совет- применять специализированные драйверы (тем более стоят они копейки).
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Реклама
гостеваая 3
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

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

Сообщение pavel123 »

kip96 писал(а):Вообщем совет- применять специализированные драйверы (тем более стоят они копейки).

Спасибо за совет, но к слову, я уже разобрался с Шим микросхемами, и собрал не один драйвер светодиодов.
Сейчас меня интересует применение AVR для этих целей.
Тем более что можно организовать много-много канальный Шим (на сколько ножек у МК хватит) :))
Аватара пользователя
Адвансед
Встал на лапы
Сообщения: 98
Зарегистрирован: Вс мар 11, 2012 23:06:08
Откуда: Казань

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

Сообщение Адвансед »

Подскажите, как принимать и обрабатывать команды с пульта rс5? нужно принять 2-3 команды и сделать так чтобы например после нажатия кнопки mute на пульте, сработал порт pd1, при нажатии кнопку power порт pd2 контроллера и т.п.

напишите плз код, кому не трудно
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
vovus
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вс июл 17, 2011 09:34:29

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

Сообщение vovus »

Добрый день.
Подскажите, пожалуйста, шарящие программеры:
есть код для Меги8 - спектроанализатор звука (http://www.elektroda.pl/rtvforum/topic776332-30.html)
Сразу оговорюсь, что я в программировании МК почти ноль (зато в ПХП более-менее хороший уровень :) )
Есть исходный код программы:

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

' _____
'|Program "analizator widma akustycznego 16*2 LCD   kompilator bascom 1.11.9.0 |
'|Autor: HUNTERHOUSE.     pcb,filtr: MANEKINEN.                                |
'|                                                                             |
'|info: http://www.elektroda.pl/rtvforum/topic776332-0.html                    |
' ----------


$regfile = "m8def.dat"
'$crystal = 26601712
$crystal = 16000000
'----------
Const Falloff = 1                                           'iloњж cykli po jakim sіupki opadn№, wolne opadanie
Const Lcd_offset = 1
Const Czulosc = 20
'----------

Const Timer1_h = _xtal / 44000
Const Timer1_l = _xtal / 2000
Reset Watchdog
Config Watchdog = 256
Stop Watchdog
Const Poziom_a = 8 -(czulosc * 0.4)


'----------
Dim Div As Iram Integer At 16
Dim K As Byte
Dim I As Byte
Dim Tmp_s As Integer
Dim Tmp_c As Integer
Dim Beta As Iram Byte
Dim Suma As Word
Dim Sam As Byte
Dim Sampling As Bit
Dim Rex_t As Integer , Imx_t As Integer
Dim Dane(32) As Integer
Dim Sample_h(32) As Integer
Dim Sample_l(32) As Integer
Dim Okno(32) As Byte
Dim Rex(16) As Integer
Dim Sinus(40) As Integer
Dim Wynik(16) As Byte , Wynik_o(16) As Byte
Dim Sing As Single
Dim Poziom As Integer
Dim Line1 As String * 16 , Line1d(16) As Byte At Line1 Overlay
Dim Line2 As String * 16 , Line2d(16) As Byte At Line2 Overlay
Dim Falloff_count(16) As Byte




$lib "lcd4busy.lbx"
Const _lcdport = Portd
Const _lcdddr = Ddrd
Const _lcdin = Pind
Const _lcd_e = 3
Const _lcd_rw = 2
Const _lcd_rs = 1
Config Lcd = 16 * 2
Initlcd
Waitms 10
Initlcd
Cls
Deflcdchar 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 31
Deflcdchar 2 , 0 , 0 , 0 , 0 , 0 , 0 , 31 , 31
Deflcdchar 3 , 0 , 0 , 0 , 0 , 0 , 31 , 31 , 31
Deflcdchar 4 , 0 , 0 , 0 , 0 , 31 , 31 , 31 , 31
Deflcdchar 5 , 0 , 0 , 0 , 31 , 31 , 31 , 31 , 31
Deflcdchar 6 , 0 , 0 , 31 , 31 , 31 , 31 , 31 , 31
Deflcdchar 7 , 0 , 31 , 31 , 31 , 31 , 31 , 31 , 31
Cls
Cursor Off


Config Adc = Single , Prescaler = 4 , Reference = Avcc
Start Adc

Config Timer1 = Timer , Prescale = 1
On Compare1a Sampleh
On Compare1b Samplel
Compare1a = Timer1_h
Compare1b = Timer1_l
Enable Timer1
Start Timer1

Enable Interrupts
Disable Int0
Disable Int1

For K = 0 To 31
Sinus(k + 1) = Lookup(k , Tab_sin)
   'Okno(k + 1) = 255
   'Okno(k + 1) = Lookup(k , Okno_blackman)
   'Okno(k + 1) = Lookup(k , Okno_hamming)
   Okno(k + 1) = Lookup(k , Okno_hanning)
Next K

Sinus(33) = Lookup(0 , Tab_sin)
Sinus(34) = Lookup(1 , Tab_sin)
Sinus(35) = Lookup(2 , Tab_sin)
Sinus(36) = Lookup(3 , Tab_sin)
Sinus(37) = Lookup(4 , Tab_sin)
Sinus(38) = Lookup(5 , Tab_sin)
Sinus(39) = Lookup(6 , Tab_sin)
Sinus(40) = Lookup(7 , Tab_sin)


Start Watchdog




Main:
Do
Reset Watchdog

Gosub Sample_h
Main_1:
If Sampling = 1 Then Goto Main_1

Gosub Sample_l
Gosub Copy_low
Gosub Dft
Gosub Przelicz_low
Gosub Copy_high
Gosub Dft
Gosub Przelicz_high

Main_3:
If Sampling = 1 Then Goto Main_3
Gosub Save
Loop







Copy_high:
   Poziom = 0

   For K = 1 To 32
      Div = Sample_h(k)
      asr r17:ror r16:asr r17:ror r16
      Sample_h(k) = Div
      Poziom = Poziom + Sample_h(k)
   Next K

   Div = Poziom
   asr r17:ror r16:asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
   asr r17:ror r16
   Poziom = Div

   For K = 1 To 32
      Dane(k) = Sample_h(k) - Poziom
      Dane(k) = Dane(k) * Okno(k)
      Div = Dane(k)
      asr r17:ror r16:asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
      asr r17:ror r16:asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
      Dane(k) = Div
      If Dane(k) > 127 Then Dane(k) = 127
      If Dane(k) < -127 Then Dane(k) = -127
   Next K
Return



Copy_low:
   Poziom = 0

   For K = 1 To 32
      Div = Sample_l(k)
      asr r17:ror r16:asr r17:ror r16
      Sample_l(k) = Div
      Poziom = Poziom + Sample_l(k)
   Next K

   Div = Poziom
   asr r17:ror r16:asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
   asr r17:ror r16
   Poziom = Div

   For K = 1 To 32
      Dane(k) = Sample_l(k) - Poziom
      Dane(k) = Dane(k) * Okno(k)
      Div = Dane(k)
      asr r17:ror r16:asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
      asr r17:ror r16:asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
      Dane(k) = Div
      If Dane(k) > 127 Then Dane(k) = 127
      If Dane(k) < -127 Then Dane(k) = -127
   Next K
Return




Dft:
For K = 1 To 15
 Rex_t = 0
 Imx_t = 0

   For I = 0 To 31
      Beta = I * K
      Beta = Beta And 31
      Tmp_s = Sinus(beta + 1) * Dane(i + 1)
      Tmp_c = Sinus(beta + 8) * Dane(i + 1)

      Div = Tmp_s
      asr r17:ror r16:asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
      asr r17:ror r16:asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
      Tmp_s = Div

      Div = Tmp_c
      asr r17:ror r16:asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
      asr r17:ror r16:asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
      Tmp_c = Div


     Rex_t = Rex_t + Tmp_c
     Imx_t = Imx_t - Tmp_s

   Next I

   Div = Rex_t
   asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
   Rex_t = Div

   Div = Imx_t
   asr r17:ror r16:asr r17:ror r16:asr r17:ror r16
   Imx_t = Div

   Tmp_c = Rex_t * Rex_t
   Tmp_s = Imx_t * Imx_t


   Tmp_c = Tmp_c + Tmp_s
   Rex(k + 1) = Sqr(tmp_c)
Next K
Return



Sample_l:
'pobiera 32 prуbki z czкstotliwoњci№ 2kHz
Timer1 = 0
Enable Compare1b
Sam = 0
Sampling = 1
Return


Samplel:
Timer1 = 0
Incr Sam
Sample(sam) = Getadc(0)                                     'NIЇSZE PASMO Z PINA.0
If Sam = 32 Then
   Disable Compare1b
   Sampling = 0
End If
Return




Sample_h:
'pobiera 32 prуbki z czкstotliwoњci№ 32kHz
Timer1 = 0
Enable Compare1a
Sam = 0
Sampling = 1
Return

Sampleh:
Timer1 = 0
Incr Sam
Sample(sam) = Getadc(1)                                     'WYЇSZE PASMO Z PINA.1
If Sam = 32 Then
   Disable Compare1a
   Sampling = 0
End If
Return





'---------OBLICZANIE WYSOKOЊCI DLA HIGH (6-10)----------


Przelicz_high:
Suma = Rex(3)
Wynik(9) = Suma

Suma = Rex(4)
Wynik(10) = Suma

Suma = Rex(5)
Wynik(11) = Suma

Suma = Rex(6)
Wynik(12) = Suma

Suma = Rex(7)
If Rex(8) > Suma Then Suma = Rex(8)
Wynik(13) = Suma

Suma = Rex(9)
If Rex(10) > Suma Then Suma = Rex(10)
Wynik(14) = Suma

Suma = Rex(11)
If Rex(12) > Suma Then Suma = Rex(12)
If Rex(13) > Suma Then Suma = Rex(13)
Wynik(15) = Suma

Suma = Rex(14)
If Rex(15) > Suma Then Suma = Rex(15)
If Rex(16) > Suma Then Suma = Rex(16)
Wynik(16) = Suma
Return


'---------OBLICZANIE WYSOKOЊCI DLA LOW (1-5)----------


Przelicz_low:
Suma = Rex(2)
Wynik(1) = Suma

Suma = Rex(3)
Wynik(2) = Suma

Suma = Rex(4)
Wynik(3) = Suma

Suma = Rex(5)
If Rex(6) > Suma Then Suma = Rex(6)
Wynik(4) = Suma

Suma = Rex(7)
If Rex(8) > Suma Then Suma = Rex(8)
Wynik(5) = Suma

Suma = Rex(9)
If Rex(10) > Suma Then Suma = Rex(10)
Wynik(6) = Suma

Suma = Rex(11)
If Rex(12) > Suma Then Suma = Rex(12)
If Rex(13) > Suma Then Suma = Rex(13)
Wynik(7) = Suma

Suma = Rex(14)
If Rex(15) > Suma Then Suma = Rex(15)
If Rex(16) > Suma Then Suma = Rex(16)
Wynik(8) = Suma
Return




Save:


'---------- KOLEJNYCH (K) SЈUPKУW---------------

For K = 1 To 16                                             'w ci№gu jednej pкtli obliczany i wyњwietlany 1 sіupek 1/10
Sing = Wynik(k) * 0.1

'If K = 1 Then Sing = Sing * 0.5                             ' umnie jakos zawysoko skacz№, byж moze przez brak filtrуw mozna usunaж
'If K = 2 Then Sing = Sing * 0.75


Sing = Log10(sing)

Sing = Czulosc * Sing
Tmp_c = Sing + Poziom_a




'---------- GRANICY SЈUPKУW---------------

If Tmp_c < 0 Then Tmp_c = 0
If Tmp_c > 16 Then Tmp_c = 16

Wynik(k) = Tmp_c                                            'przeniesienie wyniku z TMP_C do zmiennej WYNIK


If Wynik(k) > Wynik_o(k) Then
   Wynik_o(k) = Wynik(k)
Else
   If Falloff_count(k) = Falloff Then
      If Wynik_o(k) > 0 Then Decr Wynik_o(k)
      Falloff_count(k) = 0
   End If
   Incr Falloff_count(k)
End If

Line1d(k) = Lookup(wynik_o(k) , L1)
Line2d(k) = Lookup(wynik_o(k) , L2)

Next K



'---------- WYЊWIETLANIE LCD---------
Locate 1 , Lcd_offset
Lcd Line1;
Locate 2 , Lcd_offset
Lcd Line2;


Return

L1:
Data 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 255

L2:
Data 32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255



' tabela 32 liczb 16 bitowych ze znakiem
' zaіoїony format: MSB - czкњж caіkowita, LSB - czкњж uіamkowa
' kwantyzacja: 0.19635 rad
' tabela I жwiartki sin(x), 8 pozycji (co 11,25 stopnia od 0 do 78.75)
Tab_sin:
Data 0% , 50% , 98% , 142% , 181% , 213% , 237% , 251%
' tabela II жwiartki sin(x), (co 11,25 stopnia od 90 do 178.75)
Data 255% , 251% , 237% , 213% , 181% , 142% , 98% , 50%
' tabela III i IV жwiartki sin(x), (co 11,25 stopnia od 180 do 258.75 i 270 - 348.75)
' zanegowane 2 poprzednie tabele
Data 0% , -50% , -98% , -142% , -181% , -213% , -237% , -251%
Data -255% , -251% , -237% , -213% , -181% , -142% , -98% , -50%



Okno_hanning:
Data 0 , 3 , 10 , 23 , 40 , 60 , 84 , 109 , 134 , 160 , 184 , 206 , 225 , 240 , 250 , 255 , 255 , 250 , 240 , 225 , 206 , 184 , 160 , 134 , 109 , 84 , 60 , 40 , 23 , 10 , 3 , 0

Okno_hamming:
Data 20 , 23 , 30 , 42 , 57 , 76 , 97 , 120 , 144 , 168 , 190 , 210 , 228 , 241 , 251 , 255 , 255 , 251 , 241 , 228 , 210 , 190 , 168 , 144 , 120 , 97 , 76 , 57 , 42 , 30 , 23 , 20

Okno_blackman:
Data 0 , 1 , 4 , 10 , 18 , 31 , 48 , 69 , 94 , 122 , 151 , 181 , 208 , 230 , 246 , 255 , 255 , 246 , 230 , 208 , 181 , 151 , 122 , 94 , 69 , 48 , 31 , 18 , 10 , 4 , 1 , 0


Загоняю его в BASCOM AVR 2.0.7.1 и при проверке синтаксиса выводит две ошибки в строках 246 и 271 (Duplicate label name used by const or variable)... Естественно из-за этого я не могу код перегнать в HEX... :cry:
В инете полно ссылок на готовый hex-файл, но он работает чуток не правильно и есть желание его немножко подправить (дабавить пару-тройку циферок и всё)
В этом коде ничего не менял.
Если не затруднит, помогите подправить код для нормальной работоспособности. Буду оч. благодарен.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Добрый.

Лично у меня (1.11.9.8 ) ругается только на строки

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

Sample(sam) = Getadc(0)
......
Sample(sam) = Getadc(1)


И правильно делает, массив Sample нигде не объявлен. После исправления все компилируется нормально. А в более свежих версиях да, он еще и ругается на совпадение имен переменных, меток и прочего. По ошибке два раза топайте, и перейдете на строку кода с ошибкой.

P.S. Это он скорее всего ругается на то, что есть массивы Sample_h(32) и Sample_l(32), и метки с такими же именами Sample_h: и Sample_l:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
vovus
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вс июл 17, 2011 09:34:29

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

Сообщение vovus »

edm2007 писал(а):Добрый.

Лично у меня (1.11.9.8 ) ругается только на строки

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

Sample(sam) = Getadc(0)
......
Sample(sam) = Getadc(1)


И правильно делает, массив Sample нигде не объявлен. После исправления все компилируется нормально. А в более свежих версиях да, он еще и ругается на совпадение имен переменных, меток и прочего. По ошибке два раза топайте, и перейдете на строку кода с ошибкой.

P.S. Это он скорее всего ругается на то, что есть массивы Sample_h(32) и Sample_l(32), и метки с такими же именами Sample_h: и Sample_l:



Таки да... Название функций (меток) оставил, а массивы переименовал... А потом ещё и в начале кода объявил Sample ... Проверку код прошёл. Что интересно - одна и та же версия программы на разных ОС Win по разному ошибки выводит. Дома семёрка установлена, так программа и Вашу ошибку попросила исправить, хотя на ХР этого не требовала.
Спасибо большое за помощь. Чуть позже залью прошивку и проверю, что получилось.

П.С. Первый раз сам прошил МК 3 дня назад 5 проводками. Пора дальше развиваться. Теперь надо самому синтаксис выучить и начать программки лепить, благо есть хороший опыт в создании динамических движков для сайтов.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

Пока затишье отпишусь:
Как оказалось работает код выше (LED индикация совместно с ЖК), откорректировал строки инициализации
$hwstack = 64 ' default
$swstack = 64 ' default
$framesize = 64 ' minimum for this library. Increase for your application needs!
И весело побежали циферки по экранам :)))
edm2007 писал(а):Ну и не компилируется. Ругается, что имена переменных совпадают с метками из библиотеки.

Да понаходил одинаковые имена переменных, всё от лени захотел ток АЦП буковкой I, а то что в библиотеке шрифтов тоже под этим именем не подумал....и т.п.
Lihachov
Родился
Сообщения: 2
Зарегистрирован: Вт июл 17, 2012 02:05:55

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

Сообщение Lihachov »

Ребят, нужен таймер обратного отсчета. Работать будет совместно с другим устройством, благо вывести на порты 1 или 0, ну и информацию на дисплей несложно. получается, а вот с таймером косяк вышел, сам ни осиляю и найти не получается...
Буду благодарен если сможете помочь.

P.S.
интервал отсчета например с 5 минут до нуля, по истечении времени выводит 1 на какой нибудь порт. делаю на меге 8.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

Lihachov писал(а):Ребят, нужен таймер обратного отсчета.

Поскольку не углядел специфических требований к таймеру, то подскажу лишь, что подобных схем делалось уже много. Посмотрите внимательно на форуме
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Полностью согласен с Сергеем, уж чего-чего, а таймеров предостаточно. :) Но я так понимаю, нужна именно реализация. Проблем совсем не вижу: настраиваем 16-ти битный таймер в режим СТС (сброс по совпадению), записываем необходимое значение в регистр сравнения, и в прерывании по совпадению получаем отсчет 1 секунды. А там уже творим что нужно. Основа таймера готова.

Впрочем, есть еще один интересный вариант: в Atmega8 можно настроить таймер Т2 для асинхронного режима работы. Цепляем часовой кварц и так же получаем отсчет одной секунды по переполнению таймера.

P.S. Для реализации нужен лишь даташит. Более - ничего.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Lihachov
Родился
Сообщения: 2
Зарегистрирован: Вт июл 17, 2012 02:05:55

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

Сообщение Lihachov »

Благодарю за советы, буду осваивать)
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Если возникнут затруднения с даташитом, можете почитать книжку:

Микроконтроллеры AVR семейства Mega.

По сути своей, это сборный даташит на русском, для всего семейства.

Это та же история, но для Attiny (на будущее): :)

Микроконтроллеры AVR семейства Tiny.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

edm2007 писал(а):Если возникнут затруднения с даташитом, можете почитать книжку:

А когда уставший взгляд уже будет не способен различить пляшущие перед глазами буквы, загляните сюда: :))) http://cxem.net/mc/mc109.php
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

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

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

Сообщение amv2000 »

Ну на без рыбье....И кстати что в коде не правильно?
Лично мне понравился асинхронный режим на Вашей странице http://www.edm2007.narod.ru/startavr9.html
А автор вопроса пусть решает сам.
Ответить

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