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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

servnt в таком виде вряд-ли . А вот если Pinb.0 = 0 заменить на Portb.0 = 0 . Ещё Else поубирать .
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Реклама
servnt
Открыл глаза
Сообщения: 61
Зарегистрирован: Вс фев 14, 2010 11:29:12
Откуда: РФ, Рязань

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

Сообщение servnt »

dimon-790 писал(а):servnt в таком виде вряд-ли . А вот если Pinb.0 = 0 заменить на Portb.0 = 0 . Ещё Else поубирать .
А разве команда PORT(*) - не конфигурирование I/O? Т.е. вход/выход?
Реклама
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

За направление отвечает регистр DDR. Если 0 то пин порта настроен на вход (в этом случае запись 1 в регистр PORT подключит внутренний подтягивающий резистор, запись 0 переведет вход в высокоимпедансное состояние), если 1 - пин настроен на выход (запись в PORT, соответственно выдаст этот уровень).

А то что в баскоме пишут PORTB = Output, так к регистру PORT это никакого отношения не имеет. И если нужно выставить уровень на выходе, то конечно нужно писать PORTB.1 = 1 (либо Set PORTB.1). Регистр PIN же предназначен для считывания реального состояния вывода в режиме входа.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
servnt
Открыл глаза
Сообщения: 61
Зарегистрирован: Вс фев 14, 2010 11:29:12
Откуда: РФ, Рязань

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

Сообщение servnt »

А, ну да. Я тут в трех елках заблудился :)
А вообще, допускается таким образом сравнивать значения на входах АЦП?:

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

If GetADC(2) > GetADC(3) Then
Реклама
Эиком - электронные компоненты и радиодетали
servnt
Открыл глаза
Сообщения: 61
Зарегистрирован: Вс фев 14, 2010 11:29:12
Откуда: РФ, Рязань

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

Сообщение servnt »

Вот таким образом работает:

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

$regfile = "attiny13.dat"
$crystal = 9600000
Ddrb = &B11100
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Dim A As Integer
Dim B As Integer
Do
Start Adc
A = Getadc(2)
B = Getadc(3)
If A = B Then : Portb = 0
End If
If A < B Then : Portb = 1
End If
If A > B Then : Portb = 2
End If
Loop
End
Только вот, подёргивание при равных сопротивлениях есть.
Реклама
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

servnt писал(а):А вообще, допускается таким образом сравнивать значения на входах АЦП?
Неа. Только считывание значения АЦП в переменную, и уже дальнейшие операции.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Реклама
servnt
Открыл глаза
Сообщения: 61
Зарегистрирован: Вс фев 14, 2010 11:29:12
Откуда: РФ, Рязань

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

Сообщение servnt »

edm2007 писал(а): Неа. Только считывание значения АЦП в переменную, и уже дальнейшие операции.
Т.е., вот так, как у меня:

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

A = Getadc(2)
B = Getadc(3)
If A = B Then : Portb = 0
правильно? Тем паче - работает.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Угу, только так и можно.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
servnt
Открыл глаза
Сообщения: 61
Зарегистрирован: Вс фев 14, 2010 11:29:12
Откуда: РФ, Рязань

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

Сообщение servnt »

Подскажите еще, можно ли одновременно использовать в TIMER1 оба выхода, но с разной частотой ШИМа?
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

servnt писал(а):Подскажите еще, можно ли одновременно использовать в TIMER1 оба выхода, но с разной частотой ШИМа?
можно,только каждый порт будет 8-мибитным,гдето есть пример,найду-выложу если надо

вот http://avrproject.ru/publ/pwm_bascom/1-1-0-37

http://cxem.net/mc/mc177.php
servnt
Открыл глаза
Сообщения: 61
Зарегистрирован: Вс фев 14, 2010 11:29:12
Откуда: РФ, Рязань

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

Сообщение servnt »

