Ik had een stuk code geschreven voor een PIC16F876A, omdat dit niet werkten ben ik eens met een eenvoudig stukje begonnen.
Helaas, werkt dit ook al niet !
De Uitgangen A0...A5 en C0...C7 blijven Laag
Wat er er fout in deze code ?
LIST P=16F876A ;Processor type
include <P16F876A.INC> ;Register en poort definities
; __CONFIG B'11000111110011'
__CONFIG B'11111101110011'
ORG 00h ;
GOTO INIT ;Reset: 'Start regel'
NOP ;
NOP ;
NOP ;
GOTO INTERR ;
INIT BSF STATUS,RP0 ;Select Bank 1
MOVLW B'00000000' ;
MOVWF TRISA ;A uitgangen (Ingangen)
MOVLW B'11111111' ;
MOVWF TRISB ;B Ingangen
MOVLW B'00000000' ;
MOVWF TRISC ;C Uitgangen
;Analoge comperators instellen
MOVLW B'00000111' ;Bits naar tijdelijk register
MOVWF CMCON ;Comparators uitschakelen
;A/D Convertor instellen
BCF STATUS,RP0 ;Select Bank 0
MOVLW B'01000001' ;
MOVWF ADCON0 ;...
BSF STATUS,RP0 ;Select Bank 1
MOVLW B'11000111' ;
MOVWF ADCON1 ;...
BCF STATUS,RP0 ;Select Bank 0
;Fosc/16
;AN0 = Analoog
;AN1...AN7 = Digitaal
GOTO MAIN ;
MAIN MOVLW B'00111111' ;
MOVWF PORTA
MOVWF PORTC
GOTO MAIN
INTERR
RETFIE ;
END
Edit:
Als ik deze code in MPLAB test, dan worden de uitgangen
A en C wel allemaal Hoog.
chipje
Why do people spend money they don't have, to buy things they don't need, to impress people they don't like...? .-.-.-.-. Wie zich gelukkig voelt met het geluk van anderen, bezit een rijkdom zonder grenzen.
als je de a/d converter op port a wilt gebruiken, moet je die wel eers instellen als input in tris a
Wat geef ik bij TrisA op bij Digitaal, en wat bij Analoog ?
Edit:
Met TrisA stel ik toch 1=Ingang / 0=Uitgang in.
Edit:
Omdat de code met de AD converter niet werkten (er werkten geheel niets), heb ik de code ingekort, totdat er iets zou werken.
Omdat er maar geen leven in kwam, deze code gemaakt !
Helaas werkt zelfs deze code niet, dus nu even zonder AD converter.
Ik krijg nu nog niet eens een gewone uitgang (C0..C7) Hoog !
[Bericht gewijzigd door MMSoft op ]
chipje
Why do people spend money they don't have, to buy things they don't need, to impress people they don't like...? .-.-.-.-. Wie zich gelukkig voelt met het geluk van anderen, bezit een rijkdom zonder grenzen.
of ze digitaal of analoog worden heeft trisa niets mee te maken.
Wel is het zo dat als je een analoge functie wilt gebruiken, dient de betrefende pin een ingang te zijn
wat je met trisa insteld is dit:
0=uitgang - Maak je een ingang hoog(porta, en niet trisa), kun je bijv. een led(+weerstand) van spanning voorzien, maak je hem laag, leg je de pin aan massa.(kun je een led +weerstand tussen plus en poort pin hangen)
1=ingang - de pin is hoog ohmig, je kunt er spanning op zetten of aan massa hangen en de toestand(hoog of laag) meten (bit test f)(of ADC)
Ok, maar waarom werkt mijn code ook niet op PortC ?
Die zijn als Uitgang opgegeven in TrisC en Hoog gestuurd in PortC (laagste 6 bits)
chipje
Why do people spend money they don't have, to buy things they don't need, to impress people they don't like...? .-.-.-.-. Wie zich gelukkig voelt met het geluk van anderen, bezit een rijkdom zonder grenzen.
kunnen ook andere oorzaken zijn. Ik zie in config word dat je oscillator op RC staat, is dat juist of heb je er een kristal op? Boden zou ik ook uitschakelen. Haal voor de zekerheid ook eerst de interupt deel eruit. En dat als laatste, ik zie dat het om een PIC16F876A gaat, heb je de programma wel geassembleerd voor een A, en de pic ook geprogrammeerd als een A (je programmer software moet dat ook ondersteunen). Zit nammelijk verschil tussen 16f876 en 16f876A
Wel gecompileerd als 876A (met MPLAB IDE v7.10), maar mijn Progger heeft geen 876A in de PIC lijst.
Kan dat het probleem zijn ?
Ik gebruik als progger de 8048 van Velleman, kan deze ook gebruikt worden door MPLAB IDE v7.10 ?
Edit:
Volgens de gegevens van Velleman moet de 876A mogelijk zijn.
De 876A staat echter niet in de keuze lijst van de progger !
[Bericht gewijzigd door MMSoft op ]
Zoals chipje al vroeg..hoe heb je je oscillator fysiek gebouwd? Volgens de code gebruik je een RC-netwerk, doe je dit ook echt?
chipje
Why do people spend money they don't have, to buy things they don't need, to impress people they don't like...? .-.-.-.-. Wie zich gelukkig voelt met het geluk van anderen, bezit een rijkdom zonder grenzen.
dat kan een probleem zijn.
"Programming specifications are different(2)"
"2: Please refer to device data sheet, errata, and the Microchip website for more information on programming
specifications and writing to FLASH program memory."
Aldus microchip over een van de verschillen.
Volgens velleman internet site moet dat inderdaad kunnen, maar download je de pdf manual van de 8048 staat ie er niet bij. En als die ook niet in de programeer software staat, houdt het feest op. Je kunt hem helaas niet programmeren...
Ik heb net de Update van Velleman gedownload en geinstalleerd.
Nu staat de 876A er wel bij, maar helaas werkt het nog niet.
Wie heeft er een werkende code voor de 876A, zodat ik kan testen of de 2 nieuwe PIC's wel goed zijn, en dat de progger deze PIC's wel aankan.... (ben al vele uren bezig, en krijg nog geen uitgang Hoog).
Edit:
Ik gebruik de interne Osc., teminsten dat is de bedoeling.
Er is Geen Kristal geplaatst !
[Bericht gewijzigd door MMSoft op ]
chipje
Why do people spend money they don't have, to buy things they don't need, to impress people they don't like...? .-.-.-.-. Wie zich gelukkig voelt met het geluk van anderen, bezit een rijkdom zonder grenzen.
Kristal moet toch op pen 9 + 10 (DIP) ?
Een gewoon Kristal van 4Mhz, is dat HS, XT of LP ?
Edit:
XT op 9 + 10 dus....
[Bericht gewijzigd door MMSoft op ]
chipje
Why do people spend money they don't have, to buy things they don't need, to impress people they don't like...? .-.-.-.-. Wie zich gelukkig voelt met het geluk van anderen, bezit een rijkdom zonder grenzen.
4MHz is XT, voor de rest van de details is een datasheet ook handig. Die hoort je meteen te downloaden als je een nieuwe pic koopt.
http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
EDIT: vergeet de condensators niet...
Er komt leven in, de uitgangen zijn hoog !
Dan kan ik eindelijk beginnen met de DA converter.
Nog tips voor de DA converter ?
Bedankt voor het meedenken/zoeken !
chipje
Why do people spend money they don't have, to buy things they don't need, to impress people they don't like...? .-.-.-.-. Wie zich gelukkig voelt met het geluk van anderen, bezit een rijkdom zonder grenzen.
Ben blij dat ie het doet. Het opzetten van DA staat ook in datasheet maar mischien is dit ook handig
http://www.winpicprog.co.uk/pic_tutorial.htm
even kijken bij tutorial eleven
Mischien vind je daar nog wat bruikbare routines
Op 24 november 2005 22:14:45 schreef MMSoft:
Er komt leven in, de uitgangen zijn hoog !
Dan kan ik eindelijk beginnen met de DA converter.Nog tips voor de DA converter ?
Bedankt voor het meedenken/zoeken !
RTFM
de uitkomst van de AD is verdeelt over 2 registers en in totaal 10bit
deze registers staan in verschillende geheugenbanken dus voor de complete waarde moet je van bank wisselen.
Ik probeer de AD Converter aan de gang te krijgen, maar deze wil maar niet
;A/D Convertor instellen
BCF STATUS,RP0 ;Select Bank 0
MOVLW B'10000001' ;
MOVWF ADCON0 ;
BSF STATUS,RP0 ;Select Bank 1
MOVLW B'00001110' ;
MOVWF ADCON1 ;
BCF STATUS,RP0 ;Select Bank 0
BSF ADCON0,1 ;A/D Converter starten
M1 BTFSC ADCON0,1 ;AD Convertor klaar ?
GOTO M1 ;Nee
MOVFW ADRESH ;Waarde Uitlezen (in hoog adres)
Wat doe ik verkeerd ?
Edit:
Al gevonden: ADCON0,1 moet zijn ADCON0,2