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

Обсуждаем контроллеры компании Atmel.
Radan
Мучитель микросхем
Сообщения: 465
Зарегистрирован: Ср июн 21, 2006 08:24:32
Откуда: Лисичанск
Контактная информация:

Re:

Сообщение Radan »

Gryphon писал(а):Здравствуйте дорогие форумчане!
Меня интересуют следующие ворпросы по BASCOM-AVR:
6. Можно-ли в BASCOM сделать подключение AVR c PC по USB (без преобразователей)

http://bascomavr.3bb.ru/viewtopic.php?id=254
http://bascom.at.ua/publ/usb_termometr_ ... 8/1-1-0-30
dhouse
Встал на лапы
Сообщения: 84
Зарегистрирован: Пт апр 16, 2010 12:30:03

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

Сообщение dhouse »

Подскажите "чайнику", можно ли в BASCOM обратиться к порту не явно (PORTB.2=...), а по переменной (PORTB.X=...)?
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

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

dhouse писал(а):можно ли в BASCOM обратиться к порту не явно ...

можно , например вот так.
Вложения
ALIAS.rar
(252 байт) 307 скачиваний
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

Можно-то можно, вот очень жаль что алиасы нельзя адресовать подобным способом, например:

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

a(1) Alias PORTB.1
a(2) Alias PORTD.2
a(3) Alias PORTC.3

For i=1 To 3
Set a(i)
Next i

Вот это было бы очень ценно.
Даже остановленные часы два раза в сутки показывают правильное время.
dhouse
Встал на лапы
Сообщения: 84
Зарегистрирован: Пт апр 16, 2010 12:30:03

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

Сообщение dhouse »

Спасибо Dimon-790 и Секретному коту за ответ. Я как раз имел в виду вариант Секретного кота, чтобы обращаться к портам, как к переменным. Жаль, что так сделать нельзя, придется городить CASE-ми и IF-ами...
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

dhouse писал(а):придется городить CASE-ми и IF-ами...

А мне приходится циклы "разворачивать" из-за того, что например массив нагрузок оказался разбросанным по разным портам :(

P.S. Оказывается, с этой проблемой многие уже сталкивались:
http://mcselec.com/index2.php?option=co ... pic&t=4041
http://mcselec.com/index2.php?option=co ... pic&t=2462
http://mcselec.com/index2.php?option=co ... pic&t=7481
Последняя ссылка любопытна тем, что автор утверждает, что такой вариант адресации якобы работал в версиях до 1.11.9.4.
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
Intel_agent
Родился
Сообщения: 18
Зарегистрирован: Вс апр 18, 2010 16:43:08
Откуда: Улан-Удэ

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

Сообщение Intel_agent »

Всем привет, требуется помощь в коде bascom'a, mega8 такт 4 мега
требуется создать три таймера с временными интервалами 10, 30 и 3 минут(ы) соответственно, запуск которых производится последовательно после отработки каждого, но запуск первого возможен только при получении высокого уровны по входу INT0
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

Intel_agent писал(а):Всем привет, требуется помощь в коде bascom'a

А сам код-то чего забыли прицепить :)))
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
Intel_agent
Родился
Сообщения: 18
Зарегистрирован: Вс апр 18, 2010 16:43:08
Откуда: Улан-Удэ

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

Сообщение Intel_agent »

Так в том-то и проблема, что не могу никак разобраться как реализовать такие временные промежутки
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

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

Wait сколько_нужно_секунд

Например, 30 минут это Wait 1800.
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
ВНН
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Сб дек 13, 2008 09:03:43
Откуда: г.Советская Гавань

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

Сообщение ВНН »

Если делать тупо то
Обработка int
Запретить прерывание
for i=0 to 10
wait 60
next i
чото делаеш

for i=0 to 30
wait 60
next i


for i=0 to 3
wait 60
next i
чото делаеш

разрешить прерывание

Но лучше все делать по таймеру
Я тоже белый и пушистый и также как и Вы ловлю мышей.
С уважением ВНН.
dhouse
Встал на лапы
Сообщения: 84
Зарегистрирован: Пт апр 16, 2010 12:30:03

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

Сообщение dhouse »

Знатоки BASCOM! Просмотрите, пожалуйста, мой ПЕРВЫЙ В ЖИЗНИ код на микроконтроллер (ATTINY2313) и укажите на принципиальные ошибки. Проект банальный: часы. Порт В - на сегменты индикатора, порт d - на включения общего на индикаторе (через КТ315) и опрос 2-х кнопок. С настройками таймера не заморачивался, хотел просто понять логику работы...

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

$regfile = "AtTiny2313.dat"
$crystal = 1000000
Config Timer0 = Timer , Prescale = 1
Declare Sub My_led
Dim H As Byte , M As Byte , S As Byte
Dim T(4) As Byte                                         
Dim Ncount As Word                                         
Dim Q As Byte
Dim Tmp As Byte

Ncount = 0
H = 9
M = 55
S = 0

Config Portb = Output
Config Portd = Output
Config Pind.0 = Input
Config Pind.1 = Input
Config Debounce = 200
Set Pind.0
Pind.0 = 1
Set Pind.1
Pind.1 = 1

On Timer0 Pulse
Enable Interrupts
Enable Timer0

'************
Do
Debounce Pind.0 , 0 , H_ed , Sub
Debounce Pind.1 , 0 , M_ed , Sub
   T(1) = H \ 10                                           
   T(2) = H Mod 10                                         
   T(3) = M \ 10                                           
   T(4) = M Mod 10                                       
  Call My_led