Ага, спасибо, понял.
А если мне надо получить на выходе МК сигнал с постоянной длительностью, к примеру, 300 мСек, но разной частотой следования, то ШИМ уже не подходит.
Как в таком случае поступать? Длительность задавать командой Waitms 300, а частоту таймером отсчитывать?
servnt
Открыл глаза
Сообщения: 61
Зарегистрирован: Вс фев 14, 2010 11:29:12
Откуда: РФ, Рязань

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

Сообщение servnt »

Ребят, объясните, ну никак не врублюсь
Вот кусок примера:

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

Pulse:
  Stop Timer1
  Timer1 = Timer1pre
  Toggle Portb.1
  Start Timer1
Return
Toggle переключает пин 1 порта B каждый раз по переполнению порта №1, указанном в константе Timer1pre.
А почему тут не работает команда Disconnect?
Т.е мне надо бы что-то примерно такое:

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

Pulse:
  PORTB.1 = 1
  Waitms 150
  Stop Timer1
  Timer1 = Timer1pre (надо отсчитать 120 мс)
  Disconnect Portb.1
  Start Timer1
Return
Мне надо получить импульс постоянной длительности 150 мс, но с разным периодом.

ЗЫЖ Примерно разобрался:

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

  Reset Portb.1
  Waitms 150
  Stop Timer2
  Timer2 = Timer2pre
  Set Portb.1
  Start Timer2
Не знаю только, единственно верно и правильно такое решение
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

Добрый день! Осваиваю работу с экраном НОКИА3310. С китайским дисплеем-контрастность маловата. Расскажите как ее изменить програмно?
В библиотеке есть такая строчка

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

D3310commandout &HC8 'Middle contrast
Здесь что-то менять надо? Либо в программе какая строчка добавляется? Спасибо заранее!
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Dnepr_1186 писал(а):D3310commandout &HC8 'Middle contrast
Вот это значение &HC8 и регулирует контрастность. Изменяя С8 можно менять контрастность.
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

это в шестнадцатиричном виде? в десятичном получаеться 200, а слышал это значение может быть от 0 до 125. Как здесь поступить? В каких пределах его можно менять?
Последний раз редактировалось Dnepr_1186 Вс окт 20, 2013 20:00:50, всего редактировалось 1 раз.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Нужно читать даташит на экран. Может быть, что старший бит не используется. Тогда диапазон от 128 до 253 получается в десятичной системе. Можно провести эксперимент, можно почитать. Как удобнее.
Аватара пользователя
Dnepr_1186
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт мар 26, 2009 20:53:27
Откуда: Беларусь.Минская обл.

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

Сообщение Dnepr_1186 »

Посомтрел даташит на контроллер экрана... Что-то я там про контраст вообще не вижу. Посомтрите если не трудно, я в этих делах начинающий
Вложения
PCD8544U.pdf
(155.61 КБ) 362 скачивания
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

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

Сообщение KOTик »

Мммрррр все неспящим котам :)
Пришел Вас помучить :lol:

Имеется Button1 (PINB.2) прижатая на землю, LED (PORTB.0) и висит Button2 на внешнем прерывании (PINB.1 (INT0)).
Button1 включает светодиод на некоторое время (использую wait 10 'секунд) затем выключается.
Прерывание нужно для экстренного выключения светодиода (раньше 10 секунд) и тут как бы все работает.
А вот для повторного нажатия на Button1 требуется время wait 10.

Т.е. пришло прерывание - выключили LED, вышли из прерывания в программу и там продолжаем ждать 10 секунд, после чего Button1 будет готов обработать следующее нажатие для повторного включения светика.
Я так понял, это самое wait 10 тормозит реакцию на повторное нажатие на Button1.
Наверно тут неправильно будет использовать оператор wait в качестве задержки/паузы.
Но тогда возникает вопрос - Чем его можно заменить?
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Dnepr_1186, смотреть стр. 16 даташита. Я бы не мучился. Если все остальное работает, попробовал бы просто изменить значение той переменной.


KOTик, таймером организовать задержку. А если прерывание было, сбросить его(таймер) или остановить.
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

attyni2313 работа шим-насколько стабильно напряжение на выходе если сгладить его простой RC-цепью?думаю сделать блок фиксированных настроек на основе шим
Ответить

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