Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Простые програмки для начинающих


Простые програмки для начинающих

Сообщений 31 страница 58 из 58

31

К НАМ ЕДЕТ РЕВИЗОР!!!

Долго писать времени нет, поэтому по существу.
1. Форум для того, что бы спросить, получить ответ или поделится информацией с общественностью.
2. Колхоз - дело добровольное, никто никому ни за что и ничем здесь не платит, а значит и ни чем не должен.
3. Если кому-то что-то нравиться, пользуемся и благодарим. Можем улучшить - улучшаем и делимся с обществом.
Не хотим, не можем, не нравиться и т.д. - просто молча наблюдаем и не мешаем другим.
4. Если критикуем, то конструктивно, а не так, чтобы отбить всякое желание что либо выкладывать.
5. Имеем уважение друг к другу. Каждый из нас уникален, вместе мы - сила, а порознь - ?
6. Будьте мужчинами!

А теперь конкретно.

sasha_1973 в последнее время внёс большой вклад в развитие форума, и нам есть за что ему сказать спасибо.
Я всячески буду поддерживать его начинания, да и многие форумчане тоже.
Спорные вопросы можно решать друг с другом в личной переписке.

Для RDW.
Я могу открыть для вас целую тему с правами модератора, если вы желаете поделиться опытом с народом.

Для всех.
Кто будет вносить смуту на майдане, буду принимать кардинальные меры.

Удачи всем в творчестве!

0

32

RDW +1
Но кому как нравится. Для меня писать переменные на русском- глаза рябит, т.к. они компилятором выделяются красным.  А вот метки в программе, подпрограммы обзываю кириллицей, по той же причине. Легко искать. А переменные пишу транслейтом

sasha_1973 написал(а):

В споре рождается истина!

Где-ж она рождается, когда всё подчищаешь. Много интересного, и я некоторыми примерами пользовался, но с 1307 -реально вода. К чему? Не представляю даже как такой пример можно в код вставить.
На то он и Бейсик, на то он язык высокого уровня, что максимально интуитивно понятен. Что для новичка понятней, config portd=output или DDRD=255?
Сам, не давно, что бы отправить АЦП по байтно, полез в регистры, а потом плюнул, и оверлеям всё КРАСИВО и БЫСТРО сделал. За это и люблю Баском.

0

33

kip написал(а):

Сам, не давно, что бы отправить АЦП по байтно, полез в регистры, а потом плюнул, и оверлеям всё КРАСИВО и БЫСТРО сделал. За это и люблю Баском.

Мне интересно, можно примерчик? я, вот, вообще плюнул, так руки и опустились ((((. Заранее спасибо)

0

34

Да всё очень просто:

Код:
Dim TERM As Word
Dim Term_L As Byte At TERM Overlay
Dim Term_H As Byte At TERM + 1 Overlay

Т.е. для АЦП объявляете переменную TERM (и в неё 8-) измеряете.) А Term_L и Term_H,-это старший и младший байт переменной Term. Компилятор сам уже вытягивает. Их соответственно и отправляете. Подробнее Записать 16-ти битное число в два порта МК , там и ссылка на хелп

0

35

Или так:

  Dim Данные_ацп As Word
  Dim Сырые_данные_ацп(2) As Byte At Данные_ацп Overlay



  Сырые_данные_ацп(1) = Adcl
  Сырые_данные_ацп(2) = Adch

Получаете массивчик из двух переменных (Сырые_данные_ацп(2)) для отправки, или готовое значение в "Данные_ацп"

Примеры с симуляцией  - здесь

Отредактировано sasha_1973 (2014-01-21 08:35:25)

0

36

radan написал(а):

Для RDW.
Я могу открыть для вас целую тему с правами модератора, если вы желаете поделиться опытом с народом.

Спасибо, пока не нужно (на целый раздел материала может не набраться). Ибо отдельно заниматься разбором простых примеров - нет желания, а все проекты, что у меня были, весьма не просты. Да и сложно порой раз изложить весь алгоритм + видения вопроса у всех разное (тем более, что это всё может носить ещё коммерческое использование).

Есть у меня тут давно одна идея, даже некий интерес (из разряда "да не ужели нельзя - не верю"), думал сам разобраться, но что-то пока уперся в алгоритм. Касаемо алгоритмов, я обычно некоторые вещи вначале реализовываю в VB6 (те что современные и касаются современных протоколов), а затем пытаюсь на баском перетаскивать с учетом/оптимизации МК.
Так вот, тема/идея касается майнинга разных коинов (если кто знает, что это такое). Хотел оценить ресурсоёмкость алгоритма scrypt, чтобы его попытаться реализовать на МК.
Обсуждать это тут не буду (не та тема)..

Отредактировано RDW (2014-01-21 11:58:44)

0

37

kip Спасибо, понял. sasha_1973 Тоже Спасибо особо за симуляцию. 
Вот приятно, когда без бла-бла и по-человечески  8-)  - это я о вышесказанных дебатах и национальных шрифтах  :flirt:

0

38

А будете выступать- Александр будет писать переменные на рідній мові, і кому що не до вподоби, будуть сидіть з підручником з української мови та словником )) :crazyfun:

Отредактировано Skull (2014-01-22 01:53:13)

+1

39

Вполне понятно написано и переводится без всяких переводчиков и словарей. :)  :writing:

Перевод.

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

+2

40

Капец, а они сволочи (политиканишки), нас поделили. СЛАВЯНЕ ЛУЧШИЕ!!!

0

41

Пётр написал(а):

Вполне понятно написано и переводится без всяких переводчиков и словарей.

Перевод.
Александр будет писать переменные на родном языке и если кому-то что-то не нравится будут сидеть с учебником украинского языка и словарем. :crazy:

Отредактировано Skull (2014-01-22 15:32:14)

0

42

никто и не с чем сидеть не будет
будет просто бесполезно потрачено куча времени

0

43

RDW написал(а):

никто и не с чем сидеть не будет
будет просто бесполезно потрачено куча времени


Припечет- и не так раскорячишься ) В свое время курил инструкцию к упаковочной машине на китайском. Просто потому что больше было негде. А это самый пока большой русскоязычный форум по Баском.И часть инфы есть только тут .
Ну и насчет бесполезности- Не думаю, что Александр выкладывает тут материалы исключительно из бескорыстного человеколюбия, ночами кропая примеры страждущим. Он провел какую-то интересную для себя работу и поделился проторенным путем с местным сообществом. Т.Е. он УЖЕ даром время не потерял- ЕГО результат достигнут. А кто не хочет переводить\напрягаться\адаптировать под себя (нужное подчеркнуть) действительно будет даром терять время.
Поймите, что тот, кто  "не с чем сидеть не будет" с точки зрения независимого наблюдателя как раз и останется в убытке (знания не получил\конструкцию не сделал\......), поэтому  проблема так и останется при лентяе, что будет уже исключительно его житейскими трудностями. Вот ведь оно все, лежит, разжеванное, просто глотнуть надо самостоятельно.

Отредактировано Skull (2014-01-22 18:43:36)

+1

44

Мне понравился сам ход дискуссии. Прочтем тему друзья.  :crazyfun:

0

45

Тема - "Простые програмки для начинающих"  o.O

0

46

Ну, наверное , остается только попросить Василия ее почистить )

0

47

Моё мнение по поводу русских идентификаторов. Если ареал обитания программы - страны СНГ, то не имеет вообще смысла писать по-английски. Этим вы окажите медвежью услугу тем, кто будет писать документацию, руководство пользователя или обслуживающего персонала. Имел я дело, работая в металлургии инженером автоматчиком, с разными видами описания идентификаторов в программах для ПЛК. Так вот, для обслуживающего персонала английские аббревиатуры, как китайская грамота, а идут они прямо из текста программ. Зачем портить жизнь тем, кто будет работать с вашим устройством автоматизации?

