Witam
W bibliotece zewnętrznej, która nie zna "PORTA" itp. mam funkcję, w której parametrami są port i jego bit. Ponieważ funkcja nie zna co to jest PORTA bo musiałbym dołączać include wszystkich avr'ków więc wymyśliłem, że odnoszę się do PORTA jak do zwykłego adresu pamięci...za pomocą funkcji pokeb, peekb...tj. odczytu i zapisu bajtu w pamięci SRAM AVR'a. Te funkcje wziąłem z biblioteki obsługi pamięci w kompilatorze CodeVision.
Mam taki kod:
Czyli np. dla PORTD mam adres 0x2B, stąd PIND=0x29 więc _port-2, i DDRD=0x2A więc _port-1.
Czy jest jakiś inny prostszy sposób aby to zrobić bez używania tych funkcji obsługi pamięci SRAM? Oczywiście zachowując funkcję w takiej postaci, że podaję tylko adres portu w pamięci oraz nr bitu który chcę sprawdzić.
Jak wcześniej wspomniałem, funkcja jest w bibliotece a nie w kodzie programu więc nie wie co to znaczy PORTA i nie mogę tego użyć...
Pozdrawiam
W bibliotece zewnętrznej, która nie zna "PORTA" itp. mam funkcję, w której parametrami są port i jego bit. Ponieważ funkcja nie zna co to jest PORTA bo musiałbym dołączać include wszystkich avr'ków więc wymyśliłem, że odnoszę się do PORTA jak do zwykłego adresu pamięci...za pomocą funkcji pokeb, peekb...tj. odczytu i zapisu bajtu w pamięci SRAM AVR'a. Te funkcje wziąłem z biblioteki obsługi pamięci w kompilatorze CodeVision.
Mam taki kod:
Kod: C / C++
Czyli np. dla PORTD mam adres 0x2B, stąd PIND=0x29 więc _port-2, i DDRD=0x2A więc _port-1.
Czy jest jakiś inny prostszy sposób aby to zrobić bez używania tych funkcji obsługi pamięci SRAM? Oczywiście zachowując funkcję w takiej postaci, że podaję tylko adres portu w pamięci oraz nr bitu który chcę sprawdzić.
Jak wcześniej wspomniałem, funkcja jest w bibliotece a nie w kodzie programu więc nie wie co to znaczy PORTA i nie mogę tego użyć...
Pozdrawiam
