Hallo iedereen, zoals je al kon lezen PICbeginnertje (nog een
)
Nu is die pic en al de harware errond geen probleem, maar de software ...
Ik ben vrij goed bekend met Visual basic, en heb me wel eens gewaagd aan een "hello world" in java, C en C# maar voor de rest nieks. ASM is voor mij totaal nieuw dus.
Kheb al enkele code stukkies doorgenomen, en ik snap de boel wel, maar ik had graag eens geweten van mensen met ervaring wat nu de juiste methode is ...
ASM ga ik schrijven in MPLAB, omdat ik daar ook direct de hex kan maken. MPLAB zal wel degelijk genoeg zijn, gezien de herkomst.
Ik gebruik JDM programmer, wil asm code comilen met MPLab, en dump de hex in de pic met PICProg4U. (de JDM werk al perfect in combinatie met PICProg4U.)
Stel ik wil met een PIC16F628A beginnen. Kan ik dan gewoon beginnen aan de code om bvb wat ledjes te sturen ? of moet ik eerst een en ander instellen ? Zoja, hoe
dat ik de functie van de poorten moet instellen weet ik. max Input of output. maar zijn er nog andere dingen. bvb eventueel gebruik van de interne osc. Zoja, hoe moet dat dan.
(Ik wil beginnen met pic, maar zie door het bos de bomen niet meer, dat zal nog de beste omschrijving zijn)
Videomodulator
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
Kijk eens bij artikelen, de handleiding van bastiaan, das ideaal om mee te starten.
En het belangerijkste: 5 keer de datasheet lezen. De eerste keer gewoon negeren wat je niet begrijpt, volgende keer worden die dingen wel wat duidelijker. De 3e keer lees je em door tijdens het programmeren zelf, telkens je iets niet begrijpt kijk je in de datasheet. De 4e keer is als je progje niet wil compileren (hoe zitten die configuratiebits nu weer), en de 5e keer is als je nog eens je programma overloopt en begint te twijfelen of er geen gemakkelijker manier is.
Dit gratis online boek schijnt ook erg goed te zijn, tis wel in het engels (maar onder engels kom je niet uit als je iets verder wil kijken dan je neus lang is).
[Bericht gewijzigd door Videomodulator op ]
Ibanez
Een atx voeding is geen labvoeding, en je kunt er geen auto mee starten ook
Videomodulator
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
Op 12 augustus 2006 21:35:31 schreef Ibanez:
Waarom kies je gelijkt de lastigste taalBasic is veel meer tja... Basic:)
Een beginner is sneller weg met ASM dan met Basic voor een µC, imho, als het om écht programmeren gaat. In basic kan je idd snel een ledje doen knipperen, maar de stap naar interrupts gebruiken is onoverkomenlijk (omdat ze de datasheet niet lezen, te lui geworden zijn door de gemakkelijke basic taal). Een goed en snel werkend programma kan je maar maken met de kennis van de onderliggende ASM.
Als Mr.Soldeer voelt dat ie mee is met de ASM en hoe alles werkt en in elkaar zit, dan kan hij zo overstappen naar Basic zonder enige moeite (zoals je zelf ws hebt ervaren), dan steekt ie in 10 minuten zijn progje in elkaar. Maar als ie direct in basic begint, zit hij uren te ploeteren op status en instellingsregisters die hij niet begrijpt, en stomme compiler-issue's.
Op 12 augustus 2006 21:34:36 schreef Videomodulator:
...(hoe zitten die configuratiebits nu weer), ...
voila, daar heb je het al, configuratiebits. zijn dat die bits die bepalen of RA0 nu In of output is ? of zijn er nog meer dingen die ik zo moet configureren !?
@ videomodulator, voila, de nagel op de kop.
Videomodulator
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
Op 12 augustus 2006 21:44:51 schreef Mr Soldeer:
[...]
voila, daar heb je het al, configuratiebits. zijn dat die bits die bepalen of RA0 nu In of output is ? of zijn er nog meer dingen die ik zo moet configureren !?@ videomodulator, voila, de nagel op de kop.
Heb je al het artikel gelezen (daar staat het uitvoerig uitgelegd), en de datasheet 4 keer gelezen 
ben al 1 jaar aan het rondneuzen en aanhet lezen, ik weet wel al een en ander, maar nu ik er es echt aan begin ...
Bijvoorbeeld, die configuration bits, in MPlab kun je die instellen bij CONFIGURE > COFIGURATION BITS...
als ik dan de hex maak, zullen die (al dan niet aangepaste) gegevens over de configuratie ook in de hex komen ?
of moet ik dat ook in mijn asm venster instellen !?
Videomodulator
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
Op 12 augustus 2006 22:07:05 schreef Mr Soldeer:
ben al 1 jaar aan het rondneuzen en aanhet lezen, ik weet wel al een en ander, maar nu ik er es echt aan begin ...Bijvoorbeeld, die configuration bits, in MPlab kun je die instellen bij CONFIGURE > COFIGURATION BITS...
als ik dan de hex maak, zullen die (al dan niet aangepaste) gegevens over de configuratie ook in de hex komen ?
of moet ik dat ook in mijn asm venster instellen !?
Die kun je op 17 plaatsen instellen, dat zijn de fuses die bij het programmeren gebrand worden waar je het over hebt, om de WDT en oscillator en dergerlijke in te stellen. Je kan ze daar idd instellen, maar doorgaans zet je ze in het programma zelf erbij (in de header files van MPLAB staan die er al standaard dacht ik), een regeltje als:
__CONFIG _CONFIG1, _CP_OFF & _CCP1_RB3 & _DEBUG_OFF & _CPD_OFF & _LVP_OFF &
_BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO ; & _WRT_ENABLE_OFF
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFFstelt die in. Door ze zo in het programma zelf te zetten hou je het overzichtelijk.
Bij het programmeren zal de programmeersoftware die configuratiebits uit de .HEX overnemen, maar kan je ze ook nog eens aanpassen (je kan ze best daar nog eens nakijken).
Videomodulator
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
Op 12 augustus 2006 22:28:20 schreef Mr Soldeer:
ah fuses, dat wil zeggen dat je ze maar 1 keer kan instellen ... goed dat ik het weet
Nee, je kan er enkel aan bij het programmeren, maar ze kunnen wel meerdere keren vervangen worden.
Ik heb er die fuses bij gesleept (het kan zijn dat het zo in de datasheet stond) omdat dat voreger idd zekeringen waren die doorgebrand werden, nu is dat allemaal gebaseerd op Flash en (E)EPROM geheugen, maar de term fuses hangt nog een beetje samen met die instellingsdingen, sorry als dat je in de war brengt.
Ibanez
Een atx voeding is geen labvoeding, en je kunt er geen auto mee starten ook
Op 12 augustus 2006 21:43:02 schreef Videomodulator:
[...]
Een beginner is sneller weg met ASM dan met Basic voor een µC, imho, als het om écht programmeren gaat. In basic kan je idd snel een ledje doen knipperen, maar de stap naar interrupts gebruiken is onoverkomenlijk (omdat ze de datasheet niet lezen, te lui geworden zijn door de gemakkelijke basic taal). Een goed en snel werkend programma kan je maar maken met de kennis van de onderliggende ASM.Als Mr.Soldeer voelt dat ie mee is met de ASM en hoe alles werkt en in elkaar zit, dan kan hij zo overstappen naar Basic zonder enige moeite (zoals je zelf ws hebt ervaren), dan steekt ie in 10 minuten zijn progje in elkaar. Maar als ie direct in basic begint, zit hij uren te ploeteren op status en instellingsregisters die hij niet begrijpt, en stomme compiler-issue's.
Tja ik ben begonnen met basic 1 op msx toen basic 2 op msx 2. Toen Quikbasic,, en nu je raad et al weer basic:)
hallow iedereen, ik begin die assembly door te hebben, niet eens zo gek moeilijk
gewoon veel weg en weer bladeren door de datasheet.
ik heb die elektrische dobbelsteen eens gebouwd, en die werk ongeveer. als ik hem aanzet gaan alle 7 de leds branden. bij proefje met de scoop blijkt dat de pic als een razende gek van 0->7 telt. dus de delay zit er niet tussen
als ik zelf kort op de knop duw dan krijg ik een willenkeurige waarde tussen 0 en 6. nogmaals kort duwen, en de pic gaat weer tellen als een razende gek.
als ik lang duw, dan telt hij netjes van 0 tot 6, met een delay tussen twee waarden van ongeveer een halve seconde.
(ik zit met een 6,144 MHz Xtal, omdat ik die van 4 niet vindt, en ik geen van 20 heb met lang genoege pootjes 
en natuurlijk zijn we weer zondag.
volgens mij werkt die dobbelsteen juist, dus de pic is in orde (hij heeft al afgezien in dat jaar dat hij hier ligt te liggen ...)
nu heb ik eens het volgende "hello world" dingetje gemaakt, maar dan op een laager niveau
;20060813
;RA0 hoog maken
;PIC16F628A op 6.144MHz
;JDM - PICProg4U - MPLab
;Start
ORG 00h ;Startadres programma
BSF 03h,05h ;Bank instellen --> Bank 1
BCF 03h,06h ;Bank instellen --> Bank 1
MOVLW 00h ;00h in werkregister
MOVWf 85h ;Werkregister naar 85h schrijven (TrisA)
BCF 03h,05h ;Bank instellen --> Bank 0
BCF 03h,06h ;Bank instellen --> Bank 0
MOVLW 01h ;01h in werkregister
MOVWf 05h ;Werkregister naar 05h schrijven (PortA)
START GOTO START ;Pic in lus zetten
END ;Einde
;Einde
als ik het compileer krijg ik enkel geen errors, en das de bedoeling neem ik aan.
PICProg4U meld me, alsik de hex open, Configuration word not found in hex file !
Ondanks dit heb ik weldegelijk de Configuartion bits in MPLab ingesteld (Oscillator op HS gezet, de rest heb ik ongewijzigd gelaten)
op een of andere manier ontbreken er dus gegevens in die hex. Echter hoe krijg ik ze erin.
ik heb de pic toch es geprogrammeerd zonde de configbits, maar die led op RA0 doet nieks. ik denk dat de pic gewoon vastloopt vanaf dat er spanning opkomt, omwillen van de missende configuratie.
Turbokeu
Golden Member
I love watching conspiracy theorists use the airtight logic of the argument from incredulity: "Well I don't understand how it works so it can't be real!!!"
yup heb et nu werkende
;20060813
;RA0 hoog maken
;PIC16F628A op 20MHz
;JDM - PICProg4U - MPLab
;Instellingen
LIST P=PIC16F628 ;16F628A Processor
INCLUDE "P16F628A.INC" ;Include
__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC
;Start
ORG INDF ;Startadres programma
BSF STATUS,RP0 ;Bank instellen --> Bank 1
BCF STATUS,RP1 ;Bank instellen --> Bank 1
MOVLW H'0000' ;H'0000' in werkregister
MOVWf TRISA ;Werkregister naar TRISA schrijven
BCF STATUS,RP0 ;Bank instellen --> Bank 0
BCF STATUS,RP1 ;Bank instellen --> Bank 0
MOVLW H'0001' ;H'0001' in werkregister
MOVWf PORTA ;Werkregister naar PORTA schrijven
LOOP GOTO LOOP ;Pic in lus zetten
END
;Einde
volgende, knopje erbij 
oo wat is dit leuk 
Videomodulator
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
Fantastisch, zo zie je maar dat het niet moeilijk is. Ik zou zo zeggen, eenmaal je wat "moeilijks" (als in: datasheet is echt nodig, het zou je in basic niet zomaar lukken) hebt gemaakt, ik denk aan interrupts, AD conversie, USART gebruiken, iets dergerlijks, dan kan je eens kijken wat een basic compiler doet. (een gratis versie die tot 2k code kan genereren vind je hier)
hihi zo'n basic comiler bezorgt je waarschijnlijk tig keer meer hexcode, en uiteindelijk doet het net hetzelfde ...
zusjes computer ligt af, en zus ligt te maffen, dus ik kan niet meer bij de sierieele poort 
nu heb ik een vraagje (misschien heb ik het al opgelost hoor, maar ik kan het niet testen)
outputten op RA1 lukt perfect, maar op dezelfde wijze iets uitsturen op RA2 lukt niet. moet ik dan die CMCON en VRCON instellen ? of ligt dat aan iets anders.
EDIT: is al opgelost