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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

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

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

Сообщение edm2007 »

Что именно заставило Вас призадуматься? Даже в "авторитетном" протеусе все улетает как положено (это выход и тактирование):

Изображение

Не трудно заметить, что улетает 0b01100100 = 100.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
ВасилийВикторович
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт мар 18, 2010 23:31:57
Откуда: Домодедово

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

Сообщение ВасилийВикторович »

edm2007 писал(а):Что именно заставило Вас призадуматься? Даже в "авторитетном" протеусе все улетает как положено. Не трудно заметить, что улетает 0b01100100 = 100.

Что улетает все правильно я знаю, устройство которое принимает работать в протеусе не хочет..

Аlex писал(а):Откуда протеусу доверия больше, чем железу ?

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

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

Сообщение edm2007 »

Вы когда в протеусе схему рисовали, учли что управляющему контроллеру детекция перехода через ноль нужна, например? Все это сделали, чтобы проверять там?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Из статьи :
В качестве бонуса возможна настройка отправки обратно на управляющий МК статуса - это один байт у которого нулевой бит будет выставлен в 1 в случае отсутствия переменного напряжения в течении более 1 сек (обрыв провода питания).


Попробуйте проверить, дышит ли вообще МК.
ВасилийВикторович
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт мар 18, 2010 23:31:57
Откуда: Домодедово

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

Сообщение ВасилийВикторович »

Аlex писал(а):Из статьи :
В качестве бонуса возможна настройка отправки обратно на управляющий МК статуса - это один байт у которого нулевой бит будет выставлен в 1 в случае отсутствия переменного напряжения в течении более 1 сек (обрыв провода питания).


Попробуйте проверить, дышит ли вообще МК.

Попробовал, все ок. Выходит программа у автора рабочая.

Накидал в протеусе два мк, один передает, другой принимает. И та же ерунда, передаю любое четное число а другой мк принимает 255. Передаю нечетное, принимается ноль. Получается протеус глючит ?

UPD:
пока шарился по просторам интернета, нашел пару случаев похожих на мою проблему:
http://www.forbot.pl/forum/topics49/2x-atmega-spi-odbiera-tylko-jedna-watrosc-255-vt8988.htm
http://bascomavr.3bb.ru/viewtopic.php?id=455
Там тоже получается при приеме или ноль, или 255. Решения так и не нашел пока.
Завтра утром попробую в железе, может что то прояснится.
UPD:
Научился я наконец то правильно принимать данные по spi. Код для софтового spi примерно такой:
Спойлер

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

$regfile = "m8def.dat"                                      ' specify the used micro

$crystal = 8000000                                          ' used crystal frequency
Dim A As Byte


Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portd.0 , Db7 = Portd.1
Cursor Off
Initlcd
Cls
'define the constants used by the SPI slave

Const _softslavespi_port = Portd                           ' we used portD

Const _softslavespi_pin = Pind                             'we use the PIND register for reading

Const _softslavespi_ddr = Ddrd                             ' data direction of port D



Const _softslavespi_clock = 5                               'pD.5 is used for the CLOCK

Const _softslavespi_miso = 3                               'pD.3 is MISO

Const _softslavespi_mosi = 4                               'pd.4 is MOSI

Const _softslavespi_ss = 2                                 ' pd.2 is SS

'while you may choose all pins you must use the INT0 pin for the SS

'for the 2313 this is pin 2



'PD.3(7),  MISO  must be output

'PD.4(8),  MOSI

'Pd.5(9) , Clock

'PD.2(6),  SS /INT0



'define the spi slave lib

$lib "spislave.lbx"

'sepcify wich routine to use

$external _spisoftslave



'we use the int0 interrupt to detect that our slave is addressed

On Int0 Isr_sspi Nosave

'we enable the int0 interrupt

Enable Int0

'we configure the INT0 interrupt to trigger when a falling edge is detected

Config Int0 = Falling

'finally we enabled interrupts

Enable Interrupts



'

Dim _ssspdr As Byte                                         ' this is out SPI SLAVE SPDR register

Dim _ssspif As Bit                                         ' SPI interrupt revceive bit

Dim Bsend As Byte , I As Byte , B As Byte                   ' some other demo variables



_ssspdr = 0                                                 ' we send a 0 the first time the master sends data

Do

  If _ssspif = 1 Then
  Locate 1 , 1
  Lcd "received: " ; _ssspdr ; " "

  Reset _ssspif

  _ssspdr = _ssspdr + 1                                   ' we send this the next time

  End If

Loop

End


А для железного spi вообще пару строчек. Но регулятор мощности из статьи все равно или вкл или выкл, регулироваться в протеусе не хочет.
Так что мне теперь проще свой собрать чем повторять чужой. Всем Спасибо. :beer:
domrustika
Грызет канифоль
Сообщения: 257
Зарегистрирован: Чт мар 22, 2007 13:50:33
Откуда: казань
Контактная информация:

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

