Jump to content
P32L

Работа С Eeprom

Recommended Posts

Натолкните на мысль пожалуйста.Смысл в следующем.Нужно изменять задержку(Delay) из EEPROM. Контроллер PIC , язык СИ.

Как реализовать чтение числа из ипрома ? Если не затруднит, то кусочек кода был бы очень кстати.

Share this post


Link to post
Share on other sites

а компилятор какой? ведь есть встроенные функции чтения-записи. Хотя на асме несколько строк (см. даташит на мк)

Share this post


Link to post
Share on other sites

Высококачественные конденсаторы Panasonic для надежности вашей электроники!

Электролитические алюминиевые конденсаторы Panasonic отличаются повышенной надежностью, длительным сроком службы, низким импедансом и выдерживают большой ток пульсаций, в то время как семейства полимерных конденсаторов Panasonic SP-CAP, POSCAP, OS-CON и HYBRID характеризуют сверхнизкий ESR и увеличенная емкость, работа при высоких напряжениях и в расширенном температурном диапазоне. Приобретая продукцию Panasonic, вы гарантированно получаете самое передовое решение для ваших задач. Для облегчения вашего выбора, мы подготовили подборку полезных материалов.

Читать статьи

Компилятор MicroC.Да,там есть встроенные библиотеки.С одного адреса читается без проблем.А если например число большое,оно уже занимает два адреса.После того как я считаю например с адреса 0х00 и 0х01 что с ними нужно сделать?Получается две переменные,в одной лежат с 0х00 в другой с 0х01 как их в кучу собрать?

Share this post


Link to post
Share on other sites

unsigned int  shet_time_imp   ;

	 shet_time_imp=eeprom_read(0x00);
	 shet_time_imp=shet_time_imp<<8;
	 shet_time_imp=shet_time_imp + eeprom_read(0x01);

Share this post


Link to post
Share on other sites
                     

Вебинар "Как создать BLE-устройство на базе новейшего беспроводного микроконтроллера STM32WB55"

27 ноября 2019 года компания КОМПЭЛ приглашает разработчиков, технических руководителей и энтузиастов беспроводной связи на вебинар, посвященный новинке 2019 года – мультипротокольному беспроводному микроконтроллеру STM32WB55, который позволяет создавать устройства на базе стандартов BLE 5.0; BLE Mesh; 802.15.4/ZigBee и Thread. На вебинаре мы покажем, как с помощью привычных инструментов STM32Cube и STM32CubeMX можно создать свое первое, надежно работающее BLE-приложение.

Зарегистрироваться на вебинар

Если в дальнейшем планируешь что-то серьезное писать - забудь о микро си.

Share this post


Link to post
Share on other sites

У микро си есть странная особенность: если проект разрастается, появляются много функций, то компилятор начинает ерунду компилировать - прошивка не рабочая.

У меня как-то дошло до того (PIC16xxx), что менял строки описаний функций местами и проект преставал работать. Пришлось срочно переносить на хайтек.

На сегодняшний день пользуюсь этим:

для PIC16 и ниже - HI-TECH v9.60 STD. Версии по старше в некоторых проектах компилят около минуты, когда вышесказанная версия не более 2сек. Кстати XC8 тоже тормозит.

для PIC18 использую MMC18 v3.46, но в больших проектах бывает сложность с банками памяти (*.cof-файл).

ЗЫ. Все никак не попробую CCS, уже установил, но времени нет разобраться...

Share this post


Link to post
Share on other sites

Тоже установлен CCS.Пока не пробовал.Ну я еще не такой профи,мне на первое время хватит микроСи

Share this post


Link to post
Share on other sites

