Страница 211 из 304

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

Добавлено: Ср сен 17, 2014 06:37:52
radio-kot
Jonny_3103 писал(а): софтовые часы жутко спешат, использовать DS пока не хочу.
попробуйте часики rtc встроенные в avr - апноут avr107 вроде и есть в примерах студии и cvavr

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

Добавлено: Ср сен 17, 2014 06:47:13
Bear2011
софтовые часы жутко спешат, использовать DS пока не хочу
Можно попробовать добавить часовой кварц как описано тут
http://easyelectronics.ru/avr-uchebnyj- ... jmera.html

Собственно в обработке прерывания можно поставить только часы. А все остнальное в теле программы. Быстродействия хватит

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

Добавлено: Ср сен 17, 2014 13:22:32
edm2007
Собственно, при конфигурации

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

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

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

1. Разводка. Дороги, соединяющие кварц с МК должны быть как можно короче (это касается вообще любых кварцев). Корпус кварца хорошо бы соединить с землей.
2. Для надежного запуска кварца без конденсаторов необходимо установить фьюз CKOPT, в ином случае возможен срыв генерации, нестабильная работа и прочие "радости".

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

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

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

Do
A = portb.0
Waitus 200
If portb.0 = A then portb.1 =A
Loop

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

Добавлено: Пн сен 22, 2014 19:12:48
vem566
rus084 писал(а):Не будет скрытых багов?

Будут. Нужен контроль "правильного" импульса. То есть нужно пытаться не отфильтровать помеху, а наоборот, фиксировать нужную длину.

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

Добавлено: Пн сен 22, 2014 20:00:54
rus084
полезный импульс может быть любой длинны .
Тогда использовать таймер нужно :

Во время фронта импульса запускать счетчик импульсов , ждать 300мкс , если счетчик=0 то портб.1 = 1 , ждать 300мкс , портб.1=0

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

Добавлено: Пн сен 22, 2014 20:14:03
vem566
Наверное, если подробней описать проблему, более толковое можно услышать.
Пока на уровне академических исследований. И что означает
rus084 писал(а): импульс может быть любой длинны
От 400 мкс до нескольких суток?

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

Добавлено: Пн сен 22, 2014 20:23:41
rus084
до 1мс импульс . Коефициент заполнения около 5% , т.е. Пауза в 20 раз длиннее импульса .

Идея с счетчиком-таймером пока выглядит лучше всего

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

Добавлено: Вт сен 23, 2014 13:14:06
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

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

Добавлено: Вт сен 23, 2014 13:36:13
vem566
Это не адреса. Это команды DS1307. Нужно смотреть даташит на нее.

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

Добавлено: Вт сен 23, 2014 14:08:52
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 ' закончили

Это адреса, биты чтения и записи.

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

Добавлено: Вт сен 23, 2014 15:09:49
vem566
SilentDemon писал(а):I2cwbyte &HD0 ' адрес микросхемы
SilentDemon писал(а):I2cwbyte &HD1 ' даем понять что готовы принимать данные
Согласно даташита, адрес микросхемы это старшие семь бит. А в младшем бите или 0 или 1 в зависимости от направления обмена (запись/чтение). То есть &HD0 это обращение к устройству с адресом 1101000 с сообщением, что следующие передаваемые от ведущего устройства данные будут для записи, а &HD1 соответственно с требованием к этому устройству передать данные ведущему устройству.

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

Добавлено: Вт сен 23, 2014 15:31:25
SilentDemon
Понял, почему тогда с DS3231 не работает, ведь адрес тоже 1101000?

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

Добавлено: Вт сен 23, 2014 16:42:01
vem566
Адрес тот же, но протокол обмена другой. См. английский даташит стр 16 и 17. http://datasheets.maximintegrated.com/en/ds/DS3231.pdf

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

Добавлено: Вт сен 23, 2014 17:59:14
SilentDemon
Да вроде одинаковый. Где отличие?

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

Добавлено: Вт сен 23, 2014 19:57:36
vem566
Немного попутал в терминах. У 3231 другой байт конфигурации. Помнится мудохался с запуском PCF8583, пока не начал менять этот байт. Разобрался - заработало.
А что конкретно не работает?

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

Добавлено: Вт сен 23, 2014 20:18:57
SilentDemon
В Протеусе DS1307 идут как часы на компьютере, а DS3231 начинают отсчет с нуля. Может так и должно быть. Хочу в Sunny_Clock использовать DS3231, но все как один говорят, что без изменения прошивки работать не будет, а вроде как должно?
Вроде разобрался что к чему.

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

Добавлено: Ср сен 24, 2014 09:58:54
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
'------------------------------

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

Добавлено: Пт сен 26, 2014 23:46:13
domrustika
ребята помогите!! очень нужна помощь. собрал розетку таймер! КОД не работает как надо, хотя в протеусе все ок!
посмотрите пожалуйста кто может мой код, и скажите что я не так сделал? вместо нормальных фраз выходит крякозябра!
так же есть видео косяка!
заранее благодарю!!
видео тут http://youtu.be/zNsS4Of3Orc

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

Добавлено: Сб сен 27, 2014 18:32:17
edm2007
Вы настройки стека осознанно изменили, или тоже по частям собирали?

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

$hwstack = 40
$swstack = 16
$framesize = 32
Попробуйте их убрать, пусть используются по умолчанию.