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

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

Компилятор 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
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

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

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 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  
      Сменить настройки в роутере не выход, хотя и проще.
    • By Терентенко Андрей
      Добрый день! Имею следующую ситуацию : на базе  PIC16f676  создал приблуду для "управления нештатной магнитолой с руля", а именно  сигнал с руля это 4,8в и в зависимости от нажатой кнопки падает дискретной до 0.8в мк с помощью АЦП отслеживает  на магнитолу паралельно кнопкам кинул оптрони которыми управляет МК. Питание от LM с фильтрующими конденсаторами. При тестових прогонах всё работало как надо (программно реализовано защиту от дребезга аж на 0.1 сек в поисках решений) и в машине  и от штатного БП . Но заметил закономерность сейчас на улице - 2 и при первом запуске минут 5, МК "шумит" несоотвецтвует нажатия на руле кнопке  на магнитоле ! Сигнал с руля смотрел стабильный без дребезга , притом когда тестил вынес магнитолу подключил всё работало гуд но пока устанавливал закручивал она остыла и начинались эти тацы . Кто что подскажет? МК или ЛМ могут так реагировать на температуру ? Прошу прощения у модераторов за повторение теми (может в этом разделе будет актуальней)
    • By voltex
      Всем привет! Подскажите, пожалуйста, как правильно считать данные с внешней eeprom по шине spi, в данном случае 25LC256.
      Написал код ссылаясь на даташит. Собрал схему в протеусе, подключил spi отладчик и вот что получил в итоге. Так же не могу проверить получается записать данные в память или нет. Весь код прикрепил.
       

      main.c
×
×
  • Create New...