PIC Assembly Language Tutorial: #2 - LED Blinky

  Рет қаралды 35,763

Julian Ilett

Julian Ilett

Күн бұрын

Пікірлер: 158
@CliveChamberlain946
@CliveChamberlain946 7 жыл бұрын
Julian, love that hilarious production stress bit at the end! My friend, more of your completely disarming personality shines through with each new video. Keep it up bro, and never change to meet the approval of anyone else. You are the real deal and if you ever hear criticism's on your candid politeness, let loose and tell them where to get off (the train).
@cs8425
@cs8425 3 жыл бұрын
Really liked this one. Didn't really want to do anything with assembly till I watched this. You make it sound so simple and easy.
@tedbastwock3810
@tedbastwock3810 8 ай бұрын
Best Assembly video on KZbin. Most ASM vids assume x86, the ones that dont assume x86 do assume more knowledge than most viewers have. This vid is perfect. TY Julian. However, viewers from today forward should be aware that Microchip, the manufacturers of PIC chips, changed the IDE, such that some of the IDE-specific code shown here has changed ... a YT comment is not the format to explain this, but if interested you can find the details. Again, thank you very much Julian for this video!!!
@premjipatel2812
@premjipatel2812 Жыл бұрын
Very impressed with simplified explanation, very informative for beginners like me
@AdamWelchUK
@AdamWelchUK 7 жыл бұрын
Ace video - and an awful lot of work for you. Glad you've not been fired. :-)
@followthetrawler
@followthetrawler 7 жыл бұрын
Thank you Julian - really great explanations - shows perfectly why datasheets are so important.
@chrisshipman6253
@chrisshipman6253 7 жыл бұрын
Excellent video. Everything clearly explained and very well thought out. A lot of effort must be going into these PIC tutorials - many thanks.
@JulianIlett
@JulianIlett 7 жыл бұрын
Thanks Chris :)
@csongorvarga
@csongorvarga 7 жыл бұрын
It is interesting see at the end of the video how the off state is visibly longer than the on state due to the extra processing time of the goto statement.
@JulianIlett
@JulianIlett 7 жыл бұрын
Exactly, I'll fix that in the next tutorial :)
@sootikins
@sootikins 7 жыл бұрын
Yep, and also the one that made my butt pucker a bit: since the dox say the GPIO bits (0x05) are in an undefined state at power-up, at minimun GPIO 0 should be set to 1 (LED off) before setting up TRISIO. Pedantic? Yep! Do I work on systems that actually embody something a lot like Julian's metaphorical machine gun IRL? Yep. Pedantry justified. XD
@andr27
@andr27 6 жыл бұрын
again, perfectly explained things. Huge thanks. I really appreciate your effort making this video
@oreubens
@oreubens 7 жыл бұрын
1:39 Point of order! RISC does NOT mean a reduced set of instructions (as in a small number of instructions) but really means a set of reduced instructions (as a set of simple instructions). A RISC CPU like the PowerPC has a huge amount of instructions at it's disposal. What makes RISC is that instructions are typically doing only a single thing, where on CISC an instruction can do many things. The obvious example is adding to a (memory) variable, which in RISC takes a load memory to register, add to register (possibly even a load immediate value in register), add register/immediate to register, and store instruction. where on a CISC like the intel x86, this can (but it is not necessarily the best way) be done in a single instruction add register value/immediate to memory location, which does the load/store for you.
@JulianIlett
@JulianIlett 7 жыл бұрын
+oreubens Point taken, reading Wikipedia now. It's not a very concise definition.
@oreubens
@oreubens 7 жыл бұрын
it isn't, and it really is difficult to figure out what is meant. The whole idea behind it is that at some point CISC was evolving into such complexity that it was thought that making simpler instructions would make it easier to create processors, even at the cost of making the programming harder. Again, the theory behind that being that compilers could handle that complexity easier in software than it is to solve the problem of cramming ever more transistors on a chip and dealing with heat. And yes, there are RISC cpu's where they ALSO reduced the instruction set itself so having CPU's without a hardware multiply or divide That didn't help in making it obvious that RSIC wasn't about the amount of instructions, but about the amount of work each instruction does.The most obvious distinction is memory access where on RISC you have separate load/store instructions vs instructions that 'do' something like arithmetic, logic operations, shifts... (there's a few oddball exceptions here and there). On a CISC, you find instructions that 'do work' directly on memory.note however that even on current x86 x64 processors, you typically want to avoid the more CISC type usage of instructions and split them up into multiple separate load/operate/store instructions just like RISC, because it allows for a better usage of the CPU execution pipeline.
@JulianIlett
@JulianIlett 7 жыл бұрын
I'm making some sense of this by reading about the One Instruction Set Computer (OISC) - totally fascinating en.wikipedia.org/wiki/One_instruction_set_computer
@battlecoder
@battlecoder 7 жыл бұрын
I normally don't see assembly language tutorials on youtube so I had to click on this video out of curiosity. I have to say it was pretty well done and easy to follow. A nice surprise indeed. I believe you mixed up GPIO with TRISIO at one point, though. The TRIS registers in fact start with all pins configured as input, but the corresponding GPIO bits start undefined. They will also later depend on what is connected to them (as they are inputs) once they are read, so no contradiction there. Other than that this was an excellent tutorial. Surprisingly clear especially considering that PICs are a bit of a "messy" architecture.
@Enjoymentboy
@Enjoymentboy 7 жыл бұрын
Julian, I've struggled for years to get my head around programming. Even back in college in my pascal, assembler and c++ classes I was always lost. It's like getting a chicken to read japanese stereo instructions with a russian accent. I just could NOT get it. Now though I THINK some of it is starting to make sense. You've been able to do what no one in 23 years has been able to do. My thanks. :)
@JulianIlett
@JulianIlett 7 жыл бұрын
Awesome - thanks very much :)
@jimsmindonline
@jimsmindonline 7 жыл бұрын
Good stuff Julian, don't stress too much! Making good sense so far. Would be cool if you looked the raw hex output by the assembler. Maybe an x.1 episode some day. :)
@JulianIlett
@JulianIlett 7 жыл бұрын
Yes, I want to do that - the intelhex format is interesting and the way the fuse settings are embedded.
@joinedupjon
@joinedupjon 7 жыл бұрын
Wanted to suggest this as a supplementary video too - I know you're using the IDE etc which 'makes it simple' by hiding it away, but a peek behind the curtains to see how the ORG directive and instructions affect what's in the file might be helpful for some of the more hardwarey people :)
@NivagSwerdna
@NivagSwerdna 7 жыл бұрын
@20:00 You don't know the secret handshake? Just connect the PICKit3 to power WHILST holding down its button, this invalidates the firmware so when you ask MPLAB to talk to it there should then be an automagic download of compatible version.
@JulianIlett
@JulianIlett 7 жыл бұрын
Yeah, I tried that a couple of days ago. Watching Dave Jones' video on PICkit 3 woes was very helpful :)
@NivagSwerdna
@NivagSwerdna 7 жыл бұрын
also... If you connect a scope then you should be able to see the effect of the GOTO you described... should not be a 50/50 trace.
@JulianIlett
@JulianIlett 7 жыл бұрын
Aha, you read my mind. Next time I'll show the asymmetrical on/off times, using NOPs to rebalance the symmetry. Then I'll use an XOR to toggle the I/O pin (explaining the read/modify/write issue) and show that toggling has natural symmetry. Toggling TRISIO avoids the read/modify/write problem with GPIO. I'm loving this :)
@NivagSwerdna
@NivagSwerdna 7 жыл бұрын
finally.... could you single step using GP5 and Key2. Gotta go... think I left the machine gun connected....
@JulianIlett
@JulianIlett 7 жыл бұрын
Haha - debounce - a tricky issue :)
@richardboyce4921
@richardboyce4921 7 жыл бұрын
Excellent video Julian with a creative twist. Look forward 2.1
@JulianIlett
@JulianIlett 7 жыл бұрын
Thanks Richard :)
@sudarapremathilaka1706
@sudarapremathilaka1706 4 жыл бұрын
Great video tutorial. Clearly explaining Assembly language basics. Please do some more assembly language tutorials, it's very interesting. Thank u so much.
@ThiwankaWimalasuriya
@ThiwankaWimalasuriya 7 жыл бұрын
Julian, when can we see the next part of this series ? Thanks you !
@stevesm2010
@stevesm2010 7 жыл бұрын
Excellent stuff Julian. I love your explanation style and the amount of detial you go into. Still waiting on my board (arrival imminent!) but I'm following along with interest!
@JulianIlett
@JulianIlett 7 жыл бұрын
Thanks Steve - hope your board arrives soon :)
@Fubar12341
@Fubar12341 7 жыл бұрын
Hi, I am curious to know if you are going to take this tutorial series any further ? Really enjoyed it.
@JulianIlett
@JulianIlett 7 жыл бұрын
+Chris Perkins yes, I'll go back to it when summer's over (which shouldn't be too long)
@zerog2000
@zerog2000 7 жыл бұрын
+Julian Ilett can you make your MPLAB IDE font a bit bigger for those of us watching on small devices or small window desktop?
@JulianIlett
@JulianIlett 7 жыл бұрын
Oh wow, I never thought of that - yes, I've scaled it up from 8pt to 12pt. Thanks Jens
@dandare62
@dandare62 7 жыл бұрын
Julian Ilett loving this series already, as with the rest of you videos, but is there a way you can zoom in on the a smaller part of the ide window, I seem to think you can just select a portion of the screen regardless of the window size. Really appreciate the work you put in to your channels
@FlyingShotsman
@FlyingShotsman 7 жыл бұрын
Thanks, Julian. I too am thoroughly enjoying this series but frustrated that I can't read the code on your screen capture! Your narration has saved the day thus far...
@williamna5800
@williamna5800 7 жыл бұрын
Isn't the x just there to show that its able to be set/has multiple values? I think this is same way its shown on PORT and LAT registers as well(on other larger pics of course).
@johnarmstrong3782
@johnarmstrong3782 7 жыл бұрын
My pickit 3 hasn't arrived yet! And I've got to bodge it together with the board before it will work?
@libanabu6222
@libanabu6222 4 жыл бұрын
hey what is the board you are using and where can I buy
@FinepixF30
@FinepixF30 4 жыл бұрын
Actually the best way if you want to allow the micro controller to do other stuff while the LED blinks, you use the watchdog timer which can do an interruption request to change the LED status on fix intervals.
@petercbruun
@petercbruun 7 жыл бұрын
Hi Julian Ilett. Super video.. where to buy the test board?
@sarah1390
@sarah1390 7 жыл бұрын
House of Teixido refer to video zero in the series as he gives where he got it
@petercbruun
@petercbruun 7 жыл бұрын
super :-) thanks
@mickeymadsen3106
@mickeymadsen3106 7 жыл бұрын
Hello Julian :-) super videos. Why aren't you using MPLAB X IDE 3.45?And programming in C?
@trt969
@trt969 7 жыл бұрын
Great video, extremely well explained. Let me ask something, is the clone PICkit 3 able to control the VDD voltage, let's say set it to 3v3? Thank you!
@stefflus08
@stefflus08 7 жыл бұрын
You know, looking back I think this might be your greatest initiative yet. Electronics and especially programming often goes from "Easy" to "Hard" skipping "Medium" alltogether. Arduino might give you some insight, but if you're only using other peoples' libraries and snippets of code you're really not prepared for setting up the infrastructure of code needed for a standalone system.
@jimsmindonline
@jimsmindonline 7 жыл бұрын
Got my kit and already caught up, thanks Julian! Similar issues with my clone pickit as others but the standalone is working fine. 👍
@yanito1979
@yanito1979 7 жыл бұрын
when's the next pic tutorial coming out? great work with the videos by the way!
@edwardsymons2764
@edwardsymons2764 7 жыл бұрын
Love these tutorials. Is there going to be a tutorial 2.1 or 3?
@NetworkXIII
@NetworkXIII 7 жыл бұрын
Great work as always Julian!
@TheDutyPaid
@TheDutyPaid 7 жыл бұрын
These tutorials will work up to how do make a key fob activated machine gun in the boot of your car 'Breaking Bad' final style.
@interlinkknight
@interlinkknight 7 жыл бұрын
Wow, this PIC programming is complicated. I learn with Arduino and I think is much simpler. But now I wonder: is there any advantage of using PIC instead of arduino? Or they have different purpose?
@JulianIlett
@JulianIlett 7 жыл бұрын
Yes it is complicated and it's much less productive. So why learn it? Because it teaches you how microcontrollers actually work :)
@interlinkknight
@interlinkknight 7 жыл бұрын
I am not that advance, but at least because of watching this video I have an idea now. Thanks
@JasonMasters
@JasonMasters 7 жыл бұрын
They are essentially the same thing. They're both microcontrollers (a complete computer on a chip). The big difference is that the Arduino has a program already installed (the bootloader) which makes it easier to load up new programs. Also, Arduino is programmed using C rather than in assembler (although it can be programmed in assembler if you want to) The advantage of Arduino is convenience. The disadvantages are that the bootloader takes up some of the program memory space (although that's not usually a problem since it takes very little space) and using the C language tends to distance the programmer from what's actually going on inside the hardware, which can lead to sloppy programming practices. In general, knowing how things are done in assembly language will tend to make you a better high-level language programmer too. But having said all of that, I have to admit that there's very little to choose from between them. The relative advantages and disadvantages are small and perhaps even insignificant, when viewed dispassionately. So if you're happy programming in C, then certainly you can stick to programming the Arduino that way. But if you want to learn what the C language is doing for you "in the background" then you'll want to learn assembly language.
@moatazmaged5305
@moatazmaged5305 5 жыл бұрын
Hey bro....how can i write an assembly code that will turn on a LED when i presses a push-button switch. When the switch is released, the LED will turn off. After the switch is pressed and released a specific number of times, a second LED is to turn on and stay lit forever. Using PIC16F84A and PICKIT2 Programmer Thanks in advance for your help
@azyfloof
@azyfloof 7 жыл бұрын
Nice work, Jules! :D Glad you didn't get your arse fired :P I noticed the LED off time was slightly longer than the on time, is that because of the tiny extra time it takes for the GOTO to loop round? If you took out the second NOP and put it after the LED on code, could you make an exact 50% duty cycle? Could be a neat 555 timer replacement (obviously not pin compatible) that generates nice 50% duty cycle square waves with a RC oscillator :D
@JulianIlett
@JulianIlett 7 жыл бұрын
Well spotted. In fact the on time is half the length of the off time, so the GOTO is having a very large effect. And you're right - moving the NOP would restore the symmetry perfectly :)
@azyfloof
@azyfloof 7 жыл бұрын
Julian Ilett Ooh! :D Follow up vid? I'd be surprised how fast a square wave you could get out of it. Also the RC clock could lead to some interesting ideas, like arbitrary waveform generation, or sinewave simulation using data points plotted into a lookup table :) (I've done this on arduino to move servos :D )
@chillipaste386
@chillipaste386 7 жыл бұрын
Thank goodness I managed to live through the PicTutor and the 16F(C)84 and we have Arduino nowadays. LOL Many thanks for the video. It brought back memories. But it also re-affirmed that I shall never return to PIC and ASM.
@babyflurryheart9114
@babyflurryheart9114 7 жыл бұрын
who is your boss
@scotia807
@scotia807 6 жыл бұрын
Is there an episode for someone who's had no programing experience? I've searched for some way tomlearn how to setup the software with only people saying click here and do this and don't tell why. Some say i'll explain why i did this later and then they don't. The ones that really bother me are the experts that have such a bad accent i can't understand them.
@pfeerick
@pfeerick 7 жыл бұрын
Well, that answers that question... I'll have to wait for the PIC12F675s to arrive... I tried to port this over to the PIC12LF1840 that I currently have in my proto-boarded version of the experimenters board, and I don't seem to be able to get the clock to start up when doing ASM code... only with the C code so far. However, I've been looking at the program memory (I'm using MPLAB X) and one nice benefit of this video is I can actually start understanding the ASM instructions that the compiler is using... neat! So now I can see how "LATAbits.LATA0 = 1;" becomes "BSF LATA, 0x0" and how "TRISAbits.TRISA0 = 0;" becomes "BCF TRISA, 0x0". Neat! btw, maybe the issues with the PICKit3 and MPLAB are due to not switching the PICKit3 back into MPLAB mode after using the PICKit3 Standalone Programmer, as that loads a different firmware onto the PICKit3? Another thing to consider is if you have had MPLAB X installed, there is a "MPLAB Device Driver Switcher", which switches between MPLAB 8 and MPLAB X drivers.
@pfeerick
@pfeerick 7 жыл бұрын
Actually, it looks like the driver switcher doesn't apply for the PICKit3... it's for their other programmers like the Real ICE or ICD3. I did try MPLAB 8.92 though, and after it downgraded the PICKit3 firmware to a version it preferred (second time I tried doing this it half installed, so I unplugged the PICKit3 and reconnected it and it successfully installed). It was then able to connect to the programmer and upload to the PIC without any trouble. And MPLAB upgrades the firmware again when I use it. I don't intend to switch back and forwards, but it seems like my setup is stable enough with either version of MPLAB.
@jayherde0
@jayherde0 7 жыл бұрын
Thank you for including the Pickit3. I hope it doesn't get in the way for those using Pickit2. This is going to be sooo much fun! Except - Alice sent me a tachometer instead of the development board. And now she wants to know if I can use that instead! Off to find a bare chip, which you thoughtfully have allowed for. Thanks :-D
@slm60uk
@slm60uk 7 жыл бұрын
How are you getting away with putting code at address 0x00 - the Reset Vector?
@techy4198
@techy4198 7 жыл бұрын
slm60uk because it's perfectly reasonable to have this code start running immediately after a reset
@himselfe
@himselfe 7 жыл бұрын
I would argue that it's good practice to use notation to indicate which radix a number is in regardless of whether it's needed or not as it avoids ambiguity in code and maintains consistency. 100% of software bugs are the result of either laziness or incompetence! Best to teach people good practice from the offset. :P
@NivagSwerdna
@NivagSwerdna 7 жыл бұрын
I used 255 and ended up getting 85 very confusing.... in the end this was hex is the default radix so 255 is 255 in hex but the higher bits get thrown away giving 55 hex which is 85 decimal! Should have said .255 obvious really!
@TheProCactus
@TheProCactus 7 жыл бұрын
100% of bugs not not due to laziness or incompetence, only some are, You cannot measure that.
@himselfe
@himselfe 7 жыл бұрын
TheProCactus: yes you can. Code isn't magic, it behaves in a precisely defined way.
@NivagSwerdna
@NivagSwerdna 7 жыл бұрын
himselfe so when you go shopping you say i'm going to buy D'12' eggs? the default radix in C and in life is 10 so this is a trap for new players.
@himselfe
@himselfe 7 жыл бұрын
That's the point though, when the radix isn't decimal it's good to consistently show that in the code regardless of whether you technically need to or not. Can't imagine any situation where I'd want to buy 3346 eggs mind you! Also, I read your comment in the voice of Dave Jones. xD
@jimsmindonline
@jimsmindonline 7 жыл бұрын
Finally managed my own delay loop. :) Just a couple of repeating loops using decfsz. I need to work on using the clock and timer but my head starts to explode fairly quickly!
@gapadad2
@gapadad2 7 жыл бұрын
It's stuff like this that keep me a hardware engineer. I'm trying to follow along but I'm falling behind in understanding what is going on.
@TomStorey96
@TomStorey96 7 жыл бұрын
Ask questions, people will answer (hopefully)!
@rich1051414
@rich1051414 6 жыл бұрын
I am a software engineer, and this hardware level stuff trips me up as well :P However, it is why I am interested.
@kardeef33317
@kardeef33317 7 жыл бұрын
when you say file, do you mean address?
@pfeerick
@pfeerick 7 жыл бұрын
Yes. It's just that the datasheet refers to it as f(ile) place, and address in another. :-/
@LouesSCat
@LouesSCat 7 жыл бұрын
Wait.. you're not American Why was the first thing you thought of attaching to a microcontrollers misfiring pin a machine gun?
@JulianIlett
@JulianIlett 7 жыл бұрын
In the past I suggested that "all the world's nuclear weapons were connected to the PIC output pins", but that seems a bit severe :)
@LouesSCat
@LouesSCat 7 жыл бұрын
I do remember that... You sure you're not just a little American?
@GoScada
@GoScada 7 жыл бұрын
I believe program should reside after 0x04 location, at least (if I remember correctly, 0x04 is the location of the interrupt vector)
@JulianIlett
@JulianIlett 7 жыл бұрын
If global interrupts are disabled (which they are by default), location 0x04 is not an issue.
@mikaelkarlsson9945
@mikaelkarlsson9945 7 жыл бұрын
Well done.. The error in line 11 is because STATUS register have moved from 03h to 83h since you are calling it from bank 1.
@Aperson-sv2hc
@Aperson-sv2hc 7 жыл бұрын
*brace for noob question* what's a pic? Is that like arduino with extra tiny models and expensive programming software?...
@pfeerick
@pfeerick 7 жыл бұрын
Huh? Expensive programming software? It's a free download from the Microchip website! lol Just in case you're really asking... PICs are simply another type of microcontroller. Arduinos are powered by AVR microcontrollers, these are just another type. STM is yet another family/type of microcontroller.
@petti78
@petti78 7 жыл бұрын
A pic is what people had instead of arduinos in the bad old times :-)
@Aperson-sv2hc
@Aperson-sv2hc 7 жыл бұрын
+petti78 lol... i don't see how you got that point of view.
@pfeerick
@pfeerick 7 жыл бұрын
Yeah, the real bad old times... like 2016! :-P
@mshine5
@mshine5 7 жыл бұрын
Top notch tutorial, Sir!
@TomStorey96
@TomStorey96 7 жыл бұрын
Hi Julian. I know its early days, but I hope you'll cover the "read modify write" problem in a later video, explaining why writing directly to the GPIO register isnt the best idea. With two LEDs on your board this could actually be a really neat demonstration of the problem and its solution! But otherwise, great video. I always say to bloggers that I watch that they shouldnt be concerned about the length of their videos. Certainly since this video was about making an LED blink, I think going in to the delay loops would have been totally apt and worth the extra time. Anyhow, this is your channel not mine, so I'll just leave that there. :-)
@JulianIlett
@JulianIlett 7 жыл бұрын
The read-modify-write issue come up soon, when I use XOR on GPIO to toggle the LED state. Using XOR on TRISIO is a workaround.
@TheProCactus
@TheProCactus 7 жыл бұрын
I always thought that 'Unknown' also means 'Don't care' also 'Not set' ? *also 'Unchanged'
@MD-vs9ff
@MD-vs9ff 7 жыл бұрын
TheProCactus It depends on context.
@1st_ProCactus
@1st_ProCactus 7 жыл бұрын
@Mark, Are there any other then the four I mentioned ?
@DAVIDGREGORYKERR
@DAVIDGREGORYKERR 7 жыл бұрын
It turns out that the programs that will only run on Windows will run under Wine64 so yes a whole development system can be run on Linux Mint 17.3 (Rosa) 64bit system.
@JulianIlett
@JulianIlett 7 жыл бұрын
Thanks David, that's good to hear :)
@HellTriX
@HellTriX 7 жыл бұрын
Good job @Julian Ilett
@nabarnes
@nabarnes 7 жыл бұрын
I've watched the vid twice (still waiting for the dev. board to turn up, although the Pickit3 arrived today and some ridiculously small pitch cables yesterday!). I've watched it twice and am banging my head against something which, I am sure, is blindingly obvious, but I just don't get it... I get the fact that you've got to switch banks. What I don't get is that the register you have to change is in bank 0 and yet you can still access this register once you have switched to bank 1. Surely once you've changed the register, it becomes inaccessible as any reference to the 'file/location' will be pointing to bank 1? Sure as eggs is eggs, I'm missing something. Maybe I should keep watching until it clicks...
@JulianIlett
@JulianIlett 7 жыл бұрын
It's elegantly simple - the STATUS register exists in both banks - it has to - that's the only way it can work :)
@nabarnes
@nabarnes 7 жыл бұрын
Doh! Perhaps I should have done my homework and actually read the data sheet. I've downloaded and printed it now. Slapped wrist. Sorry!
@mrswinkyuk
@mrswinkyuk 6 жыл бұрын
Really, REALLY good videos. Thank you :-)
@michaelo2l
@michaelo2l 6 жыл бұрын
TRISIO = three states... Hi/Low/Disconnected (hi impedance)... if memory serves...
@rich1051414
@rich1051414 6 жыл бұрын
I am a programmer and I am not offended. You simply added a turbo button :) And yes, turbo means slower, not faster.
@PeranMe
@PeranMe 7 жыл бұрын
As expected, great stuff!
@MkEDS
@MkEDS 7 жыл бұрын
Really enjoyed that video. I'm hoping to learn enough to be able to at least understand how to modify some existing code for which our company only has the assembler code. Yikes!
@nicktohzyu
@nicktohzyu 7 жыл бұрын
no, 1M/6=~183k
@bigfilsing
@bigfilsing 7 жыл бұрын
Great...... first real PIC programming info vid But hang on ! Already 2 items outside of the shopping list Frequency counter and tantalum cap. The later to cover a fudge to meet a hypothetical self imposed deadline ................. Add to that the @ 2:55 reference to the watchdog timer with no explanation at all . Bit disappointing really
@fatroberto3012
@fatroberto3012 4 жыл бұрын
Watch dog timer is in first video
@Sailingon
@Sailingon 6 жыл бұрын
I wrote a stepper motor driver years ago in ASM on a 16f84 then moved on to a satellite tracker a bio diesel process controller and many more than wanted to do more maths which was so long winded I move on to proton pic basic which was very slow in comparison to ASM but woohoo you can embed the bits you want fast in ASM 😁
@gartmorn
@gartmorn 7 жыл бұрын
Thought you were going to use pickit2 to avoid pickit3 issues. I'm only a beginner and doing my best to keep up so adding unnecessary problems is only adding to my already steep learning curve. Not criticising your great videos just asking you to remember the numpties like me!
@JulianIlett
@JulianIlett 7 жыл бұрын
In hindsight, it might have been easier to use just the PICkit2. But I've recommended both now, so I have to cover all the issues (which is a lot of work).
@gartmorn
@gartmorn 7 жыл бұрын
Julian Ilett I have a pickit3 but got a pickit2 anyway as they're ridiculously cheap (clones)! I need to do more study of relevant literature so I can keep pace! Hardware not a problem but software side is a bit more demanding on my old brain cell!
@Spector_NS5_RD
@Spector_NS5_RD 7 жыл бұрын
all this for friggin blinking LED??? yikes!
@TomStorey96
@TomStorey96 7 жыл бұрын
Assembly is a very low level language, its basically one rung above the raw machine code that actually tells the chip what to do. There is essentially nothing implied with assembly, so you have to put in the effort to get the results. The best saying Ive heard is that it will do what you tell it to do, not what you intend it to do. If something isnt working properly, its because you havent told it how to operate properly.
@3mariusx
@3mariusx 5 жыл бұрын
Tom Storey actually i don’t share the same opinion that is a very low level language...
@jonvannatto
@jonvannatto 7 жыл бұрын
Well I've been following this tutorial as i'm very new to PIC's but it seems programming them with Assembly is well beyond my skill level. I can see why the Arduino environment is so popular as getting to blinky is simple.
@seamonkeys12y
@seamonkeys12y 7 жыл бұрын
Oh no. The pic I got a few months ago to learn and experiment on (16F1936) has 31 banks of registers. May god have mercy on my soul
@jays2001
@jays2001 7 жыл бұрын
Your hardware approach doesn't really work, you're fired. Because the goto uses 8 clock cycles and the noops only 4 you have the LED off for twice as long as you have it on. It's not symmetrical.
@joinedupjon
@joinedupjon 7 жыл бұрын
was a precise 50/50 duty cycle written into the spec? :/
@pfeerick
@pfeerick 7 жыл бұрын
@joinedupjon: We don't know... we're not privy to those super-secret details. I suspect it was though... since Julian said he will fix that in the next video(s). :-P
@petti78
@petti78 7 жыл бұрын
Trying to discourage most people from getting into assembler programming are we? ;)
@LouesSCat
@LouesSCat 7 жыл бұрын
If so he has failed. I want it more than ever :p
@jeffmerlin2580
@jeffmerlin2580 7 жыл бұрын
Excellent!
@meiot6189
@meiot6189 4 жыл бұрын
thank you so much, sir
@_who_cares_1123
@_who_cares_1123 7 жыл бұрын
Can you show how to compile C-Code with mplab? Sothat we can program a pic in C
@JulianIlett
@JulianIlett 7 жыл бұрын
Not in this tutorial series - sorry.
@elyesmehri3067
@elyesmehri3067 6 жыл бұрын
really really clever !
@aheletcodefloppydevice.2196
@aheletcodefloppydevice.2196 4 жыл бұрын
very good
@AuctorisVideo
@AuctorisVideo 7 жыл бұрын
Great video; but as a some-time embedded systems programmer, the kludge of hacking the clock-speed is making my teeth itch! :-)
@JulianIlett
@JulianIlett 7 жыл бұрын
I was hoping it would ;)
@dmbrv
@dmbrv 7 жыл бұрын
nice video :)
@austinskylines
@austinskylines 7 жыл бұрын
First! Have a great day Julian!!!
@Reuben1024
@Reuben1024 7 жыл бұрын
I remember now why I stopped writing assembler, no disrespect to Julian, it's just not for me
@nishiter
@nishiter 7 жыл бұрын
Julian lot of PIC videos alrdy 😐😐😐😐😐😐😐😐😐😐
@JulianIlett
@JulianIlett 7 жыл бұрын
My head is full of PIC tutorial stuff at the moment. It'll settle down.
@nishiter
@nishiter 7 жыл бұрын
Julian Ilett 😉😉😉😉😉😉😉 keep it up..vl wait.
@PhilC184
@PhilC184 7 жыл бұрын
That's sent the boys home, all that are left are real men, because only real men program in assembler.
@JulianIlett
@JulianIlett 7 жыл бұрын
I think you're right - maybe I should have put "machine gun" in the title :)
@paulrautenbach
@paulrautenbach 7 жыл бұрын
The PIC architecture is Ugly. Only use 14 bits instructions and then to make this work, invent register banks. That's Ugly.
@ZEROSTATIC72
@ZEROSTATIC72 7 жыл бұрын
Paul, Yes it's a bit ugly. Mostly hangovers from earlier chip series. Original chips had only a 12 bit instruction word and a special instruction for setting each of the special function registers. When I started with the PIC chips there were only 4 chips in the series and there were only one time programmable, rom and UV erasable development chips. The chip Julian is using is several generations later but has many holdovers from the past.
@himselfe
@himselfe 7 жыл бұрын
Also, just say no to nested loops! Hardware sleep instruction or be burned at the stake!
@JulianIlett
@JulianIlett 7 жыл бұрын
Hmm, I guess the stake awaits me after the next tutorial :(
@joinedupjon
@joinedupjon 7 жыл бұрын
My first PC was a 386 with a tortoise & hare switch so you could slow the CPU down for gaming
@DupczacyBawol
@DupczacyBawol 7 жыл бұрын
It is not designed for normal people to use. End of story.
@LouesSCat
@LouesSCat 7 жыл бұрын
Yay
@nickmanuhutu927
@nickmanuhutu927 7 жыл бұрын
That voice pffffff
PIC Assembly Language Update: #2.1 - Blink Symmetry
5:52
Julian Ilett
Рет қаралды 12 М.
PIC Assembly Language Update: #1.1 - PCB schematic
16:28
Julian Ilett
Рет қаралды 17 М.
Enceinte et en Bazard: Les Chroniques du Nettoyage ! 🚽✨
00:21
Two More French
Рет қаралды 42 МЛН
REAL or FAKE? #beatbox #tiktok
01:03
BeatboxJCOP
Рет қаралды 18 МЛН
The Best Band 😅 #toshleh #viralshort
00:11
Toshleh
Рет қаралды 22 МЛН
Are PIC Microcontrollers Any Good? - Beyond Arduino #4
21:07
Sine Lab
Рет қаралды 50 М.
Z80 PATA drive connection with FAT32
22:38
Ready? Z80
Рет қаралды 4,7 М.
PIC Assembly Language Tutorial: #1 - Config and Clock
26:28
Julian Ilett
Рет қаралды 54 М.
Playing with: PIC12F675 Microcontroller Demo PCB
24:48
Julian Ilett
Рет қаралды 38 М.
What Is Assembly Language?
24:56
javidx9
Рет қаралды 457 М.
How to get source code onto a PIC microcontroller
11:21
FriendlyWire
Рет қаралды 98 М.
Hardware interrupts
27:36
Ben Eater
Рет қаралды 605 М.
Enceinte et en Bazard: Les Chroniques du Nettoyage ! 🚽✨
00:21
Two More French
Рет қаралды 42 МЛН