Страница 1 из 1

MiniPOV

Добавлено: Пт июл 19, 2013 16:49:53
Asche
Доброго времени суток, уважаемые форумчане.
Небольшая предыстория: разбирая хлам дома, нашел собранный мной когда-то термометр. Датчика видно не было, да и моя память мне подсказывала, что этот термометр у меня не заработал. Сиё чудо содержало микроконтроллер PIC16F630. Рука не поднялась эту микросхемку просто выкинуть. Начались поиски куда бы прикошачить эту микруху чтобы не лежала и не мозолила мне глаза. Долгие поики (не очень то долгие) привели меня на сайт http://www.ladyada.net/make/minipov/download.html и было решено сделать эту ерунду. Скачал схему, глянул, начертил свою плату (не понравилось, что автор предлагает двусторонний вариант). Решил "написать" свою картинку - изучил что да как, скачал что надо. Залил это дело в микросхему (программатор Экстра пик + преобразователь USB-COM). Включил - не работает, что не удивительно (мало ли: кривые руки, не знание языков программирования и компиляции программ). Решил залить одну из предложенных на том сайте прошивок. Результат всё так же нулевой. При указании HEX-файла программа (PICPgm) ругается на отсутствие битов конфигурации и предлагает "натыкать" их вручную. Глянул - вроде всё нормально. Но всё равно не работает это устройство.
Так вот: это у меня кривые руки, либо это обычный развод в интернете? Подскажите пожалуйста, уважаемые Знатоки.

Re: MiniPOV

Добавлено: Сб июл 20, 2013 10:47:45
otest
Вместо всей трогательной истории нужно выкладывать схему, прошивку и листинг программы (если он есть).
(PICPgm) ругается на отсутствие битов конфигурации
Возьми другую программу.
Биты конфигурации в файле есть.

Re: MiniPOV

Добавлено: Сб июл 20, 2013 12:18:41
Asche
Прошивал так же ICProg. Результат нулевой.
Программа на ассемблере:

title "MiniPOV"
LIST P=16F630, F=INHX8M
#include <p16f630.inc>

__CONFIG _INTRC_OSC_NOCLKOUT & _CP_OFF & _MCLRE_OFF & _WDT_OFF

XTAL EQU 4000000 ; internal crystal @ 4MHz
IMAGESIZE EQU 0x10

; backup spots in SRAM for registers during interrupt handling
w_bak equ 0x20
status_bak equ 0x21
fsr_bak equ 0x22
counter equ 0x23
line equ 0x24
pixout equ 0x25

ORG 0x0
goto Main
ORG 0x4
; interrupt handler
; save status, w, & fsr
movwf w_bak
swapf STATUS, W
clrf STATUS
movwf status_bak
movfw FSR
movwf fsr_bak


int_2
btfss PIR1, TMR1IF ; check if timer 1 overflowed
goto End_IntHandle ; if not, finish up interrupt handling
Timer1
bcf PIR1, TMR1IF ; clear timer1 interrupt bit
movfw counter
call EC; look up the value in the character map
movwf line
clrf pixout

btfsc line, 0
bsf pixout, 3

btfsc line, 1
bsf pixout, 4

btfsc line, 2
bsf pixout, 5

btfsc line, 3
bsf pixout, 2

btfsc line, 4
bsf pixout, 1

btfsc line, 5
bsf pixout, 0

movfw pixout
movwf PORTC ; the pixels are in w

clrf pixout
btfsc line, 6
bsf pixout, 2

btfsc line, 7
bsf pixout, 5

movfw pixout
movwf PORTA

incf counter, 1
movlw IMAGESIZE
subwf counter, 0
btfsc STATUS, Z ; if counter == 10
clrf counter ; counter = 0

movlw 0xAA
movwf TMR1L
movlw 0xF0
movwf TMR1H

Timer1_end

End_IntHandle
movfw fsr_bak ; restore all the backed up registers
movwf FSR
swapf status_bak, w
movwf STATUS
swapf w_bak, 1
swapf w_bak, W
retfie ; return from interrupt


Main
CLRF PORTA ; drop all the port A lines low
MOVLW 0x1 ; set_tris_a(0b000001)
BSF 0x03,RP0
MOVWF TRISA
BCF 0x03,RP0

CLRF PORTC
BSF 0x03,RP0
CLRF TRISC ; Port C is all outputs!
BCF 0x03,RP0

; initialize port c with something :P
movlw 0xA0
movwf PORTC

clrf counter

; enable global interrupts
BSF INTCON,GIE
; enable peripheral interrupts
BSF INTCON,PEIE
; enable TIMER1 (16bit timer)
bcf PIR1, TMR1IF ; clear timer1 interrupt bit first
bsf T1CON, TMR1ON ; turn on the timer
BSF 0x03,RP0
bsf PIE1, TMR1IE ; turn on the interrupt
BCF 0x03,RP0

; set Timer1 to /8 prescale
movlw 0xAA
movwf TMR1L
movlw 0xFF
movwf TMR1H

MainLoop
goto MainLoop

HEART
addwf PCL
retlw B'00000000';
retlw B'00000000';
retlw B'11111111';
retlw B'10000001';
retlw B'10000001';
retlw B'10000001';
retlw B'11111111';
retlw B'00000000';
retlw B'00000000';

EC
addwf PCL
retlw B'00000000';
retlw B'11111111';
retlw B'10001001';
retlw B'10001001';
retlw B'10000001';
retlw B'00000000';
retlw B'00000000';
retlw B'00111100';
retlw B'01000010';
retlw B'10000001';
retlw B'10000001';
retlw B'01000010';
retlw B'00000000';
retlw B'00000000';
retlw B'00000000';
retlw B'00000000';

;.db B'00000000';


end

Re: MiniPOV

Добавлено: Сб июл 20, 2013 13:04:40
otest
4 ногу МК подтяни к +5 через резистор 10к.

Re: MiniPOV

Добавлено: Сб июл 20, 2013 18:46:38
Asche
Не помогло. Да что ж не так то тут?

Re: MiniPOV

Добавлено: Сб июл 20, 2013 19:31:40
otest
Прошивка исправная. Дело в руках.

Re: MiniPOV

Добавлено: Сб июл 20, 2013 20:25:29
Asche
Ну что ж, будем мучиться - авось что получится

Re: MiniPOV

Добавлено: Вс июл 21, 2013 11:42:06
Asche
Не знаю в чем проблема. И другие прошивки загонял, и тип генератора менял. Ничего не помогает. Печаль-беда...

Re: MiniPOV

Добавлено: Пт июл 26, 2013 11:38:06
Asche
Странное дело: микросхема читается, программируется, но не работает. Решил залить другую прошивку (когда-то собирал хронограф Хронолайт). Прошил, поменял микросхему - не работает. Выходит у меня паленая микруха?