Тоже установлен CCS.Пока не пробовал.Ну я еще не такой профи,мне на первое время хватит микроСи

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By duty
      Привет, участникам форума! Подскажите, пожалуйста, как можно реализовать связь микроконтроллера pic с адресным ключом (ds2405 или ds2408) по 1-wire (на шине будут висеть несколько ключей)  для считывания pio ключа, во входном режиме, т.е на pio поступает сигнал  с магнитоконтактного датчика о срабатывание его или нет.    Datasheet читал, но мало чего понял.  Тестирование произвожу в proteus 8.6
    • By Максим123456789
      делаю диплом, в схеме у меня микроконтроллер PIC16F688 и мне нужно его заменить на ATmega. Не могу найти похожий
    • By SigmA
      Доброго времени суток всем. Для своей новой жены захотелось мне сделать сердечко на atmega8, с кучей эффектов и т.д. Так вот, разные мигалки-переключалки св-диодов я написал, использовал delay. Но мне этого стало мало и я решил подключить шим программный. Отдельно от всей программы шим работает как нужно, так же и переключалки работают отдельно от шим, но вот когда я соединяю это всё воедино то работает только шим и не переходит дальше по коду.Я так понимаю, что таймеры и delay вместе работать не могут? Но если могут, то как?
      #include <mega8.h> #include <delay.h> #define GREEN PORTC.1=PORTC.2=PORTC.3=PORTC.0 unsigned char i, s,; unsigned char green=255; unsigned char green_b; //переменные, для буферизации значений скважности ШИМ unsigned char count; //переменная- счетчик вызовов обработчика прерываний unsigned char temp=1; interrupt [TIM0_OVF] void timer0_ovf_isr(void) { count++; if (count == 0){ //если счетчик переполнился и принял значение 0 green_b = green; GREEN = 1; } if (green_b == count) { GREEN = 0;} } void main(void) { PORTC=0x0F; //конфигурируем порт DDRC=0x0F; TCCR0=0x01; //настраиваем таймер TCNT0=0x00; TIMSK=0x01; //разрешаем генерацию прерывания по переполнению таймера T0 #asm("sei") //глобально разрешаем прерывания while (1) { for (i=0;i<3;i++) { if (temp==1) {if (green < 255) green += 1; else temp = 2;} if (temp==2) {if (green > 0) green -= 1; else temp = 1;} delay_ms(1000); }; s=7; for (i=0;i<=s;i++) { PORTC.0=1; delay_ms(200); PORTC.0=0; PORTC.1=1; delay_ms(200); PORTC.1=0; PORTC.2=1; delay_ms(200); PORTC.2=0; PORTC.3=1; delay_ms(200); PORTC.3=0; } for (i=0;i<=s;i++) { PORTC.3=1; delay_ms(200); PORTC.3=0; PORTC.2=1; delay_ms(200); PORTC.2=0; PORTC.1=1; delay_ms(200); PORTC.1=0; PORTC.0=1; delay_ms(200); PORTC.0=0; } for (i=0;i<=s;i++) { PORTC.3=1; delay_ms(200); PORTC.2=1; delay_ms(200); ; PORTC.1=1; delay_ms(200); PORTC.0=1; delay_ms(200); PORTC.3=0; delay_ms(200); PORTC.2=0; delay_ms(200); PORTC.1=0; delay_ms(200); PORTC.0=0; delay_ms(200); } for (i=0;i<=s;i++) { PORTC.0=1; delay_ms(200); PORTC.1=1; delay_ms(200); ; PORTC.2=1; delay_ms(200); PORTC.3=1; delay_ms(200); PORTC.0=0; delay_ms(200); PORTC.1=0; delay_ms(200); PORTC.2=0; delay_ms(200); PORTC.3=0; delay_ms(200); } for (i=0;i<=s;i++) { PORTC=0x01; delay_ms(200); PORTC=0x02; delay_ms(200); PORTC=0x04; delay_ms(200); PORTC=0x08; delay_ms(200); PORTC=0x09; delay_ms(200); PORTC=0x0A; delay_ms(200); PORTC=0x0C; delay_ms(200); PORTC=0x0D; delay_ms(200); PORTC=0x0E; delay_ms(200); PORTC=0x0F; delay_ms(200); PORTC=0x07; delay_ms(150); PORTC=0x0B; delay_ms(200); PORTC=0x03; delay_ms(250); PORTC=0x05; delay_ms(300); PORTC=0x09; delay_ms(350); PORTC=0x01; delay_ms(400); PORTC=0x02; delay_ms(200); PORTC=0x04; delay_ms(200); PORTC=0x08; delay_ms(200); PORTC=0x00; delay_ms(200); } for (i=0;i<=5;i++) { PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(150); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(150); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(1000); } } }  
    • By Илья Говжеев
      Поделитесь опытом , кто уже пробывал из arduino сделать программатор pic? 

    • By ilmeko
      Доброго времени суток всем.
      Начал экспериментировать с  WiFi модулем ESP8266. Потребовалась необходимость производить запись и чтение в постоянную память данного модуля, для сохранения настроек сети. Но код не отрабатывает должным образом. Имя (ssid) сети содержит нижнее подчеркивание, так вот этот символ не сохраняется в памяти, при последующем чтении его как будто и не было.
      void setup() { //Подключаемся к сети с сахраненными настройками WiFi.begin(EEPROM_read(0,32).c_str(), EEPROM_read(32,64).c_str()); Serial.print("Connecting to "); Serial.println(EEPROM_read(0,32).c_str()); // Проверяем подключение uint8_t i = 0; while (WiFi.status() != WL_CONNECTED && i++ < 20) { Serial.print("."); delay(500); } if (i == 21) { // Если подключение не произошло, то: Serial.println(""); Serial.print("Could not connect to "); Serial.println(EEPROM_read(0,32).c_str()); delay(500); WiFi.disconnect(); // Отключаем WIFI WiFi.mode(WIFI_AP);// Меняем на режим точки доступа WiFi.softAPConfig(apIP, apIP,(255, 255, 255, 0));// Задаем настройки сети WiFi.softAP(_ssidAP, _passwordAP);// Включаем WIFI в режиме точки доступа Serial.println(""); Serial.print("AP IP address: "); Serial.println(WiFi.softAPIP()); delay(500); char* _ssid = "K_W"; //Переменная для хронения ssid char* _password = "1234"; //Переменная для хронения password EEPROM_write(_ssid, 0); //Пишем ssid в eeprom EEPROM_write(_password, 32); //Пишем password в eeprom delay(500); Serial.println(EEPROM_read(0, 32)); Serial.println(EEPROM_read(32, 64)); } } void EEPROM_write(String buffer, int N) //Запись в eeprom { EEPROM.begin(512); delay(10); for (int L = 0; L < 32; ++L) { EEPROM.write(N + L, buffer[L]); } EEPROM.commit(); } String EEPROM_read (int min, int max) //Чтение eeprom { EEPROM.begin(512); delay(10); String buffer; for (int L = min; L < max; ++L) if (isAlphaNumeric(EEPROM.read(L))) buffer += char(EEPROM.read(L)); return buffer; } Подскажите, что я делаю не так?  Весь код отрабатывет должным образом, кроме записи и/или чтения этого злаполучного нижнего подчеркивания(K_W)
      Ответ в порт после перезагрузки:
      Connecting to KW ..................... Could not connect to KW AP IP address: 192.168.4.1 KW 1234  
      Сменить настройки в роутере не выход, хотя и проще.
  • Сообщения

    • заменил затворные резисторы - на 18 Ом - защита(накручена) перестала срабатывать -но-дико греются транзисторы - похоже нужно взять оригиналы транзисторы-и не выносить себе мозг) позже попробую воспользоватся решением китафончика - ради интереса 
    • Сегодня провёл эксперимент. Вчера глючащий при тесте комплект занёс в помещение и запустил на проверку. Почти час отстоял включенный - настройка в помещении не сбивается. Вопрос к знатокам - перепад температуры - на улице сейчас +5-7 тепла может настолько сбивать настройку прибора? Где рыть?
    • Если самому принципу ,да,но вы должны выполнить условие-входную часть по току  ,трансформатор, полевики,шунт под ваш ток и ещё данные двигателя рабочие,а пусковые ?и всё это потом воплотить в плате Почему на этот иип пал выбор?
    • Как богат русский язык....а если это всё обложить и послать и голову не забивать,суть то останется одной
    • Ладно, продолжим. Вам знакомы из курса обучения ТОЭ такие обозначения: Задачки решали? Заметьте, здесь нет стабилизатора тока.   П.С. Прошу модераторов почистить тему от этой никому не нужной полемики.
    • не обратил сразу внимание - щелкает зашита - накрутил подстроечник до 2 кОм чтоб запустить - в итоге нагрев транзисторов - пошел методом исключения - дроссель - диоды - в итоге накинул нагрузочный резистор на обмотку - все равно щелкает зашита (похоже шунт можно убавить до 0.01 Ома) не поставил снабер-может повлиять ? сейчас после транзисторов - защитные диоды -конденсаторы -трансформатор - и на вторичке резистор  почему - срабатывала лампа - не понятно
    • Нет, мы с Вами живём в одном и том же мире. Потому как в данном случае существуют только два термина: voltage source и current source. А всё остальное - лингвистическое словоблудие.
×
×
  • Create New...