Закончил с новыми мозгами, вот что получилась:
Контроллер расчитан на взаимодействие двух МК (мега48 и тинька2313) между собой по 4-м портам. Мега будет ведущей, отвечать за ШИМ двигателей, Rc5, работу АЦП дальномера, при этом по прерыванию на INT1 (PD3) будет обращать внимание на Тиньку, которая в свою очередь будет вертеть сервой и обрабатывать датчики поверхности (тоже по прерываниям). Тинька будет все время следить за результатами АЦП и если есть препядствие, то останавливать серву, как препядствие исчезло - востанавливать вращение с того же положения
Вся рассыпуха выполнена на СМД компонентах и распаяна с обратной стороны платы (для минимизации размеров), так же на плате предусмотрено отключение какого-либо МК от питания (например если нужен будет только один)
Теперь о неприятном:
При загадочных обстоятельствах погибла Тинька, поэтому ее на фотке нема Жду степендию, пойду за новой
Мега48 упорно отказывается работать с пультом Нивкакую не принимая его сигналы. Подумываю о замене 48-ой на 8-ую (опять же затраты )
Прилогаю код, которым пытался работать с Rc5:
- Код: Выделить всё • Развернуть
regfile = "m48def.dat"
$crystal = 16000000
$lib "mcsbyte.lbx"
Config Rc5 = Pind.2
Enable Timer0
Config Pind.3 = Output : Led1 Alias Portd.3
Config Pind.4 = Output : Led2 Alias Portd.4
Config Pind.5 = Output : Led3 Alias Portd.5
Config Pind.6 = Output : Led4 Alias Portd.6
Config Pind.7 = Output : Led5 Alias Portd.7
Dim Address As Byte , Command As Byte
Enable Interrupts
Do
Getrc5(address , Command)
If Address <> 255 And Command <> 255 Then
Command = Command And &B01111111
End If
If Command = 1 Then
Set Led1
Elseif Command = 2 Then
Set Led2
Elseif Command = 3 Then
Set Led3
Elseif Command = 4 Then
Set Led4
Elseif Command = 5 Then
Set Led5
Elseif Command = 6 Then
Reset Led1
Elseif Command = 7 Then
Reset Led2
Elseif Command = 8 Then
Reset Led3
Elseif Command = 9 Then
Reset Led4
Elseif Command = 10 Then
Reset Led5
End If
Loop