Если же вы планируете использовать устройство по всему миру, то тогда имеет смысл озаботиться английским текстом программы.

Для обучения школьников, к примеру, я бы тоже выбрал русский язык. Главное ведь алгоритм и структура программы, данных, а остальное оформление могут сделать, когда освоят английский.

VB6, как и многие другие современные ЯВУ, вполне полноценно поддерживают unicode. Я писал на vb6 по-русски, мне понравилось: https://mysvn.ru/cop/Parser/CParser.cls

Это проект парсера математического выражения на бейсике. Упрощённый его вариант можно попробовать реализовать на мк, но в моём варианте используется глубокая рекурсия, а для этого нужно много ОЗУ.

+1

48

Многие знают о том,  что для замера Uvcc МК нет необходимости городить делитель напряжения на ногу АЦП (а особенно когда их не хватает), а можно замерить внутренний опорник относительно Avcc. К примеру для Меги48\88\168\328 будет выглядеть так:

Код:
 Config Adc = Single , Prescaler = Auto , Reference = Avcc       'конфигурация АЦП
w=Getadc(14)

Расчитываем по формуле Uavcc = 1.1*1024/ADC
Но на Тини13 такого режима нет.
Делал сегодня автономный термометр (датчик аналоговый) на Тини13, и очень хотелось знать напряжение батареи
Придумал так.
Измеряем АЦП с датчика в двух режимах: Опорка Internal, и опорка Avcc.  Далее вычисляем по формуле Uavcc = АDCint*1024/ADCavcc.
Точность показаний для автономного устройства отличная!

Отредактировано kip (2014-01-22 23:57:34)

0

49

Всем привет. Хочу на ATTINY2313 генерить 36кгц. Но ничего не работает. Подскажите в чем ошибка? Проверяю в протеусе. Но осциллограф молчит... Да и portd.5 почему то имеет высокий уровень. О_О

$regfile = "attiny2313.dat"
$Crystal=8000000
$hwstack=40
$swstack=16
$framesize=32

Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle

Compare1a = 111

'PortB.3 - выход

Config Pinb.3 = Output

Start Timer1

0

50

Atmel написал(а):

Хочу на ATTINY2313 генерить 36кгц. Но ничего не работает. Подскажите в чем ошибка?

Ссылка по теме  -  схема, исходник (Bascom), симуляция (Proteus), плата.

Отредактировано sasha_1973 (2014-05-31 16:24:23)

0

51

Pasha
Добрый день,помогите написать прогу на любой контроллер для управления 3-х  фазным двигателем,если возможно с регулированием оборотов переменым резистором! Спасибо!

0

52

Начинающие внимание!
https://yadi.sk/d/eD-w6eCRk9ejM
Я много сидел и разбирался с баскомом, ваял всякие платки регуляторы и часики. Накопилось много исходников. Какие-то из них рабочие например пульт LG термостат на холодильник, шим, Температура с вы18b20 в UART, Паганини, Намотка вело одометра, компаратор, зажигание портов через UART, Генератор 4 мгц, sin, I2C CLOCK + ALARM, clock, 56 светодиодов на порт.... какие-то нет. Но в многих программках есть неплохое описание. Так что пользуйтесь на здоровье
+ привожу список интересных команд, которые я для себя составлял:

Код:
Ddrb = &B11111111                           ' тут назначаем лапы порта на ввод
Portb = 255                                                 '255 тут включаем подягивающие резисторы
Ddrd = &B11111111
Portd = 255                                                 '255

Dim V As Eram Byte : V = 10                          ' задаем переменную которая будет сохранятся при каждом изменении в энергонезависимую память, нельзя ее использовать в циклах.

