www.elektronik.si
ATTINY45 - utripanje LED, pogojno
Pojdi na stran Prejšnja  1, 2  :||:
www.elektronik.si -> Osnove programiranja AVR-jev

Avtor: elektrolitKraj: Kranj PrispevekObjavljeno: Tor Feb 27, 2024 10:01 pm    Naslov sporočila:  
----------------------------------------------------------------------------
DELUJE! Very Happy

Avtor: elektrolitKraj: Kranj PrispevekObjavljeno: Tor Feb 27, 2024 10:02 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Še izvorna koda:

Koda:
#include <avr/io.h>
void Delay(void);
void setup() {
  // put your setup code here, to run once:
  DDRB = 0x3F;
}
void loop() {
  // put your main code here, to run repeatedly:
  PORTB = 0x3F;
  Delay();
  PORTB = 0x00;
  Delay();
}
void Delay(void)
{
  volatile unsigned long count = 50000;
  while (count--);
}

Avtor: elektrolitKraj: Kranj PrispevekObjavljeno: Tor Feb 27, 2024 10:34 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Sicer sedaj krmilim kar vse izhode, ampak bom že ugotovil pravi bit oziroma pravilno naslavljanje za želeni izhod (verjetno so vse informacije v priponki).

Dodam še kakšen komentar kasneje...

Avtor: lojzek PrispevekObjavljeno: Sre Feb 28, 2024 9:23 am    Naslov sporočila:  
----------------------------------------------------------------------------
Vklop samo enega izhodnega pina (oz. samo enega bita kjerkoli postaviti na 1)
Koda:
PORTB |= (1 << št. bita);  //št. bita ima vrednost 0 - 7 

druga varianta, za dva bita
Koda:
PORTB |= (0b00010100);  // bite z vrednostjo 0 pusti pri miru, 1ke postavi na 1

operator |= zgoraj je bitna operacija ALI na določenih bitih.


Izklop samo enega izhodnega pina (oz. postaviti vrednost nekega bita na 0)
Koda:
PORTB &= ~(1 << št. bita);  //št. bita ima vrednost 0 - 7 

druga varianta
Koda:
PORTB &= ~(0b00010100);  // bite z vrednostjo 0 pusti pri miru, 1ke postavi na 0

Operator &= zgoraj je bitna IN operacija, znak pred oklepajem ~ pa je negacija tistega v oklepaju. Torej tisto v oklepaju spremeni v 0b11101011 in s t vrednostjo izvede IN operacijo.

Še tretja osnovna uporabna funkcija je XOR (ekskluzivni ALI). Za njeno razlago malo pobrskaj po spletu.
V tem primeru spodaj pa spremeni vrednost bita iz trenutnega stanja v nasprotno. Torej iz 1->0 ali iz 0->1

Koda:
PORTB ^= (1 << št. bita);

Stran 2 od 2

Powered by phpBB © 2001,2002 phpBB Group