попробуйте часики rtc встроенные в avr - апноут avr107 вроде и есть в примерах студии и cvavrJonny_3103 писал(а): софтовые часы жутко спешат, использовать DS пока не хочу.
BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
Будете проходить мимо- проходите!
Re: BASCOM AVR в вопросах и ответах
софтовые часы жутко спешат, использовать DS пока не хочу
Можно попробовать добавить часовой кварц как описано тут
http://easyelectronics.ru/avr-uchebnyj- ... jmera.html
Собственно в обработке прерывания можно поставить только часы. А все остнальное в теле программы. Быстродействия хватит
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Собственно, при конфигурации
и работает асинхронный режим таймера. Именно в его обработчике и крутятся служебные переменные _hour, _min и _sec, просто все это остается за кадром.
Есть два очень важных момента при работе с часовым кварцем:
1. Разводка. Дороги, соединяющие кварц с МК должны быть как можно короче (это касается вообще любых кварцев). Корпус кварца хорошо бы соединить с землей.
2. Для надежного запуска кварца без конденсаторов необходимо установить фьюз CKOPT, в ином случае возможен срыв генерации, нестабильная работа и прочие "радости".
Код: Выделить всё
Config Clock = Softи работает асинхронный режим таймера. Именно в его обработчике и крутятся служебные переменные _hour, _min и _sec, просто все это остается за кадром.
Есть два очень важных момента при работе с часовым кварцем:
1. Разводка. Дороги, соединяющие кварц с МК должны быть как можно короче (это касается вообще любых кварцев). Корпус кварца хорошо бы соединить с землей.
2. Для надежного запуска кварца без конденсаторов необходимо установить фьюз CKOPT, в ином случае возможен срыв генерации, нестабильная работа и прочие "радости".
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- rus084
- Друг Кота
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
имеется цифровой сигнал , иногда появляются мешающие импульсы короче 200мкс .
Нужно убрать импульсы короче 200мкс и оставить нужные (длиннее 400мкс)
Таким кодом можно решить эту проблему ? Не будет скрытых багов?
Нужно убрать импульсы короче 200мкс и оставить нужные (длиннее 400мкс)
Таким кодом можно решить эту проблему ? Не будет скрытых багов?
Код: Выделить всё
Do
A = portb.0
Waitus 200
If portb.0 = A then portb.1 =A
Loop
Re: BASCOM AVR в вопросах и ответах
rus084 писал(а):Не будет скрытых багов?
Будут. Нужен контроль "правильного" импульса. То есть нужно пытаться не отфильтровать помеху, а наоборот, фиксировать нужную длину.
- rus084
- Друг Кота
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
полезный импульс может быть любой длинны .
Тогда использовать таймер нужно :
Во время фронта импульса запускать счетчик импульсов , ждать 300мкс , если счетчик=0 то портб.1 = 1 , ждать 300мкс , портб.1=0
Тогда использовать таймер нужно :
Во время фронта импульса запускать счетчик импульсов , ждать 300мкс , если счетчик=0 то портб.1 = 1 , ждать 300мкс , портб.1=0
Re: BASCOM AVR в вопросах и ответах
Наверное, если подробней описать проблему, более толковое можно услышать.
Пока на уровне академических исследований. И что означает
От 400 мкс до нескольких суток?
Пока на уровне академических исследований. И что означает
rus084 писал(а): импульс может быть любой длинны
От 400 мкс до нескольких суток?
- rus084
- Друг Кота
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
до 1мс импульс . Коефициент заполнения около 5% , т.е. Пауза в 20 раз длиннее импульса .
Идея с счетчиком-таймером пока выглядит лучше всего
Идея с счетчиком-таймером пока выглядит лучше всего
- SilentDemon
- Открыл глаза
- Сообщения: 75
- Зарегистрирован: Пт июн 29, 2012 12:36:23
Re: BASCOM AVR в вопросах и ответах
Приветствую, Товарищи Коты
Изучаю 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
Изучаю 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 в вопросах и ответах
Это не адреса. Это команды DS1307. Нужно смотреть даташит на нее.
- SilentDemon
- Открыл глаза
- Сообщения: 75
- Зарегистрирован: Пт июн 29, 2012 12:36:23
Re: BASCOM AVR в вопросах и ответах
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 ' закончили
Это адреса, биты чтения и записи.
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 в вопросах и ответах
SilentDemon писал(а):I2cwbyte &HD0 ' адрес микросхемы
SilentDemon писал(а):I2cwbyte &HD1 ' даем понять что готовы принимать данные
Согласно даташита, адрес микросхемы это старшие семь бит. А в младшем бите или 0 или 1 в зависимости от направления обмена (запись/чтение). То есть &HD0 это обращение к устройству с адресом 1101000 с сообщением, что следующие передаваемые от ведущего устройства данные будут для записи, а &HD1 соответственно с требованием к этому устройству передать данные ведущему устройству.
- SilentDemon
- Открыл глаза
- Сообщения: 75
- Зарегистрирован: Пт июн 29, 2012 12:36:23
Re: BASCOM AVR в вопросах и ответах
Понял, почему тогда с DS3231 не работает, ведь адрес тоже 1101000?
Re: BASCOM AVR в вопросах и ответах
Адрес тот же, но протокол обмена другой. См. английский даташит стр 16 и 17. http://datasheets.maximintegrated.com/en/ds/DS3231.pdf
- SilentDemon
- Открыл глаза
- Сообщения: 75
- Зарегистрирован: Пт июн 29, 2012 12:36:23
Re: BASCOM AVR в вопросах и ответах
Да вроде одинаковый. Где отличие?
Re: BASCOM AVR в вопросах и ответах
Немного попутал в терминах. У 3231 другой байт конфигурации. Помнится мудохался с запуском PCF8583, пока не начал менять этот байт. Разобрался - заработало.
А что конкретно не работает?
А что конкретно не работает?
- SilentDemon
- Открыл глаза
- Сообщения: 75
- Зарегистрирован: Пт июн 29, 2012 12:36:23
Re: BASCOM AVR в вопросах и ответах
В Протеусе DS1307 идут как часы на компьютере, а DS3231 начинают отсчет с нуля. Может так и должно быть. Хочу в Sunny_Clock использовать DS3231, но все как один говорят, что без изменения прошивки работать не будет, а вроде как должно?
Вроде разобрался что к чему.
Вроде разобрался что к чему.
Re: BASCOM AVR в вопросах и ответах
Впал в ступор. Симулирую в Протеусе с Атмегой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 в вопросах и ответах
ребята помогите!! очень нужна помощь. собрал розетку таймер! КОД не работает как надо, хотя в протеусе все ок!
посмотрите пожалуйста кто может мой код, и скажите что я не так сделал? вместо нормальных фраз выходит крякозябра!
так же есть видео косяка!
заранее благодарю!!
видео тут http://youtu.be/zNsS4Of3Orc
посмотрите пожалуйста кто может мой код, и скажите что я не так сделал? вместо нормальных фраз выходит крякозябра!
так же есть видео косяка!
заранее благодарю!!
видео тут http://youtu.be/zNsS4Of3Orc
- Вложения
-
- taimer.rar
- (31.71 КБ) 244 скачивания
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Вы настройки стека осознанно изменили, или тоже по частям собирали?
Попробуйте их убрать, пусть используются по умолчанию.
Код: Выделить всё
$hwstack = 40
$swstack = 16
$framesize = 32
Попробуйте их убрать, пусть используются по умолчанию.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
