Wow, Just read Byron A Jeff's reply to Shawn Mulligan. Many interesting ideas there, both views. My concern is that the novice has success with their first few projects and frustrations are kept to a minimum. One thing I see on here that gives me concern is the problems people have in building their programmer. Something that must be done before the first project is started. And I have a question about this. Looking at the web pages from olimex at http://www.olimex.com/dev/ it appears as if it is possible to purchase a assembled and tested programmer PIC-PG1 for $7.00 USD and a assembled and tested prototype board PIC-P18B-20MHz for $13.00 USD. The postage to USA would be $8.00 USD. Adding the power supply, downloading the free programming software and plugging in the 16F628 chip would be all that was needed to program and run the pic chip. Is this correct? Would use the microchip assembler. Bill ----- Original Message ----- From: "Byron A Jeff" To: Sent: Thursday, August 01, 2002 1:31 PM Subject: Re: [PIC]: selecting your first > On Thu, Aug 01, 2002 at 12:37:54PM -0600, shawnmulligan wrote: > > Response to Byron A Jeff's argument: > > > > Firstly, realize that I feel that both of our approaches, though opposite, > > may be right in different circumstances and with different people. Given > > that, my response is not an attack of your method but simply a response. > > > > > * As a beginner, not heeding the advise of someone who is more experienced > > than > > > you is a foolish venture. They've already been where you are now and > > their > > > experience is valuable. > > > > While this argument sounds good, it simply assumes the premise that with > > experience comes the ability to teach and guide beginners -- and this is > > just the opposite of my argument. Have you ever had a teacher or professor > > that couldn't teach? Who couldn't remember what it was like to be a student? > > Of course. And I've seen it a lot as a college professor. But it's the > exception and not the rule. It pays to heed the advise of those who have > been there before. > > > > > > * As I have pointed out over and over and over and over again, the 16F84 > > has > > > the weight of inertia on its side. There's more books, tutorial, and > > projects > > > using it because it's been around for nearly 8 years, whereas the others > > have > > > come on the scene more recently. > > > > Inertia doesn't have to be bad. I argue that access to more books, turorials > > and projects is the greatest strength of the 16F84. And remember, I'm only > > recommending the 'F84 for beginners -- as a learning tool. > > But here's the problem. Users, especially beginners, take a new tool and try > to use it as a solution for everything. It's what one of colleagues used to > call "...you love what you learn." We all do it. To this day I still use > Slackware Linux even though every newer Linux version generally has more > features. The simple fact of the matter is that the 16F628 is much much closer > to the higher end midrange and highrange PICs than the 16F84. A beginner > can learn about the right tools right away instead of having to circumnavigate > the obstacles presented by the 16F84. > > In short, if they can do it right from the beginning, why shouldn't they? > > > > > > > > > * The vast majority of the material that applies to the 16F84 can be used > > > with the newer chips. It's not a situation like the 18F series parts > > where > > > there's a marked difference in the way that code gets done. 16F84 code > > runs > > > on 16F62X and 16F87X parts virtually unchanged. Everyone seems to be > > arguing > > > that this virtual aspect is too difficult for beginners to understand. > > > > Once again, it's because the vast majority of material that applies to the > > 'F84 can be used with the newer chips that I recommend the 'F84 as the PIC > > with built-in training wheels. > > You're still missing the point. There is a large conceptual gulf that occurs > when transistioning from novice to intermediate usage. This is at the point > where you have activites that you must do in software on the 16F84 vs. being > able to use the builtin hardware on the other parts. Bit banging serial ports > and doing software timers should not be the primary way to learn how to do > these activites. But with the 16F84 one is forced to do it that way. > > That's the problem, while 16F84 code translates up, the code from other > midrange PICs do not translate down. So novices have to relearn and rethink > how to lay out projects when they outgrow their training wheels. > > It adds complexity, not reduces it. > > > > > > When I was first starting with PICs in 1995 or so, I ran into exactly > > the > > > same problem that I'm descrbing between the 16C84 and the 16C71, which > > had > > > A/D converters on PORTA. It required 2 extra lines of code to turn them > > off. > > > > Being a beginner is all about learning, so I believe that a beginner's first > > ADC should be built from discrete components. Then, when they move up to the > > fancy micro with all the bells & whistles they'll understand 'how and why' > > the device works and not simply set a few registers and feed information > > into a black box that smartly spits out ones and zeros. > > I disagree. One should always learn the highest abstraction that works and > continue to use it until the abstraction breaks. One should treat it > exactly like a black box that smartly and correctly spits out ones and > zeros until such time as the abstraction breaks down. > > Why not simply have our erstwhile users build their circuits from transistors > then? The whole point of using a microcontroller is to provide a high level > abstraction for programming activities. The extra hardware is part and parcel > of that abstraction. > > Here's an example: you need a async serial port. With the 16F84 you are stuck > with bitbanging. With the 16F628 you can use the hardware port. Now does this > mean that you should not learn bitbanging? Of course not. You will need 2 > serial ports at some point in time. But you don't have to learn how to do it > now. Use the abstraction until a time as it doesn't work anymore. > > It also illustrates what I'm talking about in terms of the 16F84 not being > forward compatible. With the 16F84 one must learn to bitbang serial. But > when one steps up later on, you'll have to relearn how to use the hardware > serial port. > > I've been on both sides of this debate and I have to admit that I have been > swayed. As a former computer science professor it was my firm belief that > students should learn the process of programming from the ground up. I was > persuaded to consider in a rather heated debate with a colleague that maybe > the best way to teach programming data structures is from a usage standpoint > first. Specifically teach using data structures with the C++ Standard Template > Library. I argued as you do, that doing it from the ground up will give a > firmer foundation to build upon. My colleague pointed out that if students > were unsuccessful in understanding and applying that low level knowledge that > it wouldn't matter anyway. While we parted ways still fundamentally disagreeing > I certainly was persuaded by that argument. You see part of the results here. > > Use the highest abstraction. The additional hardware supports that higher > abstraction. It's possible to drop down later if necessary. > > I see one difference between us now. See I find the extra hardware the > training wheels. You can do more with less code and less indepth understanding. > You seem to think that the extra stuff is an impediment and that beginners > should learn how to "Do it the hard way..." first. > > > > > > > > * Easy to use is a highly debatable topic: > > > - The programmer is more difficult. Novice users will build their own > > > programmers. Show me a 16F84 programmer that's as simple as the TLVP. > > > > If a person can't build (or buy) an 'F84 programmer and program the chip > > successfully (as millions before have done) then perhaps electronics is not > > their thing and they should be seeking other hobbies and different > > newsgroups. > > The programmer is a tool. Wasting time on it is like wasting time building > a screwdriver. But many novices will have that level of understanding. So > the simpler it can be made, the better off the novice will be. > > > > > > > > - The last of features on a 16F84 quickly introduces complexity in > > > programming. Not having a hardware USART means having to bit bang. Not > > > having multiple timers means having to juggle the single 8 bit timer, > > > counting overflows, and tracking multiple virtual timers off the > > single > > > real one. Not having a hardware CCP module means adding code to > > capture > > > the length of time of a pulse or doing lower frequency PWM by hand. > > > Not having enough memory (program, RAM, and data EEPROM) causes > > headaches > > > once one gets past the toy project. Not having an internal oscillator > > > means that one must deal with the oscillator issue immediately instead > > of > > > being able to put it off until a later time. > > > > All true, but irrelevant to the beginner. All of these wonderful things > > will unfold to the beginner in due time. I wonder: Have you seen some of the > > things that have been done with the 'F84. Many surpass the rank of 'toy > > project.' > > I know. However in the end it required a much higher level of design complexity > in order to achieve it. And the one thing we seem to agree on is that > added complexity is not good for novice users. > > Another point I want to pound. Novices do not stay novices for long. So in > starting out it is relevant as to what happens at the 1st and 2nd pleateau. > You may have an argument if there was a vast difference in the beginning. > There isn't a vast difference and in fact starting out favors the 16F628: > > * Simpler programmer > * Less hardware (No oscillator) > > Then at the first transistion to real projects > > * Real hardware > * Simpler programming interface > * More can be done with less management because hardware is managing. > > Just think about the 1st time a programmer needs to monitor the length of a > button press while receiving or transmitting a serial byte at the same time > to know what I'm talking about at this level. > > The second transition is easier too... > > * More memory > * More I/O > * Shares many periperals with bigger better chips so a simpler transision up. > > BTW the oscillator issue is immediate because no successful PIC project runs > without an oscillator. > > It's only simpler at the surface. In the true analysis it really is an > issue where less is less (16F84) and more is more (16F628/16F87X) > > > > > > Finally it's all moot anyway because the other chips can run exactly > > > what the 16F84 does. It's just that when it's time to take the second > > step > > > the others are ready to step up, while the 16F84 struggles to keep up. > > > > I think this is a ridiculous point. That's not my experience, nor that of > > the other engineers around the office here. > > That's nice. Apply your experience to my example above. For me it was more > difficult to manage it on a 16F84 than a 16F877. And I'm not a novice > programmer. Not impossible, but more diffiult that when the hardware to > handle the job is around. > > > > > > * Honestly when is the last time anyone here has been 'greeted' with a > > RTFM? > > > This is the most useful and helpful forum I know. While I may suggest > > that > > > a new user read/search the archives, turning them away isn't in this > > list's > > > makeup. > > > > I have read many suggestions for new users to "Read the Manual." Now this > > advise wasn't given with malice or with the 'F', just with a lack of > > appreciation for the limitations of novices. > > My experience in this matter is in variance with yours. ;-) > > > > > That said, I think this forum is very helpful and has a great membership. > > This is more my experience... > > > For example, I have really enjoyed reading the postings of Kiersen (sp?) and > > seeing his questions get more and more complex. I feel like I'm taking the > > journey with him. He's been given some great advice. > > > > > All in all I like Brendan's argument the best. Recommending the 16F84 > > nowadays > > > is like recommending a 486 or Pentium 90 to a new computer buyer. The > > > difference is that 16F84's are still available and the others are long > > gone > > > from the shelves. They were great in their time, but their time has passed > > > > This is a deceptive argument and doesn't really parallel the current debate. > > I would respond that if you are learning beginning machine language > > programming in say the Debug environment, a 486 is as good as anything. You > > don't need an HP calculator when you are learning to add -- at that stage > > all you could do is stare at the pretty orange and blue keys, with all the > > funky Greek lettering. > > However once one knows the basics, the calculator continues to be useful as > you progress. Even if you don't use the stat functions, the programming, and > the graphic capabilities initially, they will be there when you do need them. > > > [MSP430 deleted. Followed up in another thread... BAJ] > > BAJ > > -- > http://www.piclist.com hint: The list server can filter out subtopics > (like ads or off topics) for you. See http://www.piclist.com/#topics > > -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics