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

Re:

Добавлено: Пт апр 16, 2010 08:41:02
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

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

Добавлено: Пт апр 16, 2010 13:17:09
dhouse
Подскажите "чайнику", можно ли в BASCOM обратиться к порту не явно (PORTB.2=...), а по переменной (PORTB.X=...)?

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

Добавлено: Пт апр 16, 2010 13:50:10
dimon-790
dhouse писал(а):можно ли в BASCOM обратиться к порту не явно ...
можно , например вот так.

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

Добавлено: Пт апр 16, 2010 14:51:13
Секретный кот
Можно-то можно, вот очень жаль что алиасы нельзя адресовать подобным способом, например:

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

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
Вот это было бы очень ценно.

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

Добавлено: Пт апр 16, 2010 23:00:30
dhouse
Спасибо Dimon-790 и Секретному коту за ответ. Я как раз имел в виду вариант Секретного кота, чтобы обращаться к портам, как к переменным. Жаль, что так сделать нельзя, придется городить CASE-ми и IF-ами...

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

Добавлено: Сб апр 17, 2010 12:05:42
Секретный кот
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.

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

Добавлено: Вс апр 18, 2010 16:50:34
Intel_agent
Всем привет, требуется помощь в коде bascom'a, mega8 такт 4 мега
требуется создать три таймера с временными интервалами 10, 30 и 3 минут(ы) соответственно, запуск которых производится последовательно после отработки каждого, но запуск первого возможен только при получении высокого уровны по входу INT0

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

Добавлено: Вс апр 18, 2010 20:45:36
Секретный кот
Intel_agent писал(а):Всем привет, требуется помощь в коде bascom'a
А сам код-то чего забыли прицепить :)))

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

Добавлено: Пн апр 19, 2010 00:35:45
Intel_agent
Так в том-то и проблема, что не могу никак разобраться как реализовать такие временные промежутки

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

Добавлено: Пн апр 19, 2010 02:02:02
Секретный кот

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

Wait сколько_нужно_секунд
Например, 30 минут это Wait 1800.

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

Добавлено: Пн апр 19, 2010 09:54:29
ВНН
Если делать тупо то
Обработка 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
чото делаеш

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

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

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

Добавлено: Пн апр 19, 2010 10:35:06
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

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

Добавлено: Пн апр 19, 2010 11:06:58
max50
На 8-ой странице есть пример и схема на тане2313 и LCD. http://radiokot.ru/forum/viewtopic.php? ... &start=140
При желании можно переделать на светодиодный индикатор.

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

Добавлено: Пн апр 19, 2010 12:39:57
dhouse
Спасибо за ссылку. Но хочется написать самому, а не передрать чужое. Простые часы - неплохой проект для начала освоения МК (мигалки слишком просто). Если выйдет, попробую сделать простейший велоспидометр. Кстати, попутно вопрос знатокам: если на пин порта цепляется не кнопка, а питание +5 через геркон (подсчет замыканий) то:
1. Нужно установить на пине логический 0?
2. Подсчитывать количество появлений логической единицы за определенный интервал времени?
3. Пересчитать в скорость?

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

Добавлено: Пн апр 19, 2010 13:09:07
Intel_agent
Секретный кот писал(а):

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

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

Но лучше все делать по таймеру
Тупо конечно тоже хорошо, но все-же большое желание сделать по таймеру, а то мало-ли...

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

Добавлено: Пн апр 19, 2010 13:51:22
ВНН
Правильно мыслиш , а то мало-ли..., а то мало-ли...
Работа с прерываниями http://www.decada.org.ru/project/lesson ... /index.php

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

Добавлено: Пн апр 19, 2010 15:23:43
Intel_agent
Спасибо! Хороший учебничек, слегка пробежался, понятно написано даже для таких новичков как я :))
Ушел изучать 8)

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

Добавлено: Пн апр 19, 2010 19:35:42
Секретный кот
ВНН писал(а):Если делать тупо то
Обработка int
Запретить прерывание
for i=0 to 10
wait 60
next i
И чем это лучше чем просто wait 600? :))

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

Добавлено: Вт апр 20, 2010 03:26:37
ВНН
Ничем , только более читаемо и при изменение параметров задержки не нужно считать 60*min и все

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

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