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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

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

Сообщение radio-kot »

Jonny_3103 писал(а): софтовые часы жутко спешат, использовать DS пока не хочу.
попробуйте часики rtc встроенные в avr - апноут avr107 вроде и есть в примерах студии и cvavr
Будете проходить мимо- проходите!
Аватара пользователя
Bear2011
Друг Кота
Сообщения: 13253
Зарегистрирован: Ср апр 06, 2011 09:58:13
Откуда: Кузбасс

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

Сообщение Bear2011 »

софтовые часы жутко спешат, использовать DS пока не хочу


Можно попробовать добавить часовой кварц как описано тут
http://easyelectronics.ru/avr-uchebnyj- ... jmera.html

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

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

Сообщение edm2007 »

Собственно, при конфигурации

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

Config Clock = Soft


и работает асинхронный режим таймера. Именно в его обработчике и крутятся служебные переменные _hour, _min и _sec, просто все это остается за кадром.

Есть два очень важных момента при работе с часовым кварцем:

1. Разводка. Дороги, соединяющие кварц с МК должны быть как можно короче (это касается вообще любых кварцев). Корпус кварца хорошо бы соединить с землей.
2. Для надежного запуска кварца без конденсаторов необходимо установить фьюз CKOPT, в ином случае возможен срыв генерации, нестабильная работа и прочие "радости".
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
rus084
Друг Кота
Сообщения: 3443
Зарегистрирован: Вт июн 28, 2011 12:11:50
Откуда: Россия,Ставропольский край, ст.Бекешевская
Контактная информация:

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

Сообщение rus084 »

имеется цифровой сигнал , иногда появляются мешающие импульсы короче 200мкс .
Нужно убрать импульсы короче 200мкс и оставить нужные (длиннее 400мкс)
Таким кодом можно решить эту проблему ? Не будет скрытых багов?

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

Do
A = portb.0
Waitus 200
If portb.0 = A then portb.1 =A
Loop
Меня зовут Димон .
Изображение
Изображение
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

rus084 писал(а):Не будет скрытых багов?

Будут. Нужен контроль "правильного" импульса. То есть нужно пытаться не отфильтровать помеху, а наоборот, фиксировать нужную длину.
Аватара пользователя
rus084
Друг Кота
Сообщения: 3443
Зарегистрирован: Вт июн 28, 2011 12:11:50
Откуда: Россия,Ставропольский край, ст.Бекешевская
Контактная информация:

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

Сообщение rus084 »

полезный импульс может быть любой длинны .
Тогда использовать таймер нужно :

Во время фронта импульса запускать счетчик импульсов , ждать 300мкс , если счетчик=0 то портб.1 = 1 , ждать 300мкс , портб.1=0
Меня зовут Димон .
Изображение
Изображение
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Наверное, если подробней описать проблему, более толковое можно услышать.
Пока на уровне академических исследований. И что означает
rus084 писал(а): импульс может быть любой длинны

От 400 мкс до нескольких суток?
Аватара пользователя
rus084
Друг Кота
Сообщения: 3443
Зарегистрирован: Вт июн 28, 2011 12:11:50
Откуда: Россия,Ставропольский край, ст.Бекешевская
Контактная информация:

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

Сообщение rus084 »

до 1мс импульс . Коефициент заполнения около 5% , т.е. Пауза в 20 раз длиннее импульса .

Идея с счетчиком-таймером пока выглядит лучше всего
Меня зовут Димон .
Изображение
Изображение
Аватара пользователя
SilentDemon
Открыл глаза
Сообщения: 75
Зарегистрирован: Пт июн 29, 2012 12:36:23

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

Сообщение SilentDemon »

Приветствую, Товарищи Коты :)
Изучаю Bascom. Вот http://cxem.net/mc/mc168.php урок работы с DS1307.
Не понятно что за адреса &HD0, &H00, &HD1, в даташите их не нашел, откуда они взялись и что выполняют?
I2cstart
I2cwbyte &HD0
I2cwbyte &H00
I2cstart
I2cwbyte &HD1
I2crbyte (переменная в которую запишем секунды) , Ack
I2crbyte (переменная в которую запишем минуты) , Ack
I2crbyte (переменная в которую запишем часы) , Ack
I2crbyte (переменная в которую запишем номер дня недели) , Ack
I2crbyte (переменная в которую запишем дату), Ack
I2crbyte (переменная в которую запишем номер месяца) , Ack
I2crbyte (переменная в которую запишем год) , Nack
I2cstop
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Это не адреса. Это команды DS1307. Нужно смотреть даташит на нее.
Аватара пользователя
SilentDemon
Открыл глаза
Сообщения: 75
Зарегистрирован: Пт июн 29, 2012 12:36:23

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

Сообщение SilentDemon »

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 ' закончили

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

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

Сообщение vem566 »

SilentDemon писал(а):I2cwbyte &HD0 ' адрес микросхемы

SilentDemon писал(а):I2cwbyte &HD1 ' даем понять что готовы принимать данные

