| Автор | Сообщение |
zombiez Участник Сообщения: 121
|
Доброго времени суток!
Задача:есть клавиатура(не матрица) 12 кнопок и 16х2 знакосинтезирующий дисплей
Есть исполнительное устройство (12 мощных полевиков, управляющий соленоидами)
Необходимо это связать проводами:)
Задумка такая. Контроллер, например, attiny2313 опрашивает клавиатуру и, в зависимости от нажатой кнопки, выводит сообщение на LCD, далее, генерит двоичный код из 12 бит и передает его к исполнительному устройству.
На другой стороне контроллер, либо стандартная логика, раскидывают этот код и щелкают полевичками.
С чего нужно начать? У самого опыта в написании программ для контроллеров нет (светодиодом поморгал, за звук на buzzer выводил:) ). Хорошо знаком с лексикой языка basic, поэтому, bascom-avr предпочтительней.
Прошу помощи в разработке, может, у кого есть исходники, которые натолкнут на мысль... |
|
Doka__ Новичок Сообщения: 17
|
Я обычно начинаю со схемы на бумаге. Пользуюсь программой RusPlan5. Потом Собираю схему и определяюсь с адресами устройств. После составляю алгоритм работы, распределяю память и приступаю к программе. Стараюсь разбить программу на подпрограммы, так легче отладить и не запутаться.
А насчет примеров можеш посмотреть здесь может найдеш что нибудь интересное :
http://www.gaw.ru/html.cgi/txt/app/micros/avr/index.htm
А вот для начинающих, сам начинал от сюда :
http://www.123avr.com/index.html |
|
GarikBaza Новичок Сообщения: 664
|
zombiez, Поставь на управление 74HC595, буфером можно ULN2803, можно и полевики, только им управление надо правильное, или полевики с лоческими входами. Для опроса , наоборот, поставь с параллельного в последовательный. В принципе, тогда всес это можно подключить к аттини13 без отключеного ресета  |
|
zombiez Участник Сообщения: 121
|
Клавиатуру привели к матрице. Это подходит:
http://www.gaw.ru/pdf/Atmel/app/avr/AVR240.pdf
Блок управления находится на расстоянии нескольких метров от исполнительного блока.
Гальваническая развязка, полевики, все уже есть. осталось только все связать программой.
Два контроллера, один рулит дисплеем, второй - опрашивает клавиатуру, кроме 2313 ничего нет в нашей деревне  |
|
zombiez Участник Сообщения: 121
|
С индикацией разобрался, все кажет и даже на русском языке, теперь задача, в зависимости от нажатой клавиши выдать код вида:
0000000000000000, где каждый бит означает кнопку (нажатую или нет) в матрице 4*4
есть исходный код на ассемблере, но в баском не могу перевести...(((
Добавлено 28-10-2009 02:22
срочно нужна программа на баскоме опроса матрицы 4*4 с выводом на любой порт последовательности из 16 бит
Добавлено 28-10-2009 02:24
* для attiny2313 |
|
zombiez Участник Сообщения: 121
|
Там же программа в две строки, неужели никто не але? |
|
GarikBaza Новичок Сообщения: 664
|
| zombiez писал: |
срочно нужна программа на баскоме
* для attiny2313 |
Потому и молчат все |
|
zombiez Участник Сообщения: 121
|
ну не рублю я в asm, а все примеры и учебники только на нем, нигде не нашел опроса клавиатуры на bascom'e
я не прошу сделать все за меня, но ссылкой-то хоть кинуть можно? |
|
zombiez Участник Сообщения: 121
|
написал, коряво, но работает |
|
AleksScrewdriver Участник Сообщения: 439
|
zombiez, изучай асм! Потом сможешь код оптимизировать! Эт тебе обязательно пригодится! После Си например много лишнего кода и код можно сделать меньше, а значит высвободить драгоценные ресурсы  |
|
pavel-pervomaysk Your editor Сообщения: 8037
|
| zombiez писал: | | написал, коряво, но работает |
Я как гляну свои первые проги на авр , самому ржать охота . Со временем все получится , главное это дело не забрасывать. |
|
AleksScrewdriver Участник Сообщения: 439
|
| pavel-pervomaysk писал: | | Со временем все получится , главное это дело не забрасывать. | Эт точно! Главное упорство! Изучение всевозможных кодов программ! Очень, например, интересно изучение дизассемблированного кода написанного на Си!  |
|
zombiez Участник Сообщения: 121
|
Всю жизнь изучал бейсик, потому баском как-то ближе:)
Что имею на данный момент:
Лсд дисплей поборол. И русский текст и необходимые пиктограммы рисует
Клавиатуру опрашивает другой контроллер. Может и не сильно красивый код, но работает
uart обустроил, двоичный код нажатой кнопки передается от одной тиньки ко второй.
Сегодня буду писать третью программу, по сути тот же ресивер с дешифратором, единственное, придется софтварный uart сделать на клавиатурной тиньке.
Более правильно, конечно, будет в передаваемом коде прописать адрес контроллера, которому предназначается передача, например, первый бит
Короче, разбираюсь потихоньку. |
|
zombiez Участник Сообщения: 121
|
Ребят, а как организовать софтварный uart для авр в баскоме? |
|
zombiez Участник Сообщения: 121
|
| www.qsl.net писал: | Software UART
The AT90S2313 and most other AVR controllers has a hardware UART on pins 2 and 3. Sometimes you have to use these pins for another purpose. Bascom has a software UART function that uses extra program space, but you may specify which pins to use for RxD and TxD. The pins to use are specified in the Open command:
Open "Comb.0: 9600 , 8 , n , 1" for Input As #1
Open "Comb.1: 9600 , 8 , n , 1" for Output as #2
uses pin 0 of PortB as receiver (RxD) and pin 1 of PortB as transmitter (TxD). Both are set to a baud-rate of 9600, use 8 databits per character, do not use a parity bit and use one stopbit. In Bascom every reference to #1 will be used for RxD and #2 for TxD:
software-rs232.bas
$regfile = "2313def.dat"
$crystal = 4000000
Config Pind.6 = Output
Dim Tstr As String * 4
Dim Num As Word
'open channel for output
Open "comb.1:9600,8,n,1" For Output As #1
Open "comb.0:9600,8,n,1" For Input As #2
Do
Set Portd.6
Waitms 100
Reset Portd.6
Print #1 , "text: "
Input #2 , Tstr
Print #1 , Tstr
Print #1 , "number: "
Input #2 , Num
Print #1 , Num
Loop
End
Note that the software UART does not echo characters. Also different from the hardware UART implementation is that after every prompt a linefeed/carriage return is used.
The software UART can be used with the Print, Input, Inputhex, Inkey, Waitkey and Ischarwaiting commands. Note the syntax used in Inkey, Waitkey and Ischarwaiting:
Var = Inkey(#2)
Var = Waitkey(#2)
Var = Ischarwaiting(#2)
A software UART channel can be opened, but also closed :
Close #1
Close #2
so that after the close the i/o pins can be used for another purpose. |
|
|
zombiez Участник Сообщения: 121
|
Все сделано, тему можно закрыть. |
|
|