Portb = Bits(0 , 1 , 2 , 3 , 4 , 5 , 7) 'portb =1111101

Bitwait Pinb.7 , Reset                                      ' останавливаемся на этом месте пока на пине не будет лог 0

*****************************************************
$regfile = "m48def.dat"                                     ' оформление подпрограммы
$crystal = 8000000                                          ' used crystal frequency
Dim A As Byte , B As Byte
Declare Sub Test(b As Byte , Byval B2 As Byte)              'declare the SUB program
A = 65                                                      'assign a value to variable A
B = 8
Test A , B                                                  'alternative call
Print A                                                     '1                                                    'now print the new value
Print B                                                     '2
End

Sub Test(b As Byte , Byval B2 As Byte)                      'use the same variable names as 'the declared one
B = 1                                                       'reassign the variable
B2 = 2                                                      'reassign the variable
End Sub

*******************************************************
Select Case I                                                 ' в зависимости от значения переменной выбираем действие что-то типа иф зэн....
   Case 1 : Print "1"
   Case 2 : Print "2"
   Case 3 To 5 : Print "3-5"
   Case Is >= 10 : Print ">= 10"
   Case Else : Print "Not in Case statement"
End Select
********************************************************
Dim X As Single
X = 21.123456
Print X                                                     '21.123456
Print Frac(x)                                               '0.123456
End
********************************************************
Search = 3
Entries = 5
Idx = Lookdown(search , Label , Entries)                    ' ищем порядковый номер числа 3 начиная с пятой ячейки таблици
Label:
Data 1 , 2 , 3 , 4 , 5
********************************************************
Dim Wb As Byte , B As Byte
Dim W(10) As Word                                           ' or use a BYTE array
For B = 1 To 10
W(b) = B
Next
Print "Max number " ; Max(w(1))
Print "Min number " ; Min(w(1))
Dim Idx As Word , M1 As Word
Min(w(1) , M1 , Idx)
Print "Min number " ; M1 ; " index " ; Idx
Max(w(1) , M1 , Idx)
Print "Max number " ; M1 ; " index " ; Idx
End
*****************************************************

Отредактировано Pasha (2016-02-01 12:36:28)

+1

53

Pasha написал(а):

А главная новость - я скоро стану папой


Мои поздравления!

0

54

Энкодер.
Нигде на форуме не нашел:
снимаем информацию с энкодерера по прерыванию Init0

Код:
$regfile = "m88def.dat"                     
$crystal = 8000000                         
dim x as byte
Config Int0 = Falling : On Int0 Encod : Enable Int0 : Enable Interrupts      ' настраиваем внешнее прерывание на ноге PD.2 куда подключена одна лапа
Encod:
Waitms 2                                                    'ждем пока утихнет дребезг контактов энкодера
If Pind.3 = 1 Then : Incr x : Else : Decr x : End If       ' обрабатываем направление энкодера на PD.3, куда подключена вторая лапа. Третья лапа сидит на земле.
Return

есть еще реализация bascoma найдете в справке по запросу "encoder"

0

55

Pasha написал(а):

Waitms 2                                                    'ждем пока утихнет дребезг контактов энкодера

1) Останавливаться в прерывании, крайне не желательно
2) Антидребезг лучше гасить аппаратно
3) Через пару дней эксплуатации, 2 ms будет мало, через месяц эксплуатации и 20 ms, будет мало

0

56

2) да и программно можно, но задержка в прерывании - жуть

0

57

Pasha написал(а):

If Pind.3 = 1 Then : Incr x : Else : Decr x : End If

А можно ли сделать что-бы увеличение или уменьшение было не на единицу,
а на большее значение например 5 или 10?

0

58

Adagumer написал(а):

А можно ли сделать что-бы увеличение или уменьшение было не на единицу,
а на большее значение например 5 или 10?

If Pind.3 = 1 Then
x=x+5
Else
x=x-5
End If

+1


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Простые програмки для начинающих