Ik heb een programma (asm) wat geschreven is voor de 16F84.
Nu zou ik graag ipv de 16F84 een 16F628A willen gebruiken.
Is het mogelijk om de asm te herschrijven en geschikt te maken voor de 16F628A zonder al teveel werk ?

Mvg, Rob

De configuratie instellingen zal je waarschijnlijk moeten aanpassen en controleer ook even of ze beide dezelfde instructie set hebben.

Ja,

De CONFIG settings even aanpassen, en dingen die erbij zijn gekomen, zoals analoog (comparator) uitzetten (CMCON=0x07)

Toevallig ben ik met een domotica systeem beig en heb dit gevraagd in een ander forum. Mogelijk heb je er iets aan.

http://www.domoticaforum.eu/viewtopic.php?f=30&t=4001

1) Configuratie instellingen aanpassen
2) Comparators uitzetten (CMCON)
3) Start adres van variabelen aanpassen (0x20 ipv 0x0C)

Ik heb de file als tekst bestand even online gezet www.test.gompy.net/asm-cdi.txt
Ben geen programmeur, maar een simpele gebruiker.

Mvg, Rob

Alleen het gewijzigde deel: (anders wordt 't wat lang...)


list p=16f628a    	; processor type
        ;
        __CONFIG  _HS_OSC & _CP_OFF & _WDT_OFF & _PWRTE_ON & _LVP_OFF & _MCLRE_OFF
        ; No code protect, PWRT on, no watchdog, Quartz 4to20Mhz
        ;
        ; Page 0: 0-FF page1: 100-1FF page2: 200-2FF page3: 300-3FF

;==========================================================================
;       Register Definitions
;==========================================================================

#Include <p16f628a.inc>

;==========================================================================

#DEFINE rotor	PORTA,2    	; [pin1]= sensor input
#DEFINE coil	PORTB,0   	; [pin6]= output to coil
#DEFINE revcoil	PORTB,2		; [pin8]= reverse output to coil
#DEFINE rpmmax	PORTB,1    	; [pin7]= Min and Max RPM led
#DEFINE led	PORTB,7       	; [pin13]= pickup led
#DEFINE strobe	PORTB,3		; [pin9] = strobe light output
#DEFINE test	PORTA,4		; [pin3] = test jumper input
#DEFINE k2	PORTA,0		; [pin17] = map2 select jumper input
#DEFINE k3	PORTA,1		; [pin18] = map3 select jumper input

;==========================================================================
;       RAM Definition
;==========================================================================

rpmhi    equ  0x20        ; RPM counter register high
rpmlo    equ  0x21        ; RPM counter register low
dwell    equ  0x22        ; dwell time counter
rtdset   equ  0x23        ; retard value holding register
math     equ  0x24        ; calculation register
coilflg  equ  0x25        ; coil status
spkflg   equ  0x26        ; flag after one spark
rotflg   equ  0x27        ; rotor sense flag
retard   equ  0x28        ; new retard value
d1       equ  0x29        ;Temp value for the testdelay routine
d2       equ  0x2A        ;Temp value for the testdelay routine
firstspk equ  0x2B        ;èíäèêàòîð ïåðâîé èñêðû ïîñëå îñòàíîâêè ìîòîðà

;==========================================================================
;       Main Program
;==========================================================================

	org     0x0000          ; start adress 0
        goto    start

        org     0x0004
        retfie

start   banksel TRISA           ; go to bank 1
        movlw   H'FF'           ; set all portA..
        movwf   TRISA           ; ..as inputs
        movlw   H'00'           ; set all portB..
        movwf   TRISB           ; ..as outputs
	;        			
        movlw   b'11000001'     ; no pull-up,rising edge int,internal timer,1:4
        movwf   OPTION_REG
        ;--------------deze toevoegen-----------------
        banksel CMCON
        MOVLW   0x07
        MOVWF   CMCON
        ;---------------------------------------------
        banksel PORTA  	        ; come back into bank 0
        ;
        clrw               	; clear all variables
        clrf    PORTA         	; clear variables
        clrf    PORTB
        clrf    math
        clrf    rpmlo
        clrf    coilflg
        movlw   0xff         	; rpmhi = FF initially
        ...
        ...

[edit]
Heb _LVP_OFF en _MCLRE_OFF er ook maar even bij gezet om problemen te voorkomen...
[/edit]

Uhhh.....dat is alles ?

Is er ook nog een mogelijkheid, cq veel werk, om bv op RB4 een 27kHz signaal uit te sturen met een dutycycle van 49% ?

Mvg, Rob

Dat mag je zelf (of iemand anders) doen... :+

(De software kun je dan wel helemaal opnieuw schrijven, want de boel moet dan interrupt gestuurd worden)

Ik ben allang blij dat ik nu een 16F628A kan gebruiken, dus tot zover heel veel dank !
Die puls uitgang is om de flybacktransformator te laten vervallen en gebruik te kunnen maken van een *normale* transformator.
In het bestaande ontwerp sneuvelt nog wel eens de transistor van het flyback gedeelte door verzadiging van de kern.
De ocsilator kan soms op hol slaan en hogere frequenties uitsturen dan het ferrit aan kan.

Mvg, Rob