Witam mam problem z napisaniem pewnej funkcji,
Chciałbym stworzyć funkcję boolowską z 2 parametrami pin ( numer wejścia/wyjścia cyfrowego) oraz wskaźnik state, który przekazywałby informację o tym jaki stan wyjścia ma być ustawiony. Przed ustawieniem odpowiedniego rejestru PORT(B/D) funkcja sprawdzałaby czy dane wyprowadzenie jest ustawione jako wejście lub wyjście. Funkcja zwraca true jeżeli możliwa jest zmiana stanu wyjścia, inaczej false. Do portu B chciałbym podłączyć switch button, natomiast do portu D diodę LED.
do tej pory tyle wykminiłem
#include <avr/io.h>
#define Led 4
bool state = true;
uint8_t button;
bool digitalToggle( uint8_t pin, uint8_t * state)
{
PORTD = (*state << 5);
*state = !(*state);
return *state;
return *state;
}
void main(){
DDRB |= 0xF3; // praca jako wejście
DDRD |= 0xFF; // praca jako wyjście
while(1){
button = (PINB & (1 << PINB0)); // odczytanie stanu
if (button == 0)
digitalToggle(PORTD4,&state);
}
}
Chciałbym stworzyć funkcję boolowską z 2 parametrami pin ( numer wejścia/wyjścia cyfrowego) oraz wskaźnik state, który przekazywałby informację o tym jaki stan wyjścia ma być ustawiony. Przed ustawieniem odpowiedniego rejestru PORT(B/D) funkcja sprawdzałaby czy dane wyprowadzenie jest ustawione jako wejście lub wyjście. Funkcja zwraca true jeżeli możliwa jest zmiana stanu wyjścia, inaczej false. Do portu B chciałbym podłączyć switch button, natomiast do portu D diodę LED.
do tej pory tyle wykminiłem
#include <avr/io.h>
#define Led 4
bool state = true;
uint8_t button;
bool digitalToggle( uint8_t pin, uint8_t * state)
{
PORTD = (*state << 5);
*state = !(*state);
return *state;
return *state;
}
void main(){
DDRB |= 0xF3; // praca jako wejście
DDRD |= 0xFF; // praca jako wyjście
while(1){
button = (PINB & (1 << PINB0)); // odczytanie stanu
if (button == 0)
digitalToggle(PORTD4,&state);
}
}