Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс июн 10, 2018 18:54:05
Вымогатель припоя
Карма: 13
Рейтинг сообщений: 9
Зарегистрирован: Пт фев 22, 2013 18:00:43 Сообщений: 508 Откуда: Беларусь, г. Гомель
Рейтинг сообщения:0
Я полностью забил на тип переменных, я не записываю в eeprom. Просто выполняю чтение (оно быстрое) И опять в протеусе работает на железяки нет!!!
unsigned char EEPROM_read(unsigned int uiAddress) { while(EECR & (1<<EEWE)); // Жду пока закончится последняя запись EEAR = uiAddress; // Устанавливаю адрес EECR |= (1<<EERE); // Запуск чтения из регистра EERE return EEDR; }
.........
while (1) { if (EEPROM_read(0)==0xFF) {PORTD.0=1;PORTD.6=1;} } В программаторе я могу записать значение и считать его. Порты работают проверил. В чем может быть косяк?
Всем привет! Пытаюсь победить oled 0.96 по spi. Контроллер ssd1306. Скоммуниздил шрифты, чтобы самому не рисовать. Проблема: При выводе через функцию LCD_Printf, на дисплее выписывается только последняя цифра (буква). Если писать через функцию LCD_Char посимвольно, то все работает. Кому не сложно, гляньте пожалуйста, несколько дней побороть не могу. SSD_SPI - функции; PC - main; fonts - шрифты и картинки. Спасибо!
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Компилятор не знает, сколько байт в RAM выделить под этот массив, и, в итоге, sprintf может записать мусор в какую-нибудь переменную в RAM недалеко от этого "массива". Это может вызвать самые неожиданные глюки.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Компилятор не знает, сколько байт в RAM выделить под этот массив, и, в итоге, sprintf может записать мусор в какую-нибудь переменную в RAM недалеко от этого "массива". Это может вызвать самые неожиданные глюки.
Определил его размерность в 40, это ситуацию не поправило. вывожу инфу:
Да не за что, я тоже следую правилу из твоей подписи.
На всякий случай рекомендую почитать где-нибудь про структуру программы на Си, про *.c и *.h файлы, чтобы не возникало больше желания #include'ить первые из них. Это к обсуждаемой проблеме не относится, но лучше делать как принято.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Последний раз редактировалось *Trigger* Вт июн 19, 2018 23:51:47, всего редактировалось 1 раз.
CVAVR выдает три файла: *.eep , *.hex , *.rom . В программе для прошивки только два пункта: Write Flash и Write EEprom. С *.eep более-менее понятно, это Write EEprom. Как шить *.rom? Или это то же, что и *.hex, только в другом формате? И в какой последовательности шить *.eep , *.hex , *.rom ?
_________________ ... ардубино и наебиэкспресс убивают творчество в зародыше.
В цепи три диода, загораются только два, на 100% и белым... Задержки высчитывал исходя из одного тактового импульса (125 наносек). Благодарю! P.S. ссылка на датащи http://www.seeedstudio.com/document/pdf ... asheet.pdf
Открой файл *.asm после компиляции и посмотри, во что разворачивается, например, это:
Код:
for(z=0; z<6; z++){#asm("nop")}
Ты увидишь, что этот кусок исполняется куда дольше 6 тактов, т.к. есть ещё проверка условия, инкремент, условный переход. В этом случае правильно будет написать 6 nop'ов подряд, без цикла.
Далее, остальные циклы и проверки битов тоже вносят задержки, но теперь уже между битами. Вообще, такой критичный к таймингам кусок правильней было бы полностью на ассемблере написать.
В этой статье есть исходники, но там всё полностью на ASM'е.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
вообще-то, для WS2812B вряд ли можно придумать что-то лучше, чем управление через аппаратный SPI.
Код:
#if (F_CPU < 16000000UL) || !defined(F_CPU) #error "F_CPU must be defined and must be greather or equal 16MHz" #endif
/// Константа для формирования импульса "0" для WS2812 #define WS_BIT_0 0xE0 /// Константа для формирования импульса "1" для WS2812 #define WS_BIT_1 0xF8
/** Обновление содержимого цепочки светодиодов WS2812 * */ void ws2812_show(void){ for(uint8_t i=0; i<PIXEL_CNT; i++){ // для чипа WS2812 порядок цветовых составляющих должен быть таким: send_byte(pixels[i].g); // сначала ЗЕЛЕНЫЙ send_byte(pixels[i].r); // затем КРАСНЫЙ send_byte(pixels[i].b); // в конце - СИНИЙ } }
Trigger спасибо, вечером опробую. ARV да не хочется использовать для таких целей spi, слишком много ресурсов требуется... Хотел сколотить минимальную функцию, которая позволила бы работать с этими диодами. Опробовал нупы, что-то сдвинулось, однако все равно не работает корректно. Пробовал уменьшить количество нупов - бестолку
Я уже думаю микроконтроллер переводить на 16 МГц, но это, похоже, не факт, что исправит ситуацию. Уже и так и сяк пробовал уменьшать задержки. Есть мысль написать все в тупую, просто подряд отправку 8 бит для каждого цвета, без цикла сдвига на один...
Конечно зря. Как раз таки при SPI используется минимум ресурсов контроллера. Вообще, если возможно аппаратное решение, на кой использовать программное!
Сейчас этот форум просматривают: Paktok и гости: 48
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения