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

Обсуждаем контроллеры компании Atmel.
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

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

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

Сообщение amv2000 »

осторожно! леоныч!!! писал(а):компилятор конфигурирование это игнорирует и пишет черными буквами этот порт

Сейчас вставил первый попавшийся код назначил порт А на выход всё компилируется?

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

$regfile = "ATtiny2313.DAT"
 $crystal = 1000000

 Config Portb.0 = Input
 Config Porta = Output
 Config Aci = On , Compare = On , Trigger = Rising

 On Aci Hi_signal
 Enable Aci
 Enable Interrupts


 Do
    Portd.0 = Acsr.aco

 Loop

 Hi_signal:
      Portd.0 = Acsr.aco
 Return
_Vasilij_
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт янв 25, 2013 02:48:32

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

Сообщение _Vasilij_ »

похоже конфигурационный файл от старой AT90S2313 (2313def.dat) использовался.
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Всем привет! Подскажите кто знает,можно ли организовать на мк avr генератор? Допустим до 4мгц. Чтоб можно было менять частоту с шагом в 5кгц? При этом не применяя синтезатор частоты итд итп?
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

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

Сообщение zero648 »

Думаю можно сделать из тиньки 85й или 861й, у них есть встроенный генератор 64МГц

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

The Timer/Counter1 features a high resolution and a high accuracy usage with the lower prescaling
opportunities. It can also support two accurate, high speed, 8-bit Pulse Width Modulators
using clock speeds up to 64 MHz ( or 32 MHz in Low Speed Mode).
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

У меня только 13 есть. Так что не вариант...
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

Генератор чего?) Идей? :-D just joking)
чем ближе частота к граничной, на которой работает контроллер, тем больше погрешность.
Весь разговор ниже про прямоугольные импульсы.
Например, если использовать режим FastPWM таймера в ATTiny13, то можно получить максимальную частоту = Fcpu/2. Следующая за ней возможная частота = Fcpu/3, следующая = Fcpu/4... и т.д.
следовательно при частоте Fcpu 20 МГц, максимально можно получить 10 МГц, далее 6,67 МГц, далее 5 МГц, 4 МГц, 3,34 МГц, 2,86 МГц, 2,5 МГц..... ну и т.д.
Ставим плюсы: )
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Ахахах))) Блин ни как не получается то что нужно))) Блин эти контроллеры такие контроллеры))) Блин я хотел попробовать простой функциональный генератор запилить)
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

осторожно! леоныч!!! писал(а):Ахахах)))

Хватит стонать да охать, конкретно чего не получается.....старость не радость.
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

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

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

Сообщение amv2000 »

осторожно! леоныч!!! писал(а):как реализовать генератор.

Могу предложить от 1 до 20 КГц, с шагом в 1Гц http://www.8051projects.net/download-d2 ... oject.html
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Спасибо! Будем изучать)
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

Кто-нибудь пробовал на баскоме писать программу для приемника TEA5767? Интерисует реализация режима сканирования частоты. Мой код не работает.
Заодно детский вопрос по баскому. Как проверить правильно значение бита в некотором байте?
IF Buffer.7=1 THEEN ....
Правильная ли такая запись для проверки состояния 7 бита в переменной buffer?
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

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

Сообщение max50 »

serg_svd писал(а):Заодно детский вопрос по баскому. Как проверить правильно значение бита в некотором байте? IF Buffer.7=1 THEEN ....Правильная ли такая запись для проверки состояния 7 бита в переменной buffer?

Я так же делал, все работало.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

max50 писал(а):Я так же делал, все работало.

Значит у меня что-то с кодом сканирования для TEA5767 не так :(
Ошибится вроде негде с первого взгляда, но есть существенное НО! Китайцы удешевили платку приемника и влепили кварц 32,768 кГц. Из-за этого сетки 100 кГц ровной не получается :( В даташите об этом написано, и сказано, что исправляется программно. но я вот никак не пойму как :(
Потому как не ловит у меня программа этот бит, а значит и точной настройки нет
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
_Vasilij_
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт янв 25, 2013 02:48:32

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

Сообщение _Vasilij_ »

serg_svd писал(а):Значит у меня что-то с кодом сканирования для TEA5767 не так :(
а где код ?
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

Код смогу только вечером выложить.
Пока на словах распишу алгоритм автонастройки
Пока у меня алгоритм такой:
1) есть начальное значение частоты. к нему прибавляем шаг сетки 100 кГц. считаем PLL и загоняем в микросхему с установками 3го бита &B11110000. То есть сканирование вверх, макс чутье ADC.
бит сканирования и мьюта ставлю в 1.
2) выжидаю паузу 100 мс (пробовал от 10 до 100. пока процесс отладки оставил 100 мс. Скорость поиска пока не важна)
3) Считываю данные из микросхемы и проверяю состояние 7 бита в 1 байте считанных данных. Он и является битом READY
4) если он равен 0, то прибавляем к частоте 100 кГц, считаем PLL и дальше по циклу, пока не будет READY=1
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

Вот код. Урезанная версия. Без индикации
Спойлер

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

$regfile = "m8def.dat"
$crystal = 4000000                                          ' 4MHz

Dim Tmp_w As Word
Dim Freq As Word                                            ' Частота
Dim Pll As Long

Dim Ready As Bit
Dim Mute As Bit
Dim Search As Bit
Dim Sud As Bit                                              ' Search Up/Down bit (1/0)
Dim 1st As Byte
Dim 2nd As Byte
Dim 3rd As Byte
Dim 4th As Byte
Dim 5th As Byte
Dim I As Byte
Dim Buffer(5) As Byte

Const Freq_min = 875                                        ' Нижняя граница диапазона 87,5 МГц
Const Freq_max = 1080                                       ' Верхняя граница диапазона 108,0 МГц
Const 5767_w = &HC0                                         ' Запись в TEA5767
Const 5767_r = &HC1                                         ' Чтение


Ddrb = &B11111111                                           ' Все на выход
Ddrc = &B11111111                                           ' Все на выход
Ddrd = &B00000000                                           ' Все на вход

Bt_scan Alias Pind.3

Config Debounce = 25                                        ' Антидребезг. По умолчанию 25мс

Config Sda = Portc.4
Config Scl = Portc.5
I2cinit

Freq = Freq_min
Gosub Ras_pll
Mute = 0
Search = 0
3rd = &B00010000
4th = &B00010010
5th = 0
Gosub 5767_write

Do
Debounce Bt_scan , 0 , Scan_freq , Sub
Loop


Scan_freq:
   Ready = 0
   Mute = 1
   Search = 1
   3rd = &B11110000                                         ' Search Up, high; level ADC output = 10, stereo ON
   4th = &B00010010
   5th = 0
   While Ready = 0
      Incr Freq
      If Freq > Freq_max Then
         Freq = Freq_max
      End If
      Gosub Ras_pll
      Gosub 5767_write
      Waitms 100
      Gosub 5767_ready
      If Buffer(1).7 = 1 Then Ready = 1                     ' Проверяем бит READY
      Waitms 100
   Wend
   Mute = 0
   Search = 0
   3rd = &B00010000                                         ' stereo ON
   4th = &B00010010
   5th = 0
   Gosub 5767_write
Return

Ras_pll:
   Pll = Freq : Pll = Pll * 100
   Pll = Pll + 225
   Pll = Pll * 4000
   Pll = Pll / 32768
   Tmp_w = Pll
   1st = High(tmp_w)
   2nd = Low(tmp_w)
Return

5767_write:
   If Search = 0 Then
      Reset 1st.6                                           ' SM=OFF (Search Mode)
   Elseif Search = 1 Then
      Set 1st.6                                             ' SM=ON (Search Mode)
   End If
   If Mute = 0 Then
      Reset 1st.7                                           ' Mute OFF
   Elseif Mute = 1 Then
      Set 1st.7                                             ' Mute ON
   End If
   I2cstart
   I2cwbyte 5767_w
   I2cwbyte 1st
   I2cwbyte 2nd
   I2cwbyte 3rd
   I2cwbyte 4th
   I2cwbyte 5th
   I2cstop
Return

5767_ready:
   I2cstart
   I2cwbyte 5767_r
   For I = 1 To 5
       I2crbyte Buffer(i)
       Waitms 10
   Next
   I2cstop
Return


End                                                         'end program


Фото модуля прикладываю. На плате маркировка pl102bc-n
Вложения
module.JPG
(21.51 КБ) 637 скачиваний
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

Нашел ошибку в коде. Неправильно написал строчку считывания I2C.
надо так
I2crbyte Buffer(i) , Ack

Но при чувствительности ADC=5 что-то сильное чутье к шумам. Тут 2 варианта: 1) я опять где-то в коде накосячил; 2) у меня все на макетке собрано и возможно на проводах наводки
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
cattus
Родился
Сообщения: 14
Зарегистрирован: Сб май 26, 2012 16:31:25

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

Сообщение cattus »

$regfile = "m8def.dat"
$Crystal=4000000
$hwstack=40
$swstack=50
$framesize = 50
Dim A As Byte

Config Portb = Output

Config Pinb.0 = Input
Do
Debounce Pinb.0 , 0 , En , Sub
Loop
A = 5
Incr A
A = Portb
En:

Toggle A
Return


End
Не получается с одной кнопки переключать поочередно каждый светодиод (светодиодов 5). Программу написал но она упорно не хочет работать. Пробовал оператор For .... Next там то же выползали ошибки Подскажите пожалуйста, что не так делаю, я только учусь... :write:
Ответить

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