Вопросы по программированию в Bascom AVR
|
|
sasha | Дата: Вторник, 08.12.2009, 13:19 | Сообщение # 31 |
Язык программированя: Си и баском(учусь)
Зарегистрирован 16.02.2009
Группа: Новички
Сообщений: 371
Город: Актюбинск
Статус: Offline
| да) что именно не поняли?
-=Наша_зависимость_от_роботов_возрастает_с_каждым_днем=-
|
|
| |
pashteet | Дата: Вторник, 08.12.2009, 22:31 | Сообщение # 32 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| немогу разобраться в коде, вы бы хоть порты обозвали как-нибудь, а то все время путается в глазах
|
|
| |
sasha | Дата: Пятница, 11.12.2009, 11:39 | Сообщение # 33 |
Язык программированя: Си и баском(учусь)
Зарегистрирован 16.02.2009
Группа: Новички
Сообщений: 371
Город: Актюбинск
Статус: Offline
| ну я ж напсал описание каждого порта... Добавлено (11.12.2009, 11:15) --------------------------------------------- вот начал изучить прерывание... прочитал здесь http://avr.easycoding.org/projects/bascom_lessons/ ... и написал прмерчик для меги 8 прерывание Code $regfile = "m8def.dat" $crystal = 16000000
Config Portd.0 = Output Config Portd.1 = Output Config Portd.2 = Output Config Pind.3 = Input Config Int0 = Falling
On Int0 Stopbutton
Enable Interrupts Enable Int0
Do Portd.0 = 1 Portd.1 = 0 Waitms 50 Portd.1 = 1 Portd.0 = 0 Waitms 50 Loop Stopbutton: Portd.2 = 1 Return
End хотел так... на портах Д0 и Д1 мигают светодиоды последовательно с заддержкой 50мс... када нажимаю Д3 должен гореть Д2... но никак не работает... мигают Д0 и Д1 и все... на кнопку не реагирует.. где ошибка? подскажитеДобавлено (11.12.2009, 11:39) --------------------------------------------- вот... все еще не понял... Code $regfile = "m8def.dat" $crystal = 16000000
Config Portd.0 = Output Config Portd.1 = Output Config Pind.2 = Input Config Portd.3 = Output Config Int0 = Falling Portd.1 = 1
Dim Wtime As Byte
On Int0 Stopbutton Cls Wtime = 100 Enable Interrupts Enable Int0
Do Set Portd.0 Waitms Wtime Reset Portd.0 Waitms Wtime Loop Stopbutton: Portd.0 = 0
Return
End на порте Д0 мигает светодиод... но по нажатию кнопки ниче не реагирует..=( где ошибка? а хотел по нажатию кнопки светодиод должен гаснуть...
-=Наша_зависимость_от_роботов_возрастает_с_каждым_днем=-
|
|
| |
pashteet | Дата: Пятница, 11.12.2009, 14:30 | Сообщение # 34 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| а ты нажми идержи если не поможет, то: Code Config Int0 = Falling On Int0 Stopbutton Nosave Enable Int0 чет я непойму ты кнопку чтоли к Portd.1 одной ногой подключаешь, а второй к Portd.2 ? при этом Portd.1 = 1 так онож и небудет работать, у тебя прерывания по спаду, это значит, что когда нога ложится на 0, тогда происходит прерывание, а при нажатии кнопки у тебя нога соединяется с Portd.1 , а там +Vcc, соответственно прерывания не происходит
|
|
| |
sasha | Дата: Пятница, 11.12.2009, 17:06 | Сообщение # 35 |
Язык программированя: Си и баском(учусь)
Зарегистрирован 16.02.2009
Группа: Новички
Сообщений: 371
Город: Актюбинск
Статус: Offline
| неа ... не идет... мигает все еще... Code $regfile = "m8def.dat" $crystal = 16000000
Config Portd.0 = Output Config Portd.1 = Output Config Pind.2 = Input Config Int0 = Falling
Dim Wtime As Byte
On Int0 Stopbutton Nosave
Cls
Wtime = 100
Enable Interrupts
Enable Int0
Do Set Portd.0 Waitms Wtime Reset Portd.0 Waitms Wtime Loop Stopbutton: Portd.1 = 1
Return
End и вот так не работает... после баттона я задаю ту задачу которая при нажатий кнопки бует выполнятся?Добавлено (11.12.2009, 17:06) --------------------------------------------- по этой проге мигает светодиод, када нажимаю кнопку ниче не происходит... када на 5Вподключаю портд.2 с главным светодиодом вместе горит и светодиод на ПортД.1... не понял ничего... и не гаснит... над ток заново запускать...
-=Наша_зависимость_от_роботов_возрастает_с_каждым_днем=-
Сообщение отредактировал sasha - Пятница, 11.12.2009, 16:59 |
|
| |
pashteet | Дата: Пятница, 11.12.2009, 22:04 | Сообщение # 36 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| дык я ж написал почему не работает Я так понял ты вот этот код взял за основу: Code $regfile = "2313def.dat" $crystal = 4000000 Config Pind.6 = Output Config Pind.2 = Input Config Int0 = Falling . . . Stopbutton: Lcd "stopъ!" Return End Pind.2 настроен на вход. Не забудьте про подтягивающий резистор 10кОм! Config Int0 = Falling заставляет сработать прерывание по спаду сигнала, т.е. при переходе с высокого уровня на низкий. вот так должно работать: Code $regfile = "m8def.dat" $crystal = 16000000 Config Pind.0 = Output '- сюда светодиод Config Pind.2 = Input '- это кнопка Config Int0 = Falling Dim Wtime As Byte On Int0 Stopbutton Nosave' Wtime = 100 Enable Interrupts Enable Int0 Do Set Portd.0 Waitms Wtime Reset Portd.0 Waitms Wtime Loop Stopbutton: Reset Portd.0 '- при нажатой кнопке светодиод небудет гореть Return End Не забудьте про подтягивающий резистор 10кОм! - вот это для кого написано? без этого работать не будет!
Сообщение отредактировал pashteet - Пятница, 11.12.2009, 22:04 |
|
| |
sasha | Дата: Суббота, 12.12.2009, 07:57 | Сообщение # 37 |
Язык программированя: Си и баском(учусь)
Зарегистрирован 16.02.2009
Группа: Новички
Сообщений: 371
Город: Актюбинск
Статус: Offline
| все еще мигает только...=(не реагирует на кнопку...
-=Наша_зависимость_от_роботов_возрастает_с_каждым_днем=-
|
|
| |
pashteet | Дата: Понедельник, 04.01.2010, 23:43 | Сообщение # 38 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| Ребят, подскажите, как с помощью МК можно иметировать сигнал пульта от телека? Есть задача сделать свой пульт на МК, незнаю как под написать, чтоб МК формировал сигнал для светодиода
|
|
| |
DeepBlack | Дата: Вторник, 05.01.2010, 10:55 | Сообщение # 39 |
Язык программированя: C/C++
Зарегистрирован 27.07.2009
Группа: Модераторы
Сообщений: 189
Город: Зеленоград
Статус: Offline
| Пульт предполагается использовать с каким-либо промышленным устройством или с разрабатываемым? Если с промышленным, то может сложнее оказаться... На мой взгляд, есть смысл ознакомиться с принципом работы протокола RC5. Если конечно, в баскоме нет такой какой-нибудь функции специальной, уже за нас написанной. Если писать с нуля, то я бы сделал примерно следующее: 1.Прописал функции для отправки 0 и 1. (надо выдержать по таймеру период одного бита 1.778мс, в середине периода, если обрабатываем 0, то смена уровня 0->1, если единичка то 1->0 - так кажется...) 2.Записал в память как константы строки типа 1011101110001...110. (правила формирования кода в инете найти можно - стартовые биты, адрес, команда, возможно контрольная сумма) 3.А при нажатии кнопки брал бы нужную строку, в цикле прогонял бы ее от первого до последнего символа, и в зависимости от символа вызывал бы нужную функцию из п.1 Как-то так этот вопрос вижу Вот тут еще ссылочку нашел, там более или менее что-то описано http://fi-com.ru/mcu/rc5.htm
|
|
| |
pashteet | Дата: Вторник, 05.01.2010, 12:05 | Сообщение # 40 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| Спасибо! Пульт и приемник будут разрабатываться свои, протокол RC5 выбран из-за готовых библиотек в баскоме. Вроде нашел решение этой проблемы, в баскоме есть команда RC5SEND, с помощью ее хочу передавать сигнал
|
|
| |
ALHIMIK | Дата: Среда, 06.01.2010, 12:07 | Сообщение # 41 |
Язык программированя: C - вот Истинная вера для МК
Зарегистрирован 23.12.2008
Группа: Опытные
Сообщений: 83
Город: СПб
Статус: Offline
| можно сделать на аппаратном уарте(скоро займусь сам) на рх контроллера выход тсопа на тх мк светик , а лучше 2х через н канальный полевик скорость уарта == частота тсопа кадр - старт бит 8бит смысловых чётность\не чётность 1 стоп = 11 бит пачка для тсопа
|
|
| |
pashteet | Дата: Среда, 06.01.2010, 18:48 | Сообщение # 42 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| тоже хороший вариант
|
|
| |
ALHIMIK | Дата: Четверг, 07.01.2010, 00:14 | Сообщение # 43 |
Язык программированя: C - вот Истинная вера для МК
Зарегистрирован 23.12.2008
Группа: Опытные
Сообщений: 83
Город: СПб
Статус: Offline
| а главное не сильно занимает ЦПУ
|
|
| |
DeepBlack | Дата: Четверг, 07.01.2010, 13:04 | Сообщение # 44 |
Язык программированя: C/C++
Зарегистрирован 27.07.2009
Группа: Модераторы
Сообщений: 189
Город: Зеленоград
Статус: Offline
| ALHIMIK, а на выход TSOP наверно еще надо инвертор поставить... он же принятую с ИК 1 низким лог. уровнем передавать в МК будет.
|
|
| |
ALHIMIK | Дата: Суббота, 09.01.2010, 19:23 | Сообщение # 45 |
Язык программированя: C - вот Истинная вера для МК
Зарегистрирован 23.12.2008
Группа: Опытные
Сообщений: 83
Город: СПб
Статус: Offline
| нет выход передатчика подключён к затвору Н канальному полевику те пока нет старт бита на тх 1 трас закрыт светик не мигает на тсопе тоже 1 транзистор открывается от 0 на затворе светик зажигается на выходе тсоп 0 если подключать светик на прямую то анодом на питание (через резистор) катодом на мкДобавлено (09.01.2010, 19:23) --------------------------------------------- но так скорей всего упадёт дальнобойность
|
|
| |