ATtiny85 PINB blinkt zufälligC++

Programme in C++. Entwicklerforum
Guest
 ATtiny85 PINB blinkt zufällig

Post by Guest »

Ich versuche herauszufinden, wie man mit ATtiny85 arbeitet, und bin bei einem Problem hängengeblieben.
Ich verwende RGB-LED-Streifen, um Bits anzuzeigen (1 Pixel – 1 Bit, wie ich herausgefunden habe). Es ist sehr praktisch).
Der gesamte Code lautet:

Code: Select all

#define F_CPU 8388608UL // 8MH

#include 
#include 

#define LED PB4

void setBitHigh(short int pin) {
PORTB |= _BV(pin); // 1 tactDuration = 125*10-9sec
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");

PORTB &= ~_BV(pin); // 1 tactDuration
asm("nop");
asm("nop");
}

void setBitLow(short int pin) {
PORTB |= _BV(pin); // 1 tactDuration
asm("nop");
asm("nop");

PORTB &= ~_BV(pin); // 1 tactDuration
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}

void trueByte(short int pin, short int intensity) {
for (int i = 7; i >= 0; i--) {
intensity & _BV(i) ? setBitHigh(pin) : setBitLow(pin);
}
}
void falseByte(short int pin) {
for (int i = 0; i < 8; i++) {
setBitLow(pin);
}
}

void setPixel(short int pin, short int r, short int g, short int b) {
g > 0 ? trueByte(pin, g) : falseByte(pin);
r > 0 ? trueByte(pin, r) : falseByte(pin);
b > 0 ? trueByte(pin, b) : falseByte(pin);
}

void indicate(int data) {
int tmp = data;
for (int i = 0; i < 8; i++) {
int intensity = (tmp & _BV(i)) > 0 ? 10 : 0;

setPixel(LED, intensity, 0, 0);
}
}

void blink(short int times) {
for (short int i = 0; i < times; i++) {
indicate(255);
_delay_ms(200);
indicate(0);
_delay_ms(200);
}
}

int main() {
DDRB = 0x00 | _BV(LED);
PORTB = 0x00;

_delay_ms(1000);
blink(3);
_delay_ms(1000);

while(true) {
indicate(PINB);
_delay_ms(50);
}

return 0;
}

Ich habe erwartet, dass die PINB-Anzeige 0 ist(kein Licht am Streifen), aber sie blinkt mit einem Muster, das ich nicht kenne, aber ich sehe es zyklisch. Nur die ersten 4 Bits wurden periodisch zu 1.
Wie Sie sehen können, verwende ich PB4 nur für LED... PB0-3 sind frei (überhaupt nicht verbunden)
Ich freue mich über jede Idee oder jeden Tipp, ty.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post