Блок Тапа Для Pt2399
#121
Отправлено 19 июня 2021 - 19:53
case 0x00:
// wavevalue = ADCH; //Stocking 8-bit value
ADMUX |= (1 << MUX0); //changing to next ADC Channel - заменить на ADMUX &= ~(1 << MUX0) & ~(1 << MUX1) & ~(1 << MUX2);
break;
то есть получить значение подключив ацп к 6 ноге
и наоборот.
еще раз повторю для меня это не очень хорошо читабельно (не привычно). Вот что я понял тут поочередно опрашиваются каналы АЦП и в последней вы переназначили опрос вместо 6 ноги первую. А вам я так понимаю нужно вместо первой опрашивать 6ю. То есть значение регистра
ADMUX должно быть b00000111
стоп, жаль нельзя исправить. все не верно.
ISR(ADC_vect) //ADC interrupt
{
switch (ADMUX)
{
case 0x00:
// wavevalue = ADCH; //Stocking 8-bit value
ADMUX |= (1 << MUX0); //changing to next ADC Channel - тут 0 биту присваивается значение 1 (после значения 000) получаем 001
break;
case 0x01:
//divtogglevalue = ADCH;
ADMUX &= ~(1 << MUX0);- тут 0 бит сбрасывается
ADMUX |= (1 << MUX1);- тут 1 бит получает значение 1 в итоге получаем 010
break;
case 0x02:
//speedvalue = ADCH;
ADMUX |= (1 << MUX0); - тут 0 бит получает 1 в итоге 011
break;
case 0x03:
//depthvalue = ADCH;
ADMUX |= (1 << MUX2); - тут 2 бит получает 1 в итоге 111
break;
case 0x07:
timevalue = ADCH;
//ADMUX &= ~(1 << MUX0) & ~(1 << MUX1) & ~(1 << MUX2); - тут 0 1 2 биты сбрасываются в 000
ADMUX |= (1 << MUX0); //changing to next ADC Channel - а если так то получаем 111 ( то есть опрос 6й ноги), но когда цикл начнется заново у нас все нарушится ибо нет обнуления.
break;
}
ADCSRA |= (1 << ADSC); //Restarting conversion
}
предлагаю ничего не менять а поменять местами - case 0x07: и case 0x03:
а вот что нужно сделать ... дошло
case 0x03:
depthvalue = ADCH; //тут заменить depthvalue на timevalue --------------------------------------------------
ADMUX |= (1 << MUX2); - тут 2 бит получает 1 в итоге 111
break;
case 0x07:
timevalue = ADCH; а тут наоборот -----------------
//ADMUX &= ~(1 << MUX0) & ~(1 << MUX1) & ~(1 << MUX2); - тут 0 1 2 биты сбрасываются в 000
ADMUX |= (1 << MUX0); //changing to next ADC Channel - а если так то получаем 111 ( то есть опрос 6й ноги), но когда цикл начнется заново у нас все нарушится ибо нет обнуления.
break;
Тільки не було в тому мети – Я так не можу, а як зможеш ти?
#122
Отправлено 19 июня 2021 - 20:07
qwer009 (19 июня 2021 - 19:53) писал:
case 0x00:
// wavevalue = ADCH; //Stocking 8-bit value
ADMUX |= (1 << MUX0); //changing to next ADC Channel - заменить на ADMUX &= ~(1 << MUX0) & ~(1 << MUX1) & ~(1 << MUX2);
break;
то есть получить значение подключив ацп к 6 ноге
и наоборот.
еще раз повторю для меня это не очень хорошо читабельно (не привычно). Вот что я понял тут поочередно опрашиваются каналы АЦП и в последней вы переназначили опрос вместо 6 ноги первую. А вам я так понимаю нужно вместо первой опрашивать 6ю. То есть значение регистра
ADMUX должно быть b00000111
стоп, жаль нельзя исправить. все не верно.
ISR(ADC_vect) //ADC interrupt
{
switch (ADMUX)
{
case 0x00:
// wavevalue = ADCH; //Stocking 8-bit value
ADMUX |= (1 << MUX0); //changing to next ADC Channel - тут 0 биту присваивается значение 1 (после значения 000) получаем 001
break;
case 0x01:
//divtogglevalue = ADCH;
ADMUX &= ~(1 << MUX0);- тут 0 бит сбрасывается
ADMUX |= (1 << MUX1);- тут 1 бит получает значение 1 в итоге получаем 010
break;
case 0x02:
//speedvalue = ADCH;
ADMUX |= (1 << MUX0); - тут 0 бит получает 1 в итоге 011
break;
case 0x03:
//depthvalue = ADCH;
ADMUX |= (1 << MUX2); - тут 2 бит получает 1 в итоге 111
break;
case 0x07:
timevalue = ADCH;
//ADMUX &= ~(1 << MUX0) & ~(1 << MUX1) & ~(1 << MUX2); - тут 0 1 2 биты сбрасываются в 000
ADMUX |= (1 << MUX0); //changing to next ADC Channel - а если так то получаем 111 ( то есть опрос 6й ноги), но когда цикл начнется заново у нас все нарушится ибо нет обнуления.
break;
}
ADCSRA |= (1 << ADSC); //Restarting conversion
}
предлагаю ничего не менять а поменять местами - case 0x07: и case 0x03:
а вот что нужно сделать ... дошло
case 0x03:
depthvalue = ADCH; //тут заменить depthvalue на timevalue --------------------------------------------------
ADMUX |= (1 << MUX2); - тут 2 бит получает 1 в итоге 111
break;
case 0x07:
timevalue = ADCH; а тут наоборот -----------------
//ADMUX &= ~(1 << MUX0) & ~(1 << MUX1) & ~(1 << MUX2); - тут 0 1 2 биты сбрасываются в 000
ADMUX |= (1 << MUX0); //changing to next ADC Channel - а если так то получаем 111 ( то есть опрос 6й ноги), но когда цикл начнется заново у нас все нарушится ибо нет обнуления.
break;
Да пробовал уже несколько вариантов, ни один не работает правильно, так как хочу. То одно перестает работать,то другое. В следующий раз когда возьмусь за эту затею, то оригинальной схемой придется воспользоваться и оригинальной прошивкой. Лучше там ничего не менять. Списался с автором, там оказалось,что ещё не выйдет отказаться от транзистора,на который ШИМ подаётся, иначе это всё завязано на калибровку и ничего не будет работать нормально без него.
#123
Отправлено 19 июня 2021 - 20:11
чтоб вот так было концовка
case 0x03:
timevalue = ADCH;
ADMUX |= (1 << MUX2);
break;
case 0x07:
depthvalue = ADCH;
ADMUX &= ~(1 << MUX0) & ~(1 << MUX1) & ~(1 << MUX2);
break;
Тільки не було в тому мети – Я так не можу, а як зможеш ти?
#124
Отправлено 19 июня 2021 - 21:06
qwer009 (19 июня 2021 - 20:11) писал:
чтоб вот так было концовка
case 0x03:
timevalue = ADCH;
ADMUX |= (1 << MUX2);
break;
case 0x07:
depthvalue = ADCH;
ADMUX &= ~(1 << MUX0) & ~(1 << MUX1) & ~(1 << MUX2);
break;
Да там у меня другая часть кода не сработала, SPI в коде аппаратный для цифрового потенциометра, а я на другие контакты собирался вешать, хотел программно, в коде пины поменял, не работает ни хера. Вобщем, шут с ним с этим всем, слишком много времени ушло, только зря. Может как будут финансы, закажу комплектуху оригинальную, соберу по оригинальной схеме и с оригинальной прошивкой
#125
Отправлено 19 июня 2021 - 21:15
Тільки не було в тому мети – Я так не можу, а як зможеш ти?
#126
Отправлено 25 июня 2021 - 20:38
qwer009 (19 июня 2021 - 21:15) писал:
Да просто хотелось из этой схемы оставить только тап,потенциометр,цифровой потенциометр и светодиод, поменять пины в коде, залить и перепаять аттини84 вместо аттини24 с другой прошивкой, не изменяя разводку платы готовой и не добавляя новых компонентов. Ну да чёрт с ним теперь. Как говорится, работает - не лезь, лучшее - враг хорошего. В следующий раз изначально плату буду разрабатывать с учётом распиновки схемы автора и его компонентов. Ну это в будущем, хз, может в конце года, вряд ли раньше.
Собственно вот итог 5 месяцев потраченного времени (и нескольких запоротых заводских плат и корпуса): дилей на pt2399 c тапом, модуляцией и хвостами,после выключения байпаса. Фото прилагаю ниже, а также ссылку на YouTube-видео.
Сообщение отредактировал qwertyfruity: 25 июня 2021 - 20:39
#128
Отправлено 15 октября 2022 - 11:08
serogka (06 октября 2022 - 00:21) писал:
https://guitar-gear....post__p__156308