Страница 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
Секретный кот
Например, 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
Секретный кот писал(а):
Например, 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
Спасибо! Хороший учебничек, слегка пробежался, понятно написано даже для таких новичков как я
Ушел изучать

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?