Jump to content
43oh

kenemon

Members
  • Content Count

    275
  • Joined

  • Last visited

  • Days Won

    2

Reputation Activity

  1. Like
    kenemon reacted to RobG in Standalone Nightmare   
    I always pull RST and TEST pins up, through resistor or directly to Vcc. And as oPossum already suggested, cap is a must, but I usually go higher, 10-47uF electrolytic.
  2. Like
    kenemon reacted to oPossum in Standalone Nightmare   
    It is good practice to have a 100 nF (0.1 uF) capacitor across the power pins. That may not be your problem, but it would be good to add one just to rule that out.
  3. Like
    kenemon reacted to bluehash in Biometal Helix Wire for Sale   
    Looks like your working on an interesting application.
  4. Like
    kenemon reacted to ZeroSkillz in n00b tutorial - AND; OR and NOT   
    I'm a total n00b, and from what I have seen, there are a lot of us here so I figured I'd share what I've been learning and maybe help some others along the way! While running demos and looking at the code that makes them tick you will come across things like this:
     
    P1OUT |= BIT6
    P1OUT &= ~BIT6
     
    And to a n00b this looks like gibberish! Lets break it down and learn! - as taught to me by my mentor & friend Sven (Thanks bub!).
     
    There are three basic functions in play here AND; OR and NOT. Lets start with NOT.
     
    1101 1010 <- binary representation of a byte (8bits)
     
    What NOT does is INVERT the bits:
     
    NOT
    1101 1010
    0010 0101 <- RESULT
     
    What was ON is now OFF (and vice versa)
     
    Now, lets look at OR. While NOT operates on ONE value, OR (as well as AND) operate on TWO values and combines them in a way to create a result. OR sets all the bits that are in either (a) OR (.
     
    1100 0000 (a)
    OR
    0001 0001 (
     
    1101 0001 <- RESULT
     
    Another example:
    1100 001 (a)
    OR
    1101 000 (
     
    1101 001 <- RESULT (same as the first result)
     
    If a bit at a certain position is set to 1 in either the first (a) OR the second ( var, the bit in the result will be set to 1 also.
     
    Now, lets look at AND. The difference between OR and AND is that the bit in the result will be set only if BOTH the first (a) and the second ( var are set.
     
    1100 0001 (a)
    AND
    1000 0100 (
     
    1000 0000 <-RESULT
     
    Only the topmost bit (BIT7) is set in (a) AND (, so only the topmost bit is set in the result.
     
    SO - NOW WHAT!? well, in C we don't write OR, AND and NOT...we use symbols.
     
    & is AND
    | is OR
    ~ is NOT
     
    Lets look at a line of code:
     
    P1OUT =P1OUT &~BIT6
     
    What this line of code does is MASK bit number 6. It takes what is currently in P1OUT then does an AND with EVERYTHING except BIT6 and writes it back to P1OUT. Whatever was written to P1OUT still be there EXCEPT for BIT6, which will be set to zero. We can make this line shorter:
     
    P1OUT &= ~BIT6
     
    On a LaunchPad it turns off the Green LED located at 1.6 - ISN'T THAT GREAT TO KNOW!?
     
    When you want to change a bit in a port, you CANNOT access just that one bit. You can only write a WHOLE byte to memory, which effects all 8 port bits. So, since you do not want to change the other bits you need to read the current state, leaving all the other bits unchanged by using AND with ALL bits except the one you want to clear (BIT6).
     
    Lets say that P1OUT looks like this:
     
    1101 0001
     
    BIT0, BIT4, BIT6 and BIT7 are set (Zero is rightmost Seven is topmost). Now you create your mask by doing a NOT on a single BIT (BIT6). BIT6 Looks like this:
     
    0100 0000
     
    NOT BIT6 (~BIT6) Looks like this:
     
    1011 1111
     
    Now, if you do an AND operation with this MASK all bits will remain unchanged except BIT6 which will always result in zero. You write the result back to the port byte and you have only affected ONE bit (BIT6) while all the others remain the unchanged.
     
    SO - HOW DO I TURN BIT6 ON!?
     
    You just OR the port with the desired bit:
     
    P1OUT |= BIT6
     
    If BIT6 is already set, there is no change. If BIT6 was not set it is now. On a Launchpad the green LED would turn ON or STAY ON.
     
    Just for fun:
     
    P1OUT &= ~(BIT6|BIT0)
     
    This line of code will turn OFF BOTH LED's on a Launchpad.
     
    Happy coding!
    ZeroSkillz
×
×
  • Create New...