Согласно даташита, адрес микросхемы это старшие семь бит. А в младшем бите или 0 или 1 в зависимости от направления обмена (запись/чтение). То есть &HD0 это обращение к устройству с адресом 1101000 с сообщением, что следующие передаваемые от ведущего устройства данные будут для записи, а &HD1 соответственно с требованием к этому устройству передать данные ведущему устройству.
Аватара пользователя
SilentDemon
Открыл глаза
Сообщения: 75
Зарегистрирован: Пт июн 29, 2012 12:36:23

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

Сообщение SilentDemon »

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

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

Сообщение vem566 »

Адрес тот же, но протокол обмена другой. См. английский даташит стр 16 и 17. http://datasheets.maximintegrated.com/en/ds/DS3231.pdf
Аватара пользователя
SilentDemon
Открыл глаза
Сообщения: 75
Зарегистрирован: Пт июн 29, 2012 12:36:23

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

Сообщение SilentDemon »

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

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

Сообщение vem566 »

Немного попутал в терминах. У 3231 другой байт конфигурации. Помнится мудохался с запуском PCF8583, пока не начал менять этот байт. Разобрался - заработало.
А что конкретно не работает?
Аватара пользователя
SilentDemon
Открыл глаза
Сообщения: 75
Зарегистрирован: Пт июн 29, 2012 12:36:23

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

Сообщение SilentDemon »

В Протеусе DS1307 идут как часы на компьютере, а DS3231 начинают отсчет с нуля. Может так и должно быть. Хочу в Sunny_Clock использовать DS3231, но все как один говорят, что без изменения прошивки работать не будет, а вроде как должно?
Вроде разобрался что к чему.
Paha100
Родился
Сообщения: 13
Зарегистрирован: Вс апр 25, 2010 20:45:03

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

Сообщение Paha100 »

Впал в ступор. Симулирую в Протеусе с Атмегой2560. В программе подаю сигналы на порт B все нормально проходит. Как только эти же сигналы пытаюсь подать на порт H выходит белиберда. Программа для сдвигового регистра 595. Встроенной функцией Shiftout не пользуюсь накопал код на ассемблере.
В чем проблема?

Код
Спойлер

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

$regfile = "m2560def.dat"                                   ' specify the used micro
$crystal = 16000000                                         ' used crystal frequency
$baud = 19200                                               ' use baud rate
$hwstack = 32                                               '
$swstack = 32                                               '
$framesize = 40


'Назначение порта и пинов для регистра
Shiftport Alias Porth                                       'Назначаем порт для вывода в регистр
Const Dataclk = 2                                           'Номер пина для тактирования регистра
Const Dataout = 3                                           'Номер пина для данных регистра
Const Dataset = 4                                           'Номер пина для защелки регистра
Config Shiftport = Output
'----------

'Объявляем функцию для вывода в регистр
Declare Sub Test(byval N As Word)
'----------
'Объявляем переменную 2-байтовую для вывода в регистр
Dim S As Word
'----------
'Основное тело программы

S = &B1000000100000001
Nop
Call Test(s)

'Shiftout Shiftport.dataout , Shiftport.dataclk , S , 3
'Set Shiftport.dataset
'Reset Shiftport.dataset

Nop                                                         '

End
'----------


'Функция вывода в регистр

Sub Test()
$asm
  push r16
  Push r18

  lds r16, {s}                                              ' Загрузка младшего байта переменной S
  rCall Shiftout

  Lds r16, {s+1}                                            'Загрузка старшего байта переменной S
  rCall Shiftout

  sbi  Shiftport,Dataset                                    'Защелка
  cbi  Shiftport,Dataset                                    'Защелка
  pop r18
  pop r16

$end Asm

End Sub

$asm
Shiftout:
 'Sbi Ddrb , 3
  ldi  r18,&h08
So2:
  Ror r16
  brcc So1
  sbi  Shiftport,Dataout
  rjmp So3
So1:
  Cbi Shiftport , Dataout
So3:
  Sbi Shiftport , Dataclk
  dec  r18
  cbi  Shiftport,Dataclk
  brne So2
  cbi  Shiftport,Dataout
  ret
$end Asm
'----------
domrustika
Грызет канифоль
Сообщения: 257
Зарегистрирован: Чт мар 22, 2007 13:50:33
Откуда: казань
Контактная информация:

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

Сообщение domrustika »

ребята помогите!! очень нужна помощь. собрал розетку таймер! КОД не работает как надо, хотя в протеусе все ок!
посмотрите пожалуйста кто может мой код, и скажите что я не так сделал? вместо нормальных фраз выходит крякозябра!
так же есть видео косяка!
заранее благодарю!!
видео тут http://youtu.be/zNsS4Of3Orc
Вложения
taimer.rar
(31.71 КБ) 244 скачивания
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Вы настройки стека осознанно изменили, или тоже по частям собирали?

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

$hwstack = 40
$swstack = 16
$framesize = 32


Попробуйте их убрать, пусть используются по умолчанию.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Ответить

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