Хрень с микроконотролерами c Aliexpress

preview_player
Показать описание
Купи на распродаже Алиэкспресс очень интересные микроконтроллеры которые не дадут тебе скучать. AtMega8 которые нормально программируются, отлично работают в простом проекте где требуется только дрыгать ногами, но глючат в проекте немножко более сложном.......
В видео использовались инструменты:

Рекомендации по теме
Комментарии
Автор

Mega8l на котором работает и mega8A это разные микроконтроллеры, поэтому 100% косяк или в частоте или в коде. Но ты конечно продолжай и дальше удалять комментарии

Артем-муэ
Автор

Ладно! Не буду мучать автора и сразу скажу ему где он обосрался, а то он неделю будет пересматривать свою программу, но так хрен и разберется в чем причина, а спросить - гордость не позволит.
А обосрался он с тактированием от внутреннего генератора пытясь завести камень на 8МГц.
Чтобы завести камень на этой частоте, нужно прочитать даташит и выполнить действия

The ATmega8 stores four different calibration values for the internal RC Oscillator. These bytes
resides in the signature row High byte of the addresses 0x0000, 0x0001, 0x0002, and 0x0003
for 1MHz, 2MHz, 4MHz, and 8Mhz respectively. During Reset, the 1MHz value is automatically
loaded into the OSCCAL Register. If other frequencies are used, the calibration value has to be
loaded manually,
Описание регистра OSCCAL
Writing the calibration byte to this address will trim the Internal Oscillator to remove process variations
from the Oscillator frequency. During Reset, the 1MHz calibration value which is located
in the signature row High byte (address 0x00) is automatically loaded into the OSCCAL Register.
If the internal RC is used at other frequencies, the calibration values must be loaded
manually. This can be done by first reading the signature row by a programmer, and then store
the calibration values in the Flash or EEPROM. Then the value can be read by software and
loaded into the OSCCAL Register. When OSCCAL is zero, the lowest available frequency is
chosen. Writing non-zero values to this register will increase the frequency of the Internal Oscillator.
Writing 0xFF to the register gives the highest available frequency. The calibrated Oscillator
is used to time EEPROM and Flash access. If EEPROM or Flash is written, do not calibrate to
more than 10% above the nominal frequency. Otherwise, the EEPROM or Flash write may fail.
Note that the Oscillator is intended for calibration to 1.0MHz, 2.0MHz, 4.0MHz, or 8.0MHz. Tuning
to other values is not guaranteed, as indicated in Table 11.

Если преревести все это с английского на русский, то для того чтобы процессор корректно завелся от встроенного RC генератора, на частоте гарантированно близкой к стандартным 1, 2, 4, 8 МГц, в процессе инициализации автор должен прописать в регистр OSCCAL одну из калибровочных констант, которые прописаны по соответствующим адресам во флешке( адреса 0, 1, 2, 3)на заводе при производстве - так называемая сигнатурная строка.
Беда автора в том, что он сразу загоняет программу во флеш и убивает тем самым сигнатурную строку - у него по эти адресам ложатся вектора прерываний.
По нормальному сигнатура должна быть считана программатором, перед тем как прошивать флеш контроллера, после прошивки, программатор должен сам записать в какую-то облать флеш или EEPROM эти самые константы.
Для этого программатору пишется скрипт.
А в своей программе автор должен прямо первой строчкой инициализации - вычитать эти калибровончые константы по заранее известному адресу и запихнуть их в регистр OSCCAL( адрес этот автор выбирает сам, где их хранить, и пишет его в скрипте к программатрору и в своей проге) . Вот и все.
Как только он это сделает - у него прога будет заводиться на любом процессоре из"бракованной" партии, за исключением тех . которые он уже убил своим корявым прошиванием. В тех процессорах что он уже прошил и забраковал, теперь вместо сигнатуры лежат вектора прерываний - ну вы понимаете что нет смысла загонять эти значения в калибровочный регистр.
Убедиться что снес сигнатуры просто - завести на процессоре у словно хорошей партии и условно плохой ногодрыгалку-меандр 1 мгц, оба сигнала на двухканальный осциллограф. Частоты будут очень сильно отличаться.
Проблема просто в непонимании того, что происходит, а не проклятых китайцах.
Калибровки криво пофлешенных контроллеров модно восстановить - по этому поводу есть апноут у атмела.
Либо использовать их в проектах с внешним кварцевым резонатором.
Вот и вся ботва.

автор 100% наговнокодил и китайцы тут не причем.
Пили давай видео-извинения китайцам и не вводи людей в заблуждение :)
п.с. Сходи убедись что частоты разъехались, ибо ты алибровок либо вообще не прописал, либо прописал туда вектора LOL и память перестала работать - что вполне предсказуемо :)

SuperMazdist
Автор

увидел 2006год. делал массово схожие панели. точно такой же пульт. было основным доходом до 2014 года, пока китайцы не начали продавать дешевые лед панели. Панели были в гермокорпусах. Цифровая панель на заправках. порядка 200 заправок оборудованы.

А теперь на счет контроллеров мега8 с буквой "L" ?? это ж вообще капец . перепишите софт на мега48pa .
Я не увидел кварцевый резонатор. Для оборудования, которое работает в большом диапазоне температур - это крайне критично.

Я контроллеры с китая вообще не покупаю. ибо там полно отбраковки. у меня 2 ситуации было:
1-мега 2561 . покупал у разных продавцов на али. перед прошивкой программа проверяет сигнатуру. и у меня был ступор - в контроллерах левая сигнатура, которая ни одному контроллеру не соотвествует. но если вручную прошить - работает. но это все ровно жесть. в нормальных магазинах купленные - в сними все ок.

