Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
vovken1997
15 / 13 / 1
Регистрация: 08.07.2012
Сообщений: 190
#1

Частота внутреннего кварца PIC12F629

03.12.2013, 21:33. Просмотров 1588. Ответов 10
Метки нет (Все метки)

Всем привет!
Пытаюсь с МК отправить в компьютер байт информации. Отправляю 30, получаю D9. Работаю на скорости в 1200 бод. Мне кажется что у него не правильная внутренняя частота. В даташите написано 4, а там фиг поймёшь что. Без осциллографа не разберёшься...
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "p12F629.inc"
__CONFIG(0x3184)
 
COUNT EQU 20h
COUNT1 EQU COUNT+1
COUNT2 EQU COUNT+2
COUNT3 EQU COUNT+3
      
           MOVLW 0xFF
           MOVWF CMCON  
    
           BSF STATUS, RP0
         
;           clrf ANSEL
           BCF GPIO,5;Port GPIO1 is output
           BCF STATUS, RP0
           
           
          BSF GPIO,5 ; SET Port GPIO1 
          CALL delay
          CALL delay
 
RUN:      BCF GPIO,5  ;Send start bit
           CALL delay_1
 
   BSF GPIO,5  ;Send start bit
           CALL delay_1
   BCF GPIO,5  ;Send start bit
           CALL delay_1
   BCF GPIO,5  ;Send start bit
           CALL delay_1
   BCF GPIO,5  ;Send start bit
           CALL delay_1
   BSF GPIO,5  ;Send start bit
           CALL delay_1
   BSF GPIO,5  ;Send start bit
           CALL delay_1
   BCF GPIO,5  ;Send start bit
           CALL delay_1
   BCF GPIO,5  ;Send start bit
           CALL delay_1
 
          BSF GPIO,5 ; SET Port GPIO1 
          CALL delay
          CALL delay
 
 
           GOTO RUN
   
         
 
 
  
;Modules
delay_1:    MOVLW 0xCF                ;
        MOVWF COUNT1     ;
LOOPZ11:NOP
       
        DECFSZ COUNT1,F  ;
        GOTO LOOPZ11          ;
   return
;============================
 
 
delay:  MOVLW 0x0A                ;
        MOVWF COUNT1     ;
LOOPZ1: CALL DELAY2           ;
                    DECFSZ COUNT1,F  ;
        GOTO LOOPZ1          ;
        RETURN                     ;
DELAY2:       MOVLW 0FF              ;                               Подпрограмма
        MOVWF COUNT2     ;
LOOPZ2:        CALL DELAY3          ;
                    DECFSZ COUNT2,F  ;                                    задержки
        GOTO LOOPZ2          ;
        RETURN                     ;    
DELAY3: MOVLW 0FF              ;  
        MOVWF COUNT3     ;
LOOPZ3:        DECFSZ COUNT3,F  ;
        GOTO LOOPZ3          ;
        RETURN                                  
  END
Delay_1 в эмуляторе MPLAB показывает задержку 833 uSecs.
0
Миниатюры
Частота внутреннего кварца PIC12F629  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 21:33
Ответы с готовыми решениями:

Программатор для PIC12F629
Привет))) Есть схемка простенького программатора, на котором можно...

extra-pic и pic12f629
попросили помочь прошить сабжевый контроллер, программатор дали. сейчас...

Реверсинг прошивки PIC12F629
Добрый вечер. Решил собрать миниробота на PIC12F629. Соответственно встал...

PIC12F629 режим SLEEP
Есть устройство, используется мк PIC12F629, проблема с выводом из SLEEP режима,...

Прошивка ISP и частота кварца.
Что-то наткнулся я на невкусную зависимость - чем больше кварц, тем меньше...

10
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
03.12.2013, 23:33 #2
В даташите все написано, есть даже график частоты от температуры, также есть калибровочная константа. А самое главное что не рекомендуется использовать передачу данных по протоколу рс232 при тактировании от внутреннего генератора, он построен на резисторе и конденсаторе.
Проверяйте обмен в протеусе, в нем не только осциллограф есть, но еще куча всяких прибамбасов.
1
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 913
04.12.2013, 20:56 #3
Цитата Сообщение от vovken1997 Посмотреть сообщение
Пытаюсь с МК отправить в компьютер байт информации. Отправляю 30, получаю D9.
Где вы посылаете 30? В вашем листинге я этого не вижу. Я вижу что вы отправляете последовательность 1-0-0-0-1-1-0-0. Поскольку в RS232 отправляется младшим битом вперед, это будет байт 00110001b. А D9=11011001. Что вполне похоже на вашу посылку с учетом что у вас уплыла частота вверх, а старшие биты забились единицами из паузы от посте стоп-бита.
[/QUOTE]
1
vovken1997
15 / 13 / 1
Регистрация: 08.07.2012
Сообщений: 190
07.12.2013, 23:20  [ТС] #4
Тема осталась не решена. Константа была не затёрта, я не туда посмотрел в начале, но на всякий случай я ещё раз её подобрал при помощи фирменного софта. Код подправил, теперь 0x30 шлёт:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "p12F629.inc"
__CONFIG(0x3184)
 
COUNT EQU 20h
COUNT1 EQU COUNT+1
COUNT2 EQU COUNT+2
COUNT3 EQU COUNT+3
      
           MOVLW 0xFF
           MOVWF CMCON  
    
           BSF STATUS, RP0
         
;           clrf ANSEL
           BCF GPIO,5;Port GPIO1 is output
           BCF STATUS, RP0
           
           
          BSF GPIO,5 ; SET Port GPIO1 
          CALL delay
          CALL delay
 
RUN:      BCF GPIO,5  ;Send start bit
           CALL delay_1
 
   BCF GPIO,5  ;Send start bit
           CALL delay_1
   BCF GPIO,5  ;Send start bit
           CALL delay_1
   BCF GPIO,5  ;Send start bit
           CALL delay_1
   BCF GPIO,5  ;Send start bit
           CALL delay_1
   BSF GPIO,5  ;Send start bit
           CALL delay_1
   BSF GPIO,5  ;Send start bit
           CALL delay_1
   BCF GPIO,5  ;Send start bit
           CALL delay_1
   BCF GPIO,5  ;Send start bit
           CALL delay_1
 
          BSF GPIO,5 ; SET Port GPIO1 
          CALL delay
          CALL delay
 
 
           GOTO RUN
   
         
 
 
  
;Modules
delay_1:    MOVLW 0xCF                ;
        MOVWF COUNT1     ;
LOOPZ11:NOP
       
        DECFSZ COUNT1,F  ;
        GOTO LOOPZ11          ;
   return
;============================
 
 
delay:  MOVLW 0x0A                ;
        MOVWF COUNT1     ;
LOOPZ1: CALL DELAY2           ;
                    DECFSZ COUNT1,F  ;
        GOTO LOOPZ1          ;
        RETURN                     ;
DELAY2:       MOVLW 0FF              ;                               Подпрограмма
        MOVWF COUNT2     ;
LOOPZ2:        CALL DELAY3          ;
                    DECFSZ COUNT2,F  ;                                    задержки
        GOTO LOOPZ2          ;
        RETURN                     ;    
DELAY3: MOVLW 0FF              ;  
        MOVWF COUNT3     ;
LOOPZ3:        DECFSZ COUNT3,F  ;
        GOTO LOOPZ3          ;
        RETURN                                  
  END
Но я принимаю теперь D8. Загрузил прошивку в Протеус и посмотрел на осциллографе, вроде всё чётко, но на деле не работает...

Ребят, посмотрите пожалуйста, может я что-то упустил...
0
Миниатюры
Частота внутреннего кварца PIC12F629   Частота внутреннего кварца PIC12F629   Частота внутреннего кварца PIC12F629  

korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
07.12.2013, 23:24 #5
Частота в протеусе какая стоит? Еще в протеусе есть специальные штуки (DIGITAL ANALYSIS) для записи сигнала, они лучще чем осциллограф.
Киньте ваш проект в протеусе я гляну.
1
vovken1997
15 / 13 / 1
Регистрация: 08.07.2012
Сообщений: 190
07.12.2013, 23:29  [ТС] #6
Стоит 4MHz.
Да, питание на МК не 5В, а 3.4В
Смотрите вложения
0
Миниатюры
Частота внутреннего кварца PIC12F629  
Вложения
Тип файла: rar 1.rar (10.4 Кб, 3 просмотров)
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
07.12.2013, 23:45 #7
По осциллограмме у вас что-то не то. Нет стоп бита, длинна байта не соответствует 10 временным интервалам 0,83мс.
В приложении пример пакета данных переданных на скорости 9600. Очень показательна передача 0х00.
1
Миниатюры
Частота внутреннего кварца PIC12F629  
vovken1997
15 / 13 / 1
Регистрация: 08.07.2012
Сообщений: 190
07.12.2013, 23:49  [ТС] #8
Я работаю на скорости в 1200 БОД!!!!
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
08.12.2013, 00:40 #9
Сори! Все у вас правильно, проверил в протеусе временные интервалы и протестировал на virtual terminal. Смотрите железо. Получается что мк передает на большей скорости чем надо. У вас же напряжение занижено, а это значит частота выше примерно 5,5МГц. Попробуйте проверить: выведите на какой нибудь порт секундные интервалы и сравните их с эталоном, 100% опередят.

Или попробуйте пересчитать интервалы задержки для частоты 5,5..5,7МГц.
1
vovken1997
15 / 13 / 1
Регистрация: 08.07.2012
Сообщений: 190
08.12.2013, 01:30  [ТС] #10
А если перемычку на 5В воткнуть???
Спасибо за помощь!!!
Завтра обязательно посмотрю!
0
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 913
08.12.2013, 22:37 #11
Цитата Сообщение от vovken1997 Посмотреть сообщение
А если перемычку на 5В воткнуть???
Я бы не советовал. Лучше поиграться с задержками. Всего то делов поменять константу в подпрограмме delay_1.
И уж точно ничего так не спалишь.
1
08.12.2013, 22:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 22:37

Частота внутреннего генератора attiny2313
Собрал 3 пробных платки - всё одинаковое - индикатор, тинька, пара джамперов,...

Нужно немного изменить программу на asm для PIC микроконтроллера (PIC12F629)
Помогите пожалуйста, нужно немного изменить программу для этой схемы (код на...

Подключение кварца к PIC16F1824
Здравствуйте! Читаю даташит по данному мк и в нём написано, что надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru