ATmega32 chybný výstup - LCD displej po 4bitové sběrnici

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):

#include <avr/io.h>
#include <util/delay.h>

#define LED_Set() PORTC |= 1
#define LED_Clr() PORTC &= ~1

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.

:arrow_right: administrator: přejmenováno z "ATmega32 chybný výstup"

V programu nic nevidím. JTAG je až od PC2, takže tím to taky není. Ta nula je podezřelá, vypadá to na chybu v zapojení.

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í.
ATmega32.JPG

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íš.

To se mi nezdá - je úplně jedno jestli dáš hex hodnotu (0x00), nebo bin (0b00000000) nebo dec (0) - překladač rozumí všemu.

Nenapsal verzi prostředí ani překladače. Jesli má nějakou třeba z roku 2007…