2 тини13.вот тут вообще веселье . в приборе установлено несколько этих контроллеров, работают обработчиками высокоскоростных протоколов. Так вот начались проблемы с тем что половина из паета не работают правильно. много времени потратил в поисках.
А в итоге - это было отбраковка. как я это понял - посмотрел калибровочный байт, а там FF. А это говорит о том что частота внутреннего генератора вообще очень далеко за пределами разумного. померял - вместо 9.6мгц - 13 мгц.
Итог по внутренним генераторам - перед прошивкой проверять калибровочный байт. он должен быть в пределах 20-6f.
И как общий итог - контроллеры на али нельзя покупать для серьезной работы. только разве для дрыганья ногой на ардуино.

kestvvv
Автор

Привет. Недавно заказывал на пробу 5 atmega8a-au. Когда я спаял плату на ее основе и начал отмывать ( отмывал растворителем ), стёрся верхний слой атмеги. Он оказался закрашен черной краской и сверху нанесена краской новая маркировка с одинаковыми номерами партии. А под ней проявились родные надписи по которым прошлись шкуркой. Одна микруха не читалась, а другая оказалась нормальная. Судя по всему продают б/у с рандомными косяками. Не для коммерческих проектов атмеги с Али). Сэкономленные 40 рублей того не стоят.

ВладимирШувалов-еъ
Автор

Небольшой хинт: при разводке платы ставьте рядом с процессором четырёхпиновый (или сколько там нужно атмеге) разъём для программирования и отладки.

chbrr
Автор

4 года собирал инкубаторы, с китайскими микрухами проблем не было ни разу.

spajalnikom
Автор

Тоже мучился с аврками китайскими, пока не перешёл на стм32. И кодить проще и Г меньше попадается, а самая прелесть - никаких фьюзов!

SilverRainSR
Автор

мк покупаю только на ибей у продавцов с максимальным рейтингом. мег8 купил несколько сотен и из глюков бывает только нестандартное внутреннее опорное напряжение АЦП, от 2.5 до 2.7в гуляет, в остальном пока тьфу тьфу, с откровенными глюками не было ни одной... мега128 недавно проблемная попалась, пока отлаживал прошивку перестала прошиваться, но уже залитая прошивка работает стабильно...

SaLaGaDH
Автор

Мб дело что это не атмега 8, а немного др распиновка, иначе как объяснить такой БАГ на целую кучу контроллеров? Для справки не всегда что писано на корпусе является этим устройством, у меня такое уже было с флешками под BIOS.

romankomov
Автор

Странно... С 2013 года беру у китайцев Меги8 - ни разу не было проблем... Что я делаю не так???

sawnyone
Автор

МК не совсем то одинаковые. В видео проскочило три разновидности. ATmega8, ATmega8A и ATmega8L

DmVinUa
Автор

Ещё один привет с Китая:
Купил партию PIc, проверил 20 штук, все работали ОДИНАКОВО за исключением одного вывода, ну и хрен с ним, куплю норм микруху и проверю на ней.

НО все микросхемы приехали рассыпухой в пакетике, а не в стандартной упаковке лентой. Проверив все микросхемы, оказалось что они все помечены несколькими группами меток.
Есть вероятность что с конвеера с интервалом по времени снимают микросхему изготавливаемой продукции и начинают зверские издевательства на соответсвие мах токам выходов, количеству перезаписей FLASH, EEPROM, FUSE. После чего должны быть утилизированы, НО НЕТ, находятся предпреимчивые ребята-китайцы, или это завод микрухи для внутр. рынка продаёт за копейки и это ГОВНО попадает за полную стоимость нам, наивным покупателям.

td_
Автор

Первое на всякий случай всё ли в порядке с Фьюзами.., , Второе надо контроллеры отличать типа Atmega 8A, 8L, 8-PU, 8-PI , 8-16PI, 8-16PU, короче одни могут работать с определёнными частотами нормально другие могут с этими частотами глючить, третьи вообще могут лететь в разнос..., Третье так же эти микроконтроллеры по разному относятся к "бортовому" питанию, то есть сильно реагируют на всякие пульсации и помехи ( им вообще следует давать отдельное питание со своим плюсом и минусом !! )

SIM-machines
Автор

Можно код для интереса? или каммерческая тайна?

АлександрСветлый-хя
Автор

Боюсь Вас огорчить но уже по первым кардрам могу сказать что часть микросхем у вас перемаркированы. Это видно по текстуре поверхности на которую нанесена маркировка.

CoBugs
Автор

Из видео видно что это atmega8L-8au с которыми у вас возникли проблемы. Я сейчас делаю проект на таких точно контроллерах и они тоже заказаны на али. Стоят они действительно дешевле чем 8a-au. Проблема в том что он не хочет стабильно работать от 8 мгц внутренний rc при напряжении питания 3.3в. При 5 вольтах все работает нормально. Решение - поставил внешний маленький кварц на 8 мгц и перетрассировал плату под него. Благо что PB6, PB7 у меня небыли задействованы. По другому пока никак, ибо закупил кулек поболее того что у вас.

Ruslan-suhm
Автор

atmega8 изначально при производстве имела брак, один из них соединение резистором Vcc и Vref. Поэтому вскоре выпустили atmega8a, может еще какие то косяки были.

пашасергеев-яю
Автор

А это точно хорошо отлаженный готовый проект?:)

ДмитрийХороший-кн
Автор

Проверка оперативы и кода перед запуском основного кода есть?

Denysmai
Автор

Спасибо, Аурел за познавательное видео.

Smith