Сообщение domrustika »

Ребят подскажите пожалуйста примерный код для реализации сценария-

Мега8 ОДИН РАЗ в сутки дергает ногой и включает реле-------- ждет 1 секунду---------выключает реле. и так каждый день.

надо это сделать без часов реального времени ds1307.

спасибо! :)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

domrustika писал(а):надо это сделать без часов реального времени

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

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

Сообщение edm2007 »

Часы вести все равно нужно. Пусть софтовые, но нужно. И для синхронизации, и для элементарной настройки времени срабатывания. Можно конечно жмакать кнопку нужного момента, и от этого времени уже отсчитывать 24 часа. Но во-первых это жутко неудобно, а во-вторых потеря питания и все начинай сначала.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
domrustika
Грызет канифоль
Сообщения: 257
Зарегистрирован: Чт мар 22, 2007 13:50:33
Откуда: казань
Контактная информация:

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

Сообщение domrustika »

Аlex писал(а):А как будете синхронизироваться с сутками ?

думал реализовать просто через команду
wait и переменную +1 через каждую секунду, потом как насчитает 24 часа включать релюшку...
наверно это глупо?)
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Почему глупо? Сосчитать 86400 импульсов? Какая разница, какова частота этих импульсов - 1 герц или 1 мегагерц?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

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

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

Сообщение edm2007 »

Именно так, полностью согласен. Отсчитать 24 часа вообще не проблема. Можно и wait (только о точности можно забыть), но как настроить время срабатывания, например? Говорю, можно просто поставить кнопку и сидеть ждать нужного момента. Потом с этого момента и начинаем отсчитывать время. А может вам не принципиально это? Когда включили, тогда реле и дернули и пошли отсчитывать? Тогда проще, конечно. Но я бы зацепил кварц и запустил бы таймером считаться. Можно даже асинхронным, на часовом кварце...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

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

Сообщение Tankor »

edm2007 писал(а): Тогда проще, конечно. Но я бы зацепил кварц и запустил бы таймером считаться. Можно даже асинхронным, на часовом кварце...

Полностью поддерживаю данный подход. Он экономичен, поскольку можно почти всегда спать. Исполнение в коде проще и т.д.
domrustika
Грызет канифоль
Сообщения: 257
Зарегистрирован: Чт мар 22, 2007 13:50:33
Откуда: казань
Контактная информация:

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

Сообщение domrustika »

edm2007 писал(а):Полностью поддерживаю данный подход. Он экономичен, поскольку можно почти всегда спать. Исполнение в коде проще и т.д.

не могли бы Вы подсказать с кодом как этот подход реализовать?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

L.O.D
Встал на лапы
Сообщения: 139
Зарегистрирован: Чт фев 11, 2016 18:35:37

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

Сообщение L.O.D »

domrustika писал(а):не могли бы Вы подсказать с кодом как этот подход реализовать?
Гляньте апноту "Atmel AVR134: Real Time Clock (RTC) Using the Asynchronous Timer" вот здесь. Там и исходничек есть.
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

http://bascomavr.3bb.ru/viewtopic.php?id=1132#p12410

Таймер настраивается на асинхронную работу.

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

Config Timer2 = Timer , Async = On , Prescale = 128       ' Делитель 32768 / 128 / 256 = 1 сек (прерывание TIMER2 = 1 раз в секунду)
МК тактируется от внутреннего генератора, а к выводам тактового генератора нужно подключить часовой кварц на 32768 Гц.
Когда все требуемые действия выполнены, МК переводится в спящий режим

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

Powersave

Таймеру назначается подпрограмма прерываний где выполняются необходимые действия. В простейшем случае код будет такой.

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

$regfile = "m8def.dat"
$crystal = 1000000     ' Тактовая частота 1 МГц.
$hwstack = 64
$swstack = 64
$framesize = 64

Config Timer2 = Timer , Async = On , Prescale = 128         ' Делитель 32768 / 128 / 256 = 1 сек (прерывание TIMER2 = 1 раз в секунду)
On Timer2 T2
Enable Timer2
' Разрешаем прерывания.
Enable Interrupts

Do
' Выполняем нужные действия,
' и когда выполнили, отправляем МК в спячку (ток потребления около 1 мка).
Powersave
' МК будет просыпаться после каждого прерывания от таймера Timer2.
Loop

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

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

Сообщение edm2007 »

Вот пример часов с моего когдатосайта: Асинхронный режим работы таймера. Простейшие часы на микроконтроллере AVR. :tea:

Даже ролик когда-то снимал... Ссылка.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
sam725
Открыл глаза
Сообщения: 67
Зарегистрирован: Сб янв 30, 2016 14:14:30

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

Сообщение sam725 »

по какой причине usbasp нивидит atmega328p
Ответить

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