2012-01-25, 08:39
  #1
Medlem
Hej, jag skulle behöva lite hjälp med att programmera en elektronisk tärning med 7 ledlampor och 2 knappar, en knapp är en testknapp för lamporna som ska göra att alla lampor lyser tills den andra knappen är tryckt, den andra knappen ska slumpa lamporna till att visa 1-6 tills den andra knappen är tryckt.

Informationen om brädan är följande:
Övningsplatformen är en arduino uno bräda med ett enkelt interface. Interfacet har 7 led lampor och 7 knappar som är kopplade till Arduino input och output pins. Brädan kör ATmega328P processor på 16MHz.

Knapparna är kopplade till portarna B och C på processorn.
4 knappar är kopplade till bit 0-3, PINB och 3 knappar är kopplade till bit 0-2, PINC.

Ledlamporna är kopplade till PORTD och är placerade så här:
(B1=Bit 1)

B7 xx B1
B6 B4 B2
B5 xx B3

exempel: B4 set och de andra bitsen 0 ska ge "1" på tärningen

Jag har lyckats komma fram till vilka bits på PORT D som måste vara "set" för att få ut de olika tärningsutslagen men vet inte hur jag ska göra för att slumpa emellan dem. Jag har även gjort så att PINB bit 3 (utav 0-7) är en knapp och PINC bit 2 (utav 0-7).

Det fanns ett tips: "Ett slumpmässigt nummer kan genereras genom att köra en räknare på hög frekvens (1MHz eller högre) och sluta räkna när användaren släpper knappen." Jag vet dock inte hur man kör en räknare på hög frekvens.

Är tacksam för alla tips och all hjälp som kan fås.
Citera
2012-01-27, 01:38
  #2
Medlem
Om jag minns ratt sa har den en 16 bitars timer, och du kan kora high frequency timers mha OCR1A samt ICR1. Ungefar sa har for en 500Mhz PWM

Kod:
TCNT1 = 0
TCCR1A |= (1 << COM1A1) | (1 << COM1B1) | (1 << COM1B0);
ICR1 = 0x00FF;
TCCR1B |= (1 << WGM13);
OCR1A = 0x0064;
OCR1B = 0x0096;

// start timer
TCCR1B |= (1 << CS11) | (1 << CS10);

Jag har formodligen missat nagot, for det var ett tag sen... men forhoppningvis ger det dig nagon ide.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in