purebasic.info

PureBasic forum
Текущее время: Пн дек 10, 2018 2:07 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Чт авг 10, 2017 10:55 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11335
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
У меня есть, только ею не пользуюсь как ардуиной. Что не получается?

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

Они поддерживают отладку примерно как у PB. :)

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Чт авг 10, 2017 2:38 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2293
Откуда: Russia — Belarus
Благодарил (а): 7 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Уже разобрался, точнее разочаровался.
Дабы сделать из Arduino USB UART, я замкнул RESET на землю, как описано в этой теме:
http://cyber-place.ru/showthread.php?t=582
Но это не работает, долго не мог понять почему, оказалось, что дело в "китайской" ардуине (Arduino UNO R3 с CH340G за место FTDI), основываясь на это сообщение в той же теме:
http://cyber-place.ru/showpost.php?p=18004&postcount=30
Цитата:
Есть китайский клон Arduino Nano V3 с CH340 вместо FTDI . Там такое в-лоб не проканывает.
Причина: по RX и TX впаяны резисторы 1Ком.
Решение простое - убрать их и поставить перемычки.

А как "закоротить резисторы" я хз.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Чт авг 10, 2017 2:53 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11335
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
qpAHToMAS писал(а):
Arduino UNO R3 с CH340G
Схема https://arduino-kit.ru/catalog/id/arduino-uno-r3-ch340

Закоротить нужно R8 и R9 (не между собой, а сами резисторы чтобы исключить их из схемы).

qpAHToMAS писал(а):
А как "закоротить резисторы" я хз.
Паяльник есть?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Чт авг 10, 2017 4:11 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2293
Откуда: Russia — Belarus
Благодарил (а): 7 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Да, паяльник имеется.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Чт авг 10, 2017 4:29 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11335
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
Тогда нужно взять два кусочка провода и замкнуть ними резисторы.

Разве не нашлось других конвертеров USB UART? Например такого.

Изображение

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Чт авг 10, 2017 5:31 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2293
Откуда: Russia — Belarus
Благодарил (а): 7 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Блин, они слишком мелкие, боюсь запороть.

Цитата:
Разве не нашлось других конвертеров USB UART? Например такого.

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

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Чт авг 10, 2017 11:55 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 667
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
Поверх него облуженный в канифоли проводок(тонкую жилку) тык и всё.(приложил тыкнул паяльником и подул,лишнее отрезал) :D
Паяльник типа с фикспрайта маломощный с острым жалом(маленький контакт разогрева) :roll:
PS:Тренировку на ненужных платах некто не отменял :mrgreen:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Пт авг 11, 2017 11:56 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2293
Откуда: Russia — Belarus
Благодарил (а): 7 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Всем спасибо, получилось :). Использовал проводок от витой пары.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Сб авг 12, 2017 1:33 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 667
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
Вопрос:может кто знает как наладить связь с компом, для ввода клавиатурных данных.
Есть у меня станочек для гравировки,заниматься им некогда пока,но с клавиатуры двигать по координатам не совсем удобно(хотя проблем вроде нет)пульт покупать не хочется так как на нём пока нечего не делаю и несколько деталек могу и так сделать,но всё же хочется его восстановить к заводскому уровню :D ,там для хода координат на панели переключатели трёх позиционные(типа в серёдке отключен а по бокам включается ход по координатам к примеру:x+,x-)
:roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Вс май 27, 2018 10:22 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Ср май 18, 2016 11:52 pm
Сообщений: 39
Откуда: Нижегородская обл.
Благодарил (а): 18 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Поделюсь с вами: https://www.youtube.com/watch?v=Yr5E7heRYls

Кратко:
Микроконтроллер Atmega328p, программу писал в Bascom-AVR.
Передача данных по RS-485.
Сделано просто, контроллер всегда отвечает одним пакетом, который содержит всю нужную информацию, первый байт ID, дальше данные и последний контрольная сумма. Контрольная сумма простая, 8 битовая переменная прибавляет в себя каждый отправленный байт. Если при приёме первый байт не совпал с ID то не принимается, если получили 28 байт и последний совпал как контрольная сумма, то всё в порядке.
Программа на ПК отправляет 4 байта, первый байт ID, второй адрес ячейки, третий данные и четвёртый контрольная сумма, таким образом микроконтроллер не так завалится в прерываниях по UART, а ПК легко сможет обработать длинные пакеты.

Программу написал за неделю, параллельно и изучал PureBasic, язык просто великолепен!
График рисовал стандартными операторами в ImageGadget, как и часть текста.
Вообщем проект скорей не коммерческий, а если будет прибыль, я в очереди за покупкой компилятора :wink:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Вс май 27, 2018 10:41 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11335
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
Ev3658 писал(а):
Контрольная сумма простая, 8 битовая переменная прибавляет в себя каждый отправленный байт.
Можно было вычислять CRC8. https://avrhelp.mcselec.com/crc8.htm
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Structure Buff
  Byte.a[0]
EndStructure
 
Procedure.a CRC8(*Buff.Buff, Count)
  Protected CRC.a, Byte.a, i, x
 
  If *Buff And Count>0
   
    Count-1
    For i=0 To Count
      Byte=*Buff\Byte[i]
      For x=1 To 8
        If (Byte ! CRC) & 1
          CRC = ((CRC!$18)>>1)|$80
        Else
          CRC >> 1
        EndIf
        Byte>>1
      Next x
    Next i
   
  EndIf
 
  ProcedureReturn CRC
EndProcedure



Ev3658 писал(а):
График рисовал стандартными операторами в ImageGadget, как и часть текста.
Возможно в CanvasGadget было бы немного проще.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Пн май 28, 2018 9:22 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Ср май 18, 2016 11:52 pm
Сообщений: 39
Откуда: Нижегородская обл.
Благодарил (а): 18 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
...Можно было вычислять CRC8. https://avrhelp.mcselec.com/crc8.htm
...
.


Не, не проще, вот такое у меня прерывание по приёму UART в Atmega:

Код:
1
2
3
4
5
6
Rx485:
  B = Inkey()
   Incr Rxtm
   Rx(rxtm) = B
   If Rxtm = 1 And B <> Id Then Rxtm = 0
Return



Дальше в программе сигнализирую о приёме первого байта и быстренько отключаю прерывание UART, забираю данные и опять в приём:

Код:
1
2
3
4
5
6
7
8
9
Если есть приём:
......If Rx(1) = Id Then
          Disable Urxc
       Takt = 0
       Crc = Rx(1)
       Crc = Crc + Rx(2)
       Crc = Crc + Rx(3)
       If Rx(4) = Crc Then
.......



Так даже можно сделать двойной буфер.

В PureBasic отправка тоже простая:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
....
While AvailableSerialPortInput(1) ;Подготавливаем приём данных
        ReadSerialPortData(1, @Buff, 1)
      Wend
      rxtm=0
   b=id:crctx=b: WriteSerialPortData(1,@b,1);1
   b=releonoff:crctx+b: WriteSerialPortData(1,@b,1);2
   b=onoff:crctx+b: WriteSerialPortData(1,@b,1);3
   WriteSerialPortData(1,@crctx,1);14
   cmd=1 ; Указываем, что отослалась команда и обязательно надо чего нибудь принять чтоб её сбросить, если не приняли, то через 0,7сек повторяем отправку пакета
.....
 



Приём в несколько этапов:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
If AvailableSerialPortInput(1)
        While AvailableSerialPortInput(1)
            ReadSerialPortData(1, @Buff, 1)
            If rxtm<28
              rxtm+1
              rx(rxtm)=buff
            EndIf
 
            If rx(1)<>id
                  rxtm=0
                  priem=0
                  rx(1)=0
                ElseIf rxtm=1
                  priem=1
            EndIf
          Wend
 EndIf
 
If priem=1 And rxtm=28
                    crc=0
                    For p=1 To 27
                      crc=crc+rx(p)
                    Next p
                If rxtm=28 And crc=rx(28)
                    rx_tm+1
                    Gosub priemrx:
                   priem=2
                    rxtm=0
                    popitka=0
                  Else
                        rxtm=0
                        priem=0
                        rx(1)=0
                  EndIf
 EndIf
 
В Priem=2 раскладываю принятые данные, делаю расчёты, вывожу на экран и т.п.



Конечно есть вероятность ошибки такого расчёта контрольной суммы, но она мала, тут ID играет роль и сумма байтов вместе.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Вт май 29, 2018 4:57 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Ср май 18, 2016 11:52 pm
Сообщений: 39
Откуда: Нижегородская обл.
Благодарил (а): 18 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Ой... ой....ой меня понесло, это супер пупер язык программирования!!!!! Даже не зная всего, благодаря вашему форуму и старой переведённой HELP справки за 2 часа сделал онлайн мониторинг, причём отправка через GPRS не тормозит программу, картинка секунд 15-20 грузится.
Эх...ещё бы от окон перейти к полноэкранным приложениям!
Ах, да, вот, сегодня ночью запуск, печь разжигают и я весь в предвкушении, может вообще всё рухнет и сдохнет - http://radiokstovo.ru/ksd.php


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Вт май 29, 2018 5:11 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11335
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
Ev3658 писал(а):
причём отправка через GPRS
Там где работает программа, нет интернета?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование МК
СообщениеДобавлено: Вт май 29, 2018 10:05 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Ср май 18, 2016 11:52 pm
Сообщений: 39
Откуда: Нижегородская обл.
Благодарил (а): 18 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Там где работает программа, нет интернета?

В основном GPRS и иногда EDGE радует, Beeline модем был под рукой, а он плохо ловит, лучше чем ничего.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB