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.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Ja,
De CONFIG settings even aanpassen, en dingen die erbij zijn gekomen, zoals analoog (comparator) uitzetten (CMCON=0x07)
Sjoerd Kreyns
Golden Member
SMD weerstandjes zoeken in grijze vloerbedekking is ook een uitdaging ... 8*1=255 ... Het nadeel van ruimte: Als je het hebt, staat het binnen de kortste keren weer vol.
Toevallig ben ik met een domotica systeem beig en heb dit gevraagd in een ander forum. Mogelijk heb je er iets aan.
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
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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