Страница 1 из 1

Мультируль на магнитолу pioneer

Добавлено: Чт мар 26, 2015 10:59:40
Max_Payne_EN
Приветствую, подскажите что нет так. Делаю переходник на мультируль с автомобиля mazda. Сопротивление кнопок на руле замерил: 147Ом, 55Ом, 298Ом, 555Ом, 1022Ом и 2КОм. В итоге - подключаю схему, на вход ничего не подаю, а на магнитоле нажимаются все кнопки в хаотичном порядке. На питании и avcc стоят кондёры, резет подтянут.

Код: Выделить всё

$regfile = "m8adef.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Portd.0 = Output                                     ' Громкость -
Config Portd.1 = Output                                     ' Громкость +
Config Portd.2 = Output                                     ' Песня +
Config Portd.3 = Output                                     ' Песня -
Config Portd.4 = Output                                     ' Вход/Выключение
Config Portd.5 = Output                                     ' Приглушение

Dim A As Integer
Dim P As Integer

Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Portd.5 = 1
Start Adc
Do
A = Getadc(2)

If A >= 80 And A < 150 Then
P = 0
Elseif A >= 180 And A < 280 Then
 P = 1
Elseif A >= 350 And A < 430 Then
 P = 2
Elseif A >= 500 And A < 560 Then
 P = 3
Elseif A >= 650 And A < 720 Then
 P = 4
Elseif A >= 770 And A < 850 Then
 P = 5
Else
P = -1
End If

If P = -1 Then
If Portd.0 = 0 Then Portd.0 = 1
If Portd.1 = 0 Then Portd.1 = 1
If Portd.2 = 0 Then Portd.2 = 1
If Portd.3 = 0 Then Portd.3 = 1
If Portd.4 = 0 Then Portd.4 = 1
If Portd.5 = 0 Then Portd.5 = 1
Elseif P = 0 Then
If Portd.0 = 1 Then Portd.0 = 0
If Portd.1 = 0 Then Portd.1 = 1
If Portd.2 = 0 Then Portd.2 = 1
If Portd.3 = 0 Then Portd.3 = 1
If Portd.4 = 0 Then Portd.4 = 1
If Portd.5 = 0 Then Portd.5 = 1
Elseif P = 1 Then
If Portd.0 = 0 Then Portd.0 = 1
If Portd.1 = 1 Then Portd.1 = 0
If Portd.2 = 0 Then Portd.2 = 1
If Portd.3 = 0 Then Portd.3 = 1
If Portd.4 = 0 Then Portd.4 = 1
If Portd.5 = 0 Then Portd.5 = 1
Elseif P = 2 Then
If Portd.0 = 0 Then Portd.0 = 1
If Portd.1 = 0 Then Portd.1 = 1
If Portd.2 = 1 Then Portd.2 = 0
If Portd.3 = 0 Then Portd.3 = 1
If Portd.4 = 0 Then Portd.4 = 1
If Portd.5 = 0 Then Portd.5 = 1
Elseif P = 3 Then
If Portd.0 = 0 Then Portd.0 = 1
If Portd.1 = 0 Then Portd.1 = 1
If Portd.2 = 0 Then Portd.2 = 1
If Portd.3 = 1 Then Portd.3 = 0
If Portd.4 = 0 Then Portd.4 = 1
If Portd.5 = 0 Then Portd.5 = 1
Elseif P = 4 Then
If Portd.0 = 0 Then Portd.0 = 1
If Portd.1 = 0 Then Portd.1 = 1
If Portd.2 = 0 Then Portd.2 = 1
If Portd.3 = 0 Then Portd.3 = 1
If Portd.4 = 1 Then Portd.4 = 0
If Portd.5 = 0 Then Portd.5 = 1
Elseif P = 5 Then
If Portd.0 = 0 Then Portd.0 = 1
If Portd.1 = 0 Then Portd.1 = 1
If Portd.2 = 0 Then Portd.2 = 1
If Portd.3 = 0 Then Portd.3 = 1
If Portd.4 = 0 Then Portd.4 = 1
If Portd.5 = 1 Then Portd.5 = 0
End If
Loop
End

Re: Мультируль на магнитолу pioneer

Добавлено: Чт мар 26, 2015 11:29:29
servmv
If P = -1 Then
If Portd.0 = 0 Then Portd.0 = 1
If Portd.1 = 0 Then Portd.1 = 1
If Portd.2 = 0 Then Portd.2 = 1
If Portd.3 = 0 Then Portd.3 = 1
If Portd.4 = 0 Then Portd.4 = 1
If Portd.5 = 0 Then Portd.5 = 1

если кнопка не нажата, переключить порт из 0 в 1? я так понимаю управление минусом?

сколько лишнего кода.....

If P = -1 Then
Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Portd.5 = 1
Elseif P = 0 Then
Portd.0 = 0
Elseif P = 1 Then
Then Portd.1 = 0
.... и т.д.


и надо бы схему глянуть (то что собранно + кнопки), кстати замеры на какой мазде? и года

Re: Мультируль на магнитолу pioneer

Добавлено: Чт мар 26, 2015 14:02:23
Max_Payne_EN
Да, управление минусом.
Да, кода много лишнего, товарищ настоял, что так правильней. :dont_know:
Мазда трёшка BL (2009-2013)
Cхему в протеусе могу скинуть или фотку платы.

Re: Мультируль на магнитолу pioneer

Добавлено: Чт мар 26, 2015 21:10:11
servmv
Кидай в протеусе) сюда или на Я-диск

может в AVR - studio накидать? логика то простая
там делов на 15 мин.
я там немного ошибся

Код: Выделить всё

Elseif P = 0 Then
Portd.0 = 0
Portd.1 = 1 // ну типо другую кнопку отпустить
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1

я просто AVR в Basic не очень, хотя всю дорогу пишу в VB6 VB.net

Re: Мультируль на магнитолу pioneer

Добавлено: Пт мар 27, 2015 14:41:24
Max_Payne_EN
http://1drv.ms/1xEUFCt
Я Studio ещё не изучил, боюсь не смогу перенести с ходу)))

Re: Мультируль на магнитолу pioneer

Добавлено: Пт мар 27, 2015 21:25:19
servmv
Max_Payne_EN писал(а):http://1drv.ms/1xEUFCt
Я Studio ещё не изучил, боюсь не смогу перенести с ходу)))
чю за DBK ? у меня компьютер не понимает данного расширения, картинку в студию

ps у меня протеус 8.какойто...

Re: Мультируль на магнитолу pioneer

Добавлено: Сб мар 28, 2015 13:30:35
Max_Payne_EN
servmv писал(а):
Max_Payne_EN писал(а):http://1drv.ms/1xEUFCt
Я Studio ещё не изучил, боюсь не смогу перенести с ходу)))
чю за DBK ? у меня компьютер не понимает данного расширения, картинку в студию

ps у меня протеус 8.какойто...
У меня в протусе 7.7, но в 8 должен открыться, я по ходу не тот файл скинул, позже выложу нормальный)
У меня всё получилось, сделал просто интервалы поменьше и добавил задержку после стрта ацп. Подключил - всё работает.
Спасибо что откликнулись.)

Re: Мультируль на магнитолу pioneer

Добавлено: Сб мар 28, 2015 23:14:01
servmv
Потому не люблю бейсик в AVR, по сути на ацп нужно вешать обработчик прерываний, тут по ходу линейный код.