Mam problem z atmega w prostym robocie, po odpowiedniej konfiguracji pinow jesli ustawiam pin 2 to nie podaje na niego calych 5V a pozatym podaje np na pin obok 2V albo cos podobnego. atmega sprawna (sprawdzanie na kilku). Atmega steruje przez mostek H silnikami.czujnik odczytuje prawa lewa (mostek i czujniki sprawne).
czy wiecie co moze powodowac takie objawy??
czy wiecie co moze powodowac takie objawy??
#include <avr/io.h>
#include <util/delay.h>
int main()
{
DDRA = 0xFF; //port D na wyjście
PORTA = 0x00; //stan niski na porcie D
DDRC = 0x00; //port C na wejście
PORTC = 0x00; //stan niski na porcie C
DDRB = 0x10; //port B na wejscie
PORTB = 0xEF;
int wl = 0;
while(1)
{
if(!(PINB & 0x01)) //jesli wciśniety przycisk 1
{
wl++;
}
for(;wl>0;)
{
PORTB = 0x10; //zapal LED
if(PINC & 0x01) //czujnik LEWY on
{
PORTA = 0x04; //PRAWY silnik
}
if(PINC & 0x02) //czujnik PRAWY on
{
PORTA = 0x02; //LEWY silnik
}
if(PINC & 0x03) //czujnik PRAWY i LEWY on
{
PORTA = 0x06; //PRAWY i LEWY silnik
}
if(!(PINC & 0x03)) //czujnik PRAWY i LEWY off
{
PORTA = 0x00; //silniki off
}
}
PORTB = 0xFF;
_delay_ms(15);
PORTB = 0xEF;
_delay_ms(15);
}
}