abonnement Unibet Coolblue
pi_14423875
Nu ik aan het experimenteren ben met een microcontroller op een testkitje en c++ heb ik een vraagje:

Ik wil 1 pin van een poort uitlezen en in 1 variabele genaamd "cmdreceived" zetten
Op deze pin staat na een aantal clockpulsen iedere keer een nieuwe bineaire waarde. Dit is een 8 bits bineaire waarde...
dus:

hoe kan ik dit doen?

for(j<8;j++) // 8 clockpulsen voor 8 bits
{
clkpin=0;
// P0.1 moet nu in de variabele "cmdreceived" worden gezet worden zodat ik
// uiteindelijk een 8 bits bineaire waarde in cmdreceived heb
clkpin=1;

}

  donderdag 6 november 2003 @ 10:02:07 #2
67938 MuRKie
..warm as butters..
pi_14424099
ik kijk even in de dikke van dale, 1 momentje

<edit>
sorry voor de spam, maar kheb eigenlijk best wel de pest aan c++ vanwege die klote toetsen die ik op school krijg
eerste toets hak een 10 2de en 3de toets niet hoger dan 3,2
</edit>

  donderdag 6 november 2003 @ 10:07:07 #3
14922 Keerzijde
heeft altijd gelijk
pi_14424200
Ik snap niet helemaal wat je bedoelt...
Bedoel je dat je iedere clockpuls 1 bit van het 8 bits
register kunt uitlezen en dat wilt combineren tot 1 byte value?
An open mind is a joy forever!
pi_14424211
quote:
Op donderdag 6 november 2003 09:50 schreef sbronsge het volgende:
Op deze pin staat na een aantal clockpulsen iedere keer een nieuwe bineaire waarde. Dit is een 8 bits bineaire waarde...
Ik weet het antwoord niet, maar wat ik wel weet is dat je in je vorige topic ook al binair fout schreef.
pi_14424465
ik weet niet pecies wat die P0.1 doet . .maar ik neem aan dat die iedere keer 1 bit terug geeft ??
Religion : Mankind's worst invention !
  donderdag 6 november 2003 @ 10:23:08 #6
17864 Ablaze
Is niet meer te houwe!
pi_14424538
quote:
Op donderdag 6 november 2003 09:50 schreef sbronsge het volgende:
Nu ik aan het experimenteren ben met een microcontroller op een testkitje en c++ heb ik een vraagje:

Ik wil 1 pin van een poort uitlezen en in 1 variabele genaamd "cmdreceived" zetten
Op deze pin staat na een aantal clockpulsen iedere keer een nieuwe bineaire waarde. Dit is een 8 bits bineaire waarde...
dus:

hoe kan ik dit doen?

for(j<8;j++) // 8 clockpulsen voor 8 bits
{
clkpin=0;
// P0.1 moet nu in de variabele "cmdreceived" worden gezet worden zodat ik
// uiteindelijk een 8 bits bineaire waarde in cmdreceived heb
clkpin=1;

}


Ik begrijp de vraag niet helemaal, maar het volgende voorbeeldje leest elke clockpuls één bit uit en plaatst deze en voegt deze toe aan een buffer, rekening houdend met de significantie (de laatste bit heeft dus een waarde van 2^7).

Misschien kun je er wat mee. Voorbeeld niet getest.

code:
#include <headerfile.h> // De header file waarin registers van je microcontroller zijn gedefinieerd

cmdreceived = 0;

for (i = 0; i < 8; i++)
{
  clkpin ^=1; // Toggle clock (XOR)
  cmdreceived += (P0^1 << i); // zet waarde in variabele
}


Ga doorrrrrr!
  donderdag 6 november 2003 @ 14:09:50 #7
17864 Ablaze
Is niet meer te houwe!
pi_14429906
quote:
Op donderdag 6 november 2003 10:19 schreef Flierp het volgende:
ik weet niet pecies wat die P0.1 doet . .maar ik neem aan dat die iedere keer 1 bit terug geeft ??
Een simpele microcontroller heeft meestal poorten van 8-bit, genummerd P0, P1, P2 etc.

Je kunt een 8-bit waarde naar zo'n poort schrijven. Ook kun je op bitniveau waarden schrijven en uitlezen, door het bit uit te lezen: P0.1 is bijvoorbeeld bit 1 van poort 0; in C++ compilers voor microcontrollers werkt meestal P0^1 dacht ikzo.

Ga doorrrrrr!
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')