Отговори на тема  [ 64 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5
Проблем с вградения еепром на пиковете? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Мда
Tisho написа:
the_real_maniac написа:
"Не проверяваше дали записа в еепрома е завършил и омазваше ситуацията."

Имаш впредвид ,че не е проверявал дали е свършил записа на байта и започва процедура по записване на следващият ?


Аха. Точно. :wink:

Ми да кажа и аз една дума , не е кой знае какво забавяне ако оставиш само записа да се прави докато не свърши ,все пак ако е само във вградения еепром няма да отнесе кой знае колкоо време .
Поне при мене никога не е давало дефект, дори преди година правих един проект като си гаси тока на контролера ,от оставащото време на разряд на 1000мкф след 7805, успяваше да запише 20 байта със всички нужни неща за да продължи на другия ден след като го включиш от там до където е било :)


Вто Авг 08, 2006 8:47 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Авг 19, 2005 11:38 am
Мнения: 978
Местоположение: Europe -> BG
Мнение 
Колко фарада ? "мкф" = mkF 8O ?

Относно времето за запис. Помня че бяхме разисквали колко е времето и помня, че стойността беше м/у 3-5ms.
Така че наистина зависи колко имаш да записваш и какво имаш да правиш после с тези стойности.

Румен не знам колко байта записва, но така както го направиш значи му отнема някъде около
20b * 3-5ms * 3(места) = 180-300ms само записа или прочитането, а румен прави и сверяване 1 с 2 , 1 с 3 и 2 с 3 и прави заключение кое е правилн, кое не , после следва запис - опресняване с (намерените) правилни стойности ?

Наистина в един момент когато цикъла на mcu-то е 1us при 4Mhz като чуя едно време от ms и почва да ми се вижда много :-)

_________________
един факт :-)
Съжалявам , че исках да помогна ...


Вто Авг 08, 2006 8:55 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение МХм
the_real_maniac написа:
Колко фарада ? "мкф" = mkF 8O ?

Относно времето за запис. Помня че бяхме разисквали колко е времето и помня, че стойността беше м/у 3-5ms.
Така че наистина зависи колко имаш да записваш и какво имаш да правиш после с тези стойности.

Румен не знам колко байта записва, но така както го направиш значи му отнема някъде около
20b * 3-5ms * 3(места) = 180-300ms само записа или прочитането, а румен прави и сверяване 1 с 2 , 1 с 3 и 2 с 3 и прави заключение кое е правилн, кое не , после следва запис - опресняване с (намерените) правилни стойности ?

Наистина в един момент когато цикъла на mcu-то е 1us при 4Mhz като чуя едно време от ms и почва да ми се вижда много :-)

Аз мисля че по скоро е нужна проверка когато се записва върху стара стойност , така освен че ще се пипка по малко ако записаното е като това което ще се записва , така хем ще спестиш време нужно за запис което е доста повече от четенето, хем цикъла на брой презаписи на еепрома се пести :idea:
Аз затова винаги си проверявам на това място какво има записано и ако е същото не го записвам .


Вто Авг 08, 2006 9:11 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Сря Дек 06, 2006 9:05 pm
Мнения: 92
Местоположение: София
Мнение Е няма начин
:x Два дни се боря с тая пуста памет на 16F84a на 20MgH и неможах да я преборя!
Код:


#include <16F84A.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT
#use delay(clock=20000000)

#define eep1 0x01      



int temp1;
int1 i=0;

void eepromwrite(){
            i=0;
            write_eeprom(eep1,temp1);
            delay_ms(2000);
            }

   
void button_check(){                

if (!input(PIN_B5))                  //but_up
  temp1=temp1+1;
if (!input(PIN_B4))                  //but_down
   temp1=temp1-1;
if (!input(PIN_B6)){
   temp1=read_eeprom(eep1);           //but_ot eeprom
   }
if (!input(PIN_B7))
   i=1;
}


void main()
{
    set_tris_A(0b00000000);
    set_tris_B(0b11111111);
   port_b_pullups(1);
       
while (TRUE){
         {
         OUTPUT_TOGGLE(PIN_A4);
         button_check();
         delay_ms(50);
         if (i==1) {
         eepromwrite();
         }
         delay_ms(temp1);
         }   
      }
}




и на ASM
Код:
void eepromwrite(){
            i=0;
            #asm
               BCF 0x03, 5 //status
               MOVLW 0x01
               MOVWF 0x09 //eeadr
               MOVF temp1, W
               MOVWF 0x08 //eedata
               BCF   0x0B, 7 //intcon GIE
               BSF 0x03, 5   //status
               BSF 0x88, 2 //eecon1
               MOVLW 0x55
               MOVWF 0x89   //eecon2
               MOVLW 0xAA
               MOVWF 0x89
               BSF 0x88, 1
      ChkWR:       BTFSC 0x88, 1
               GOTO ChkWR
               BSF   0x0B, 7 //intcon GIE
               BCF 0x03, 5
            #endasm
     
           
           
}


Захранването е 12V от акумулатор през LM2576 с кондензатори, индуктивна бубина - по схемата на LMa - всичко както си трябва. Изход 5.00V пробвах и на 5.25. Е така и не успях да направя запис в EEPROMa. Сменях и проца - Уви - в клетката основно FF :( :x
EDIT" Тази сутрин пробвах и с допълнителен кондезатор 100нанофарада, и с 100микро.. и с 10. Около кварца всичко е наред. МСLR през 10k на +5. Платката е 4 бутона и един диод. с два бутона променям "temp1", с другите два пиша и чета от еепрома в темпа. Огромнотто закъснение delay_ms(2000); и използването на променливата "i" е да избегна притрепването на контакта и да съм сигурен, че поне е почнало писането в ЕЕПРОМА. Диода увеличава и намаля честотата на мигане, а като почне да пише, спира да мига за 2 секунди. Четенето също мисля, че не прави проблем. Като цяло при натискане бутона за запис, винаги спира да мига - понякога записва нещо, но много рядко. Също така пробвах с проверка и ако не са еднакви променливата и еепрома, да запише отново, но нямаше резултат - непрекъснато беше в режим запис нонстоп. След това смених пика с друг, като него 16ф84а. Четох ЕЕРАТАТА -нищо. Моля помогнете ми и аз да направя първия си кадърен запис в ЕЕПРОМА. Мисля че два дни са достатъчно наказание за всеки :) За мен вариантите са 4!
1. Кофти изпълнена платка - ако трябва ще я снимам!
2. Кофти програма - нямам опит и затова не мога да кажа.
3. Кофти захранване нещо.. но не мисля.
4. Бъгави ПИКове. Съмнява ме..ама :?
"

"едит" FUSES XT, а май трябва да е HS
XT for <8Mhz, HS for >8Mhz
Дали е от това!? Ще пиша като пробвам.

последен едит - реших проблема :idea: :idea: :idea: подтoчка 7 :idea: :idea: :idea:


Нед Сеп 02, 2007 8:41 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 64 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни