Не работает AN0 AN2 AN3 в контролере pic16f876a
|
|
Ethno |
Дата: Вт, 12.11.2013, 16:11 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 11.12.2012
Статус:
Offline
|
История такая подвум первым каналам измеряется напряжение батареи и выходное напряжение на AN2 датчик температуры. в Протеусе все работает нормально. Но в железе не работает AN2 датчик рабочий проверял LM35. Что может быть? Вот код. Device =16F876A Xtal=10 Declare Adin_Res = 10 Declare adin_tag = FRC Declare Adin_Stime = 50
Declare LCD_Type ALPHA Declare LCD_DTPin PORTB.4 Declare LCD_ENPin PORTB.3 Declare LCD_RSPin PORTB.2 Declare LCD_Interface 4 Declare LCD_CommandUs 2000 Declare LCD_DataUs 50 Declare LCD_Lines 2
TRISA = %00000111 ADCON0 =%11000101 ADCON1 = %10000000
Dim var1 As Word Dim var2 As Word Dim var3 As Word
Dim Bar_Val As Byte Dim Bars As Byte Dim Bars1 As Byte Dim Balance As Byte Dim Balf As Byte
Symbol B_Wdth = 12 Symbol MaxBar = B_Wdth * 3 Symbol FullBar = 3 Symbol BaseBar = 0 Symbol CGRAM = 64
Symbol PIN = PORTC.1
Print At 1, 1, "TEST"
Sound PIN, [50,60,70,20,85,120,83,40,70,20,50,20,70,20,90,120,90,20,98,160] DelayMS 1000 Cls
Again: ADCIN 0, var1 DelayUS 20 ADCIN 1, var2 DelayUS 20 ADCIN 2, var3 DelayUS 20
var3 = var3 /2.0 If var3 > 24 Then var3 = var3 - 1 If var2 /63.95 <= 10.4 Then Sound PIN, [75, 10]
Print At 1, 1, $9B Print At 1,7, "10mA" Print At 1, 12, $ED Print At 2,13, Dec1 var1 /103.33 Print At 1,2, Dec1 var2 /63.95 Print At 1, 13, Dec2 var3, $99 , "C", $12 Print $FE,CGRAM,Rep $0\8,$0,Rep $10\6,$0,$0,Rep $14\6,$0,$0,Rep $15\6 GoTo Over_Bargraph
BarGraph:
Declare Warnings = Off Declare Byte_Math = On
If Bar_Val < MaxBar Then Bars1 = Bar_Val Else Bars1 = MaxBar EndIf Bars = Bars1 /3 Balance = Bars1 //3
If Balance < 1 Then Balf = Balance Else Balf = 1 EndIf
Print At 2,1,Rep FullBar\Bars,Rep (Balance + BaseBar)\Balf,Rep " " \B_Wdth - (Bars + Balf) Return Declare Byte_Math = Off Declare Warnings = On
Over_Bargraph: Bar_Val = var1/26 GoSub BarGraph GoTo Again
Сообщение отредактировал
Ethno - Вт, 12.11.2013, 16:13
|
|
|
|
shaman |
Дата: Вт, 12.11.2013, 16:43 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
День добрый , сразу что бросилось в глаза это вот кусок кода Again: ADCIN 0 ????? ADCIN 1 ????? ADCIN 2 ????? Это команда ADCIN на PicBasicPro в Proton это команда ADIn
|
|
|
|
Ethno |
Дата: Вт, 12.11.2013, 16:51 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 11.12.2012
Статус:
Offline
|
Я уже делал var1 = ADIn 0 var2 = ADIn 1 var3 = ADIn 2 все равно не работает в железе канал var3 = ADIn 2
|
|
|
|
anatol |
Дата: Вт, 12.11.2013, 18:17 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
вы в документацию заглядываете Цитата bit 5-3 CHS2:CHS0: Analog Channel Select bits 000 = Channel 0 (AN0) 001 = Channel 1 (AN1) 010 = Channel 2 (AN2) 011 = Channel 3 (AN3) 100 = Channel 4 (AN4) 101 = Channel 5 (AN5) 110 = Channel 6 (AN6) 111 = Channel 7 (AN7) или с шашкой наголо. здесь есть на родной мове. http://www.microchip.ru/lit/?mid=1x0 и выбрав один файл http://www.microchip.ru/files/d-sheets-rus/pic16_23.pdf на станице 4 рисунок 23-1 видим что каналы опрашиваются по очереди и почитав над рисунком поймем что неправильно будет если указать ADCON0 = %11000101 один раз. Т.е. мы на измерение выбираем нулевой канал, а считать информацию пытаемся по всем каналам. Чтобы заработали другие каналы необходимо задать ADCON0 = %11000101или ADCON0 = %11001101 или ADCON0 = %11010101 перед началом нужного измерения по нужному каналу и еще дать время на измерение и перобразование. Протеус - симулятор и модель или упрощенная или недоработанная.
|
|
|
|
Ethno |
Дата: Вт, 12.11.2013, 18:29 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 11.12.2012
Статус:
Offline
|
Это должно примерно выглядеть так?
ADCON0 = %11000101 var1 = ADIn 0 DelayUS 20 ADCON0 = %11001101 var2 = ADIn 1 DelayUS 20 ADCON0 = %11010101 var3 = ADIn 2 DelayUS 20
|
|
|
|
dimitriy-bc |
Дата: Вт, 12.11.2013, 20:46 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Ethno, здравствуйте.
ADCON0 =%11000101 отдельно прописывать не надо.
Часть его функций Вы задали в начале программы Declare Adin_Res = 10 Declare adin_tag = FRC ;ADCON0 =%11хххххх Declare Adin_Stime = 50
Оставшаяся часть управляется командой ADIn var1 = ADIn 0 ;ADCON0 =%хх000ххх var2 = ADIn 1 ;ADCON0 =%хх001ххх var3 = ADIn 2 ;ADCON0 =%хх010ххх
И еще, выходное сопротивление источника напряжения не должно превышать 10К. Ну и можно увеличить значение Declare Adin_Stime = 50.
Сообщение отредактировал
dimitriy-bc - Вт, 12.11.2013, 23:47
|
|
|
|
anatol |
Дата: Ср, 13.11.2013, 01:36 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
dimitriy-bc, а разница писать команды в строчку или столбиком есть?
|
|
|
|
dimitriy-bc |
Дата: Ср, 13.11.2013, 08:49 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
anatol, я конечно дико извеняюсь!!! Вы про что?
|
|
|
|
anatol |
Дата: Ср, 13.11.2013, 10:10 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Про это Код [b]var1 = ADIn 0 [b];ADCON0 =%хх[b]000ххх Код var1 = ADIn 0 ................... ADCON0 = %11001101
|
|
|
|
dimitriy-bc |
Дата: Ср, 13.11.2013, 18:33 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
anatol, давайте сначала определимся, очки есть или их нет. В первом варианте перед ;ADCON0 стоит точка с запятой. Т.е. комментарий. Во втором точка с запятой отсутствуют. Значит призывает протон к конкретным действиям.
Сообщение отредактировал
dimitriy-bc - Ср, 13.11.2013, 20:13
|
|
|
|
anatol |
Дата: Ср, 13.11.2013, 21:04 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Ой!
Очки есть - зрения нет...
Сообщение отредактировал
anatol - Ср, 13.11.2013, 21:05
|
|
|
|
dimitriy-bc |
Дата: Ср, 13.11.2013, 22:33 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Я тоже заметил, что с годами руки все короче и короче...
|
|
|
|