Воскресенье, 11.12.2016, 09:59
| RSS
Главная | Программирование микроконтроллеров - Страница 5 - Форум
Защита, контроль, управление
Форма входа
Логин:
Пароль:
[ Новые сообщения · Участники · Правила форума · Поиск · RSS · Чат ]
Страница 5 из 5«12345
Форум » ФОРУМ » Общие вопросы » Программирование микроконтроллеров
Программирование микроконтроллеров


ketivДата: Воскресенье, 22.05.2016, 18:41 | Сообщение # 41
Группа: Пользователи
Сообщений: 15
Статус: Offline
Спасибо. Вот это я тупанул

Добавлено (22.05.2016, 18:41)
---------------------------------------------
Замучила меня эта EEPROM,
в протеусе работает без проблем а в железе нет, например подаю питания на бортавик перехожу на тахометр должно записать .5
а записывает через раз, когда не записывает всегда FF
вот кусок кода добавил даже проверку 

TAXO1  BSF            STATUS,RP1
            BCF            STATUS,RP0   ;ВЫБРАТЬ БАНК 2
            MOVLW       .0        
            MOVWF        Reg_3
            MOVLW       .5        
            MOVWF        Reg_4
            CALL           Write             ; ЗАПИСАТЬ   
TAXO    CALL           Read             ; ПРОЧИТАТЬ
            SUBLW       .5      
            BTFSS        STATUS,Z
            GOTO         TAXO1
            BCF            STATUS,RP1   ;Выбор банка 0
            BCF            STATUS,RP0

 
AdminДата: Воскресенье, 22.05.2016, 18:47 | Сообщение # 42
Admin
Группа: Администраторы
Сообщений: 3201
Статус: Offline
А регистры Reg_3 и Reg_4 у Вас находятся во втором банке?
Если нет, то для чего Вы тут выбираете второй банк???

BSF STATUS,RP1
BCF STATUS,RP0 ;ВЫБРАТЬ БАНК 2
 
ketivДата: Воскресенье, 22.05.2016, 18:49 | Сообщение # 43
Группа: Пользователи
Сообщений: 15
Статус: Offline
Да втором банке,
 


AdminДата: Воскресенье, 22.05.2016, 19:00 | Сообщение # 44
Admin
Группа: Администраторы
Сообщений: 3201
Статус: Offline
А зачем? Что бы было меньше переключений банков?
Возможно, где-то упущено переключение в программе. Я бы посоветовал перенести их в нулевой банк, свободных регистров там еще предостаточно.
 
ketivДата: Воскресенье, 05.06.2016, 10:12 | Сообщение # 45
Группа: Пользователи
Сообщений: 15
Статус: Offline
Цитата Admin ()
А зачем? Что бы было меньше переключений банков?
я их туда прописал когда боролся с записью так они там и остались
Цитата Admin ()
Я бы посоветовал перенести их в нулевой банк
буду пробовать

Добавлено (23.05.2016, 17:22)
---------------------------------------------
Перенес их в нулевой банк и все заработало, спасибо

Добавлено (05.06.2016, 10:12)
---------------------------------------------
Поездил я немного и решил добавить функцию замены масла. И снова столкнулся с проблемой записи в EEPROM. Программа перевалила за нулевую страницу, сначала подумал из-за этого и не пишет в EEPROM, поменял местами куски программы, то есть перенес  функцию замены масла на нулевую
страницу, и все ровно не хочет записывать, а режимы пишет нормально, регистры прописаны в нулевом банке,

        MOVLW       .2        
        MOVWF       Reg_3
        MOVF          Reg_5,W 
        MOVWF       Reg_4
        CALL           Write                 
        BCF            STATUS,RP1   ;Выбор банка 0
        BCF            STATUS,RP0

 
AdminДата: Воскресенье, 05.06.2016, 13:51 | Сообщение # 46
Admin
Группа: Администраторы
Сообщений: 3201
Статус: Offline
Если объем программы вылетает за нулевую страницу (т.е за адрес 0х800), то необходимо некоторые подпрограммы вынести в первый банк и перед вызовом этих подпрограмм указывать номер страницы. Структура программы получится примерно такой:

ORG 0x00: нулевая страница
.............
.............
BSF PCLATH,3 ; вызов подпрограммы из 1 страницы памяти
CALL SUBPROGRAMM

ORG 0x800: первая страница

SUBPROGRAMM
.............
.............
BСF PCLATH,3 ; возврат из подпрограммы на нулевую страницы памяти
RETURN

Но имейте ввиду, если есть вызовы подпрограмм из подпрограммы (допустим из SUBPROGRAMM вызываем дополнительные подпрограммы), то это необходимо делать или в пределах одной страницы или переключать страницы аналогично приведенному выше примеру.
 
ketivДата: Вторник, 21.06.2016, 20:01 | Сообщение # 47
Группа: Пользователи
Сообщений: 15
Статус: Offline
Именно так я и делаю, сейчас функция замены масла полностью на нулевой странице вместе с подпрограммой,

Добавлено (21.06.2016, 20:01)
---------------------------------------------
Здравствуйте , мне нужно вывести средние значения, а как длить программно не могу понять, может у вас есть кусок кода как пример или программка

 
Форум » ФОРУМ » Общие вопросы » Программирование микроконтроллеров
Страница 5 из 5«12345
Поиск:



T2M © 2016
Сайт управляется системой uCoz