Dobrý den, snažím se rozchodit LCD display po 4bitové sběrnici a vyskytla se mi chyba v programu. Používám procesor ATmega32 a na výstupní piny se mi nedaří dostat zhola nic.
Stvořil jsem si malý program pro kontrolu, který využívá dané prvky pro změnu výstupních stavů na pinech (LED_Set a LED_Clr):
int main()
{
PORTC = 0x0F;
while(1)
{
_delay_ms(250);
_delay_ms(250);
LED_Clr();
_delay_ms(250);
_delay_ms(250);
LED_Set();
}
return 0;
}
Používám AVR Studio 4 a s kompilací žádný problém není. Pouze když připojím diodu na kontrolu slabě poblikává.
V nezatíženém stavu je na pinech 1,22V pro log. 0 a 4,57V pro log. 1.
Při zátěži diodou nebo posilovacím obvodem je při log. 1 - 1,55V. Přičemž dioda slabě poblikává. Napájení je PC zdroj.
Děkuji za každou radu.
administrator: přejmenováno z "ATmega32 chybný výstup"
Máš připojené obě země pin 11,31 ? - taky je dobré vždy připojovat AVCC na +. A pokud máš displej na portu C - pak musíš v konfiguračních pojistkách zakázat JTAG.
V zapojení doufám chyba není. Země 11,31 jsou propojené, VCC na + s 100n a 470u, AVCC na + přes 10nH cívku spolu s 100n kondíkem proti zemi, JTAGEN je zakázaný (odškrtnuto). Jinak kmitá na 16MHz krystalu, ale to s tím snad nesouvisí.
Vše vyřešeno. AVR studiu se nelíbila deklarace. V programech jsem používal DDRC = 0x00; stačilo použít DDRC = 0b00000000; a vše funguje ta,k, jak má. Ještě doladit poslední chyby s výpisem a je hotovo.
Tak jsem slepej bo co… Právě nastavení DDR registru ti v původním programu chybí. Pin, který má být výstupní, musí mít v DDR jedničku (po resetu jsou tam nuly). Ještě jsem po tom koukal. Jen už mi nedocvaklo, že to na začátku mainu není DDR ale PORT.
Pokud nepoužíváš ADC, cívku tam mít nemusíš.