Loop
End                                                         'end program

'************************
Sub My_led                                               

 For Q = 1 To 4
   Select Case T(q)                                       
     Case 1 : Portb = &B11111001
     Case 2 : Portb = &B10100100
     Case 3 : Portb = &B10110000
     Case 4 : Portb = &B10011001
     Case 5 : Portb = &B10010010
     Case 6 : Portb = &B10000010
     Case 7 : Portb = &B11111000
     Case 8 : Portb = &B10000000
     Case 9 : Portb = &B10010000
     Case 0 : Portb = &B11000000
  End Select

 Select Case Q                                             
   Case 1 : If T(1) <> 0 Then                               
               Set Portd.2
               Waitms 10
               Reset Portd.2
             End If

   Case 2 : Tmp = S Mod 2
             If Tmp = 0 Then Portb.7 = 0
             Set Portd.3
             Waitms 10
             Reset Portd.3

   Case 3 : Set Portd.4
            Waitms 10
             Reset Portd.4

   Case 4 : Set Portd.5
            Waitms 10
             Reset Portd.5
 End Select

Next Q
End Sub
'************************
Pulse:                                                     
Ncount = Ncount + 1
  If Ncount => 31250 Then
    Ncount = 0
    S = S + 1
  End If

  If S > 59 Then
    S = 0
    M = M + 1
  End If

  If M > 59 Then
  M = 0
  H = H + 1
  If H > 23 Then H = 0
  End If

Return
'************************
H_ed:
 Waitms 100                                               
 H = H + 1
 If H > 23 Then H = 0
Return
'************************
M_ed:                                                       
 Waitms 100
 M = M + 1
 If M > 59 Then M = 0
Return
Последний раз редактировалось dhouse Вт апр 20, 2010 13:56:02, всего редактировалось 1 раз.
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

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

Сообщение max50 »

На 8-ой странице есть пример и схема на тане2313 и LCD. http://radiokot.ru/forum/viewtopic.php?f=20&t=6408&start=140
При желании можно переделать на светодиодный индикатор.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
dhouse
Встал на лапы
Сообщения: 84
Зарегистрирован: Пт апр 16, 2010 12:30:03

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

Сообщение dhouse »

Спасибо за ссылку. Но хочется написать самому, а не передрать чужое. Простые часы - неплохой проект для начала освоения МК (мигалки слишком просто). Если выйдет, попробую сделать простейший велоспидометр. Кстати, попутно вопрос знатокам: если на пин порта цепляется не кнопка, а питание +5 через геркон (подсчет замыканий) то:
1. Нужно установить на пине логический 0?
2. Подсчитывать количество появлений логической единицы за определенный интервал времени?
3. Пересчитать в скорость?
Аватара пользователя
Intel_agent
Родился
Сообщения: 18
Зарегистрирован: Вс апр 18, 2010 16:43:08
Откуда: Улан-Удэ

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

Сообщение Intel_agent »

Секретный кот писал(а):

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

Wait сколько_нужно_секунд

Например, 30 минут это Wait 1800.

Да, это супер просто, НО, если не ошибаюсь при данном типе отсчета, все остальные действия по обработке будут выполняться только после окончания отсчета...
ВНН писал(а):Если делать тупо то
Обработка int
Запретить прерывание
for i=0 to 10
wait 60
next i
чото делаеш
...
разрешить прерывание

Но лучше все делать по таймеру

Тупо конечно тоже хорошо, но все-же большое желание сделать по таймеру, а то мало-ли...
Аватара пользователя
ВНН
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Сб дек 13, 2008 09:03:43
Откуда: г.Советская Гавань

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

Сообщение ВНН »

Правильно мыслиш , а то мало-ли..., а то мало-ли...
Работа с прерываниями http://www.decada.org.ru/project/lesson ... /index.php
Я тоже белый и пушистый и также как и Вы ловлю мышей.
С уважением ВНН.
Аватара пользователя
Intel_agent
Родился
Сообщения: 18
Зарегистрирован: Вс апр 18, 2010 16:43:08
Откуда: Улан-Удэ

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

Сообщение Intel_agent »

Спасибо! Хороший учебничек, слегка пробежался, понятно написано даже для таких новичков как я :))
Ушел изучать 8)
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

ВНН писал(а):Если делать тупо то
Обработка int
Запретить прерывание
for i=0 to 10
wait 60
next i

И чем это лучше чем просто wait 600? :))
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
ВНН
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Сб дек 13, 2008 09:03:43
Откуда: г.Советская Гавань

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

Сообщение ВНН »

Ничем , только более читаемо и при изменение параметров задержки не нужно считать 60*min и все
Я тоже белый и пушистый и также как и Вы ловлю мышей.
С уважением ВНН.
dhouse
Встал на лапы
Сообщения: 84
Зарегистрирован: Пт апр 16, 2010 12:30:03

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

Сообщение dhouse »

Вопрос по оператору $crystal в BASCOM. Написал свою программу часов для Attiny2313 без кварца. Во фьюзах отключил деление частоты на 8 (внутренняя частота вышла 8 MGz). Переполнение таймера выставил именно на эту частоту. Но если в программе ставлю $crystal=8000000, то при динамической индикации четко заметно мигание индикаторов. При установке меньшей величины, вплоть до $crystal=1000000 мигание совершенно не заметно. При этом на ход часов этот параметр не повлиял. Так что же делает оператор $crystal?
Ответить

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