@ru_arduino

Страница 3273 из 7737
Ivan
10.09.2017
10:43:19
и я теряю одно из переключений

или нормальные хосты держат Trec побольше 1 мкс?

Dolphin
10.09.2017
10:44:05
Значит частоту повышай

иначе никак

Google
Ivan
10.09.2017
10:44:18
на 8 МГц тоже теряю

а там успеть не реально. за 1 мкс максимум 8 команд выполнится

с учётом сна - не более 4

Ivan
10.09.2017
10:46:30
ты не прав

это милли

микро это 1/1000000

Dolphin
10.09.2017
10:46:48
ой блядь

ваще гоню )

Ivan
10.09.2017
10:47:15
я и так сделал всё по-умному. я вместо считывания состояния линии храню его в байтовой переменной. при INT0 инвертирую. выполняю обработку. затем считываю реальное состояние. если оно не совпадает с ожидаемым, запоминаю и выполняю ещё одну обработку

так что если во время прерывания происходит ещё одно изменение, я его ловлю

беда в том, что их происходит 3

Google
Dolphin
10.09.2017
10:48:01
так подожди

Ivan
10.09.2017
10:48:31
если сделать задержки между таймфреймами больше 1 мкс, всё будет хорошо

но будет ли так делать реальный хост?

Dolphin
10.09.2017
10:48:47
та не 1мкс

там НЕ МЕНЕЕ

Ivan
10.09.2017
10:49:01
да

Dolphin
10.09.2017
10:49:04
в реальности у тебя около 15

Ivan
10.09.2017
10:49:33
а как в реальности будет? с учётом того, что хост это контроллер питания ноута

Dolphin
10.09.2017
10:49:41
твоя задача - выйти из прерывания раньше



вот

розовым - обработчик прерывания

оранжевым - время до следующего прерывания минимальное

Сними такты анализатором

на деле, я бы вобще прерыванием - детектил начало передачи, выставлял флаг приема, вызывал функцию приема и по контролю состояния пина, принимал данные, считая длительности

это две строчки на асме

но ты его боишься, я помню ))

Ivan
10.09.2017
11:13:36


да... оно работает

но у меня расстояние между фреймами 17 мкс

Google
Ivan
10.09.2017
11:15:50
попробую уменьшать, посмотреть когда отвалится (при 1 мкс точно отваливается)

при расстоянии времени релаксации не менее 15 мкс всё работает. меньше - нет

хотя возможно ты прав и если линию уронили в ноль, то лучше потупить в цикле 15 мкс, снова считать её и принять битик, а уже потом уснуть

чем уходить в сон и ждать 15 мкс по таймеру

Ivan
10.09.2017
11:23:40
у меня сейчас нормально работает приём-передача. при этом я сплю всё время кроме обработчиков прерываний TIM0 и INT0

но наверное ради 15 мкс задержки нет смысла спать?

Dolphin
10.09.2017
11:24:09
угу

проснулся по внешнему прерыванию, принял и уснул до след.

Ivan
10.09.2017
11:25:18
хм... тогда таймер только для приёма RESET станет нужным

Dolphin
10.09.2017
11:25:47
он тогда вобще не нужен

Ivan
10.09.2017
11:26:00
(я запускаю его с нуля каждый раз когда линия роняется в 0, в обработчке переполнения смотрю линию - если она по-прежнему 0, значит случился ресет)

он нужен ресеты определять

Аксвиний
10.09.2017
11:26:57
о и второй акум жив считавшийся мертвых 15:25Иоанн там сука микрухи специальтные со временем нахуй отсоединяющие акум 15:23Иоанн хаххаах думал акум от тилифона падох вырвал микруху а напряжение на контактоах 3.7 вольт блядь так многие можно пичнитьт наверное

Dolphin
10.09.2017
11:27:01
ну короче, мои мысли, это мои мысли, у тебя есть свои - делай как думаешь, не получится - говори подумаем ;)

Ivan
10.09.2017
11:28:32
как лучше организовать задержку 15 мкс в коде? _delay_us(15)? или TCNT0 = 0; while (TCNT0 < 15); ? (таймер имеет частоту 1 МГц)

Petr
10.09.2017
11:28:56
Нопами забей

Ivan
10.09.2017
11:29:08
ну _delay_us и делает нопы

Dolphin
10.09.2017
11:29:16
делей - хуевая практика ;)

Google
Ivan
10.09.2017
11:29:42
если что это внутри обработчика прерывания INT0

никто меня не прервёт

Dolphin
10.09.2017
11:30:21
Все-равно

Ivan
10.09.2017
11:30:24
а ты сам сказал, что делать 15 мкс задержки на таймере - не рационально

Dolphin
10.09.2017
11:30:49
не я не это сказал, ну да похуй

цикл по счетчику ок

вот только учти

что цикл у тебя пустой, при включении оптимизации он исчезнет

добавь volatile хоть

Admin
ERROR: S client not available

Ivan
10.09.2017
11:49:00
с делеем минимальное расстояние между с фреймами упало с 15 мкс до 5

думаю пойдёт

777Andrej
10.09.2017
13:08:07
Ураган "Ирма" достиг территории штата Флорида. Скорость ветра достигает 209 км/ч.

sifun
10.09.2017
13:17:44
1 вайр лучше сэмплировать

чем заводить прерывания

и поставь уже туда стм

Ivan
10.09.2017
13:31:14
и поставь уже туда стм
я надеюсь эту штуку упихать в штекер зарядника

вообще, сейчас вроде всё более-менее работает под протеусом - READ ROM, SKIP ROM, READ MEM, остальные команды смысла делать нет

только вот CRC неверная считается

осталось это подправить, а завтра уже буду пробовать в железе

Google
Dolphin
10.09.2017
13:33:03
?

Ivan
10.09.2017
14:00:13
хм... где раздобыть код генерации CRC8?

https://ru.wikibooks.org/wiki/%D0%A0%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2/%D0%A6%D0%B8%D0%BA%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B8%D0%B7%D0%B1%D1%8B%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4#CRC-8

а то взял отсюда

а он не то выдаёт

Взял в качестве начального значения 0 вместо 0xFF и вот эту таблицу - 0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220, 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98, 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255, 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7, 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80, 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238, 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115, 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22, 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168, 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53 - заработало

https://github.com/KivApple/dell-charger-emulator

если кому не лень - можете покритиковать мой код

Dolphin
10.09.2017
14:28:42
нах еепром то?

прогмем же есть

Ivan
10.09.2017
14:29:26
там же вроде тогда заморочки с указателями начинаются, если данные в прогмеме?

Dolphin
10.09.2017
14:30:14
да нет, просто читаешь функцией и все

Ivan
10.09.2017
14:32:02
с другой стороны это наверное помимо прочего ускорит иницализацию

сейчас попробую

Dolphin
10.09.2017
14:32:19
вот тут посмотри

http://microsin.net/programming/avr/avrstudio-gcc-progmem.html

да, это быстрее

у тебя массивы линейные, вобще все красиво

код красивый ;)

не понял, ты при ините читаешь в оперативу все массивы? зачем?!

Ivan
10.09.2017
14:46:47
странно. разместил в ПЗУ данные "EEPROM", а также таблицу для рассчёта CRC

всё работает

Страница 3273 из 7737