roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 15:36

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




Начать новую тему Ответить на тему  [ Сообщений: 63 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 15:57 
Не в сети

Зарегистрирован: 28 сен 2009, 15:35
Сообщения: 38
Откуда: Москва
Возникла проблема.В программе на bascom организация задержки в 1 секунду дает отставание от реального времени.Использовался оператор wait и waitms.
Может какая-то вставка на asm поможет или настройка таймера?
Как сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 16:10 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Выяснить почему отстает и исправить. Возможно коэффициентом а более точно операторами NOP. Если отсавание в разы или очень значительно, то наверно с частотой такта путаница.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 16:42 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Выложи код пожалуйста

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 18:54 
Не в сети

Зарегистрирован: 28 сен 2009, 15:35
Сообщения: 38
Откуда: Москва
я делаю задержку waitms 1000.
написанием на asm не владею.
это программа часов. кривая, но рабочая.
Код:
$regfile = "m16def.dat"
$crystal = 8000000                                         
$lib "lcd4.lib"
'$lib "mcsbyte.lbx"                                         
'Config Rc5 = Pind.2
'Enable Interrupts                                           
Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.2 , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7
Config Lcd = 16 * 2
Dim H1 As Integer
Dim H2 As Integer
Dim M1 As Integer
Dim M2 As Integer
Dim S1 As Integer
Dim S2 As Integer
Dim B As Integer
Dim Ndat As Byte
Clockzero:
Let S1 = 0
Let S2 = 0
Let H1 = 0
Let H2 = 0
Let M1 = 0
Let M2 = 0
Let M1 = 0
Let M2 = 0


Cls
Locate 2 , 1
Lcd "Hour:"
Locate 2 , 8
Lcd "Min:"
Locate 2 , 13
Lcd "Sec:"
Do
Seconds:
If S1 = 6 Then M2 = M2 + 1
If S1 = 6 Then S1 = 0
Locate 1 , 13
Lcd S1
If S2 = 10 Then S2 = 0
Locate 1 , 14
Lcd S2
Minutes:
Locate 1 , 8
Lcd M1
If M2 = 10 Then M1 = M1 + 1
If M2 = 10 Then M2 = 0
If M1 = 6 Then H2 = H2 + 1
If M1 = 6 Then M1 = 0
Locate 1 , 9
Lcd M2
Houres:
If H1 = 6 Then Goto Clockzero
Locate 1 , 1
Lcd H1
If H2 = 10 Then H1 = H1 + 1
If H2 = 10 Then H2 = 0
Locate 1 , 2
Lcd H2
S2 = S2 + 1
If S2 = 10 Then S1 = S1 + 1
Waitms  1000
Loop


в тексте указан внутренний кварц, но на самом деле уже сделал внешний 8.000 мгц.
как указывать внешний я не знаю.


Последний раз редактировалось Vooon 30 сен 2009, 19:21, всего редактировалось 2 раз(а).
CODE!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 19:01 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Чтобы не заблуждаться про внутренние кварцы советую почитать - Устройство микроконтроллера AVR - http://avr123.nm.ru/02.htm - возможно вы станете более осознано подходить к программированию AVR зная больше о его устройстве.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 19:33 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
И вообще - делать часы на задержках - гнилая затея, точно идти не будут. Часы надо делать на таймере. Не обязательно на часовом кварце, можно на основном - но на таймере. Даже можно без прерываний, если не хочется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 19:35 
Не в сети

Зарегистрирован: 28 сен 2009, 15:35
Сообщения: 38
Откуда: Москва
а как например написать на asm задержку по таймеру на 1 секунду, чтобы ее всавить в качестве паузы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 20:49 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Если ты ее вгонишь также в цикл - точное время так и не получишь - делай на таймере

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 20:55 
Не в сети

Зарегистрирован: 28 сен 2009, 15:35
Сообщения: 38
Откуда: Москва
а в этом бейсике есть таймер именно бейсиковский чтобы никаких кодов не дописывать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 20:57 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
что значит бейсиковский таймер? Есть таймеры у МК timer0, timer1 иногда timer2...

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 21:11 
Не в сети

Зарегистрирован: 28 сен 2009, 15:35
Сообщения: 38
Откуда: Москва
ну а бейсик работает своими средстивами с этими таймерами, не выходя за рамки бейсика?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 21:29 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Zoom писал(а):
а как например написать на asm задержку по таймеру на 1 секунду, чтобы ее всавить в качестве паузы?
Как вариант - пишите в любом из примеров CVAVR строку delay_ms(1000); подключаете delay.h ? компилите и смотрите АСМ код в файле листинга.

Так же можно узнать как сделать на АСМ-е другие функции и задачи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 30 сен 2009, 21:54 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
имхо некоторые вещи могут быть сделаны через опу... мб я и ошибаюсь...

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 01 окт 2009, 08:50 
Не в сети
Аватара пользователя

Зарегистрирован: 28 дек 2004, 20:33
Сообщения: 10211
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович
а на сколько врет-то?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как организовать задержку на секунду в Bascom?Wait(ms) врёт
СообщениеДобавлено: 01 окт 2009, 10:29 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Когда я по такой же конструкции делал - врал в минуту на несколько секунд

_________________
if(!Operate) Read(pDatasheet);


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

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


Кто сейчас на конференции

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


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO