Zrdavim, mohol by sa mi niekto kuknut aku tu mam chybu…som zaciatocnik v programovani mikrokontrolerov.
ATmega8…AVRstudio4…
while (1);
{
if (PINC.5 !=1)
{
c=c+10;
};
if (PINC.4 !=1)
{
c=c-10;
};
Pripodmienkach mi vyhadzuje takuto chybu…
error: expected ‘)’ before numeric constant
zatial dik
administrator: přejmenováno z "Chyba pri programovani…"
Petr
March 27, 2010, 12:34pm
2
Zkus to takhle:
while (1)
{
if (PINC.5 !=1)
{
c=c+10;
}
if (PINC.4 !=1)
{
c=c-10;
}
}
za slozenyma zavorkama se obvykle strednik nedela, a kdyz napises strednik za tim while, tak ti to porad vykonava jen ten while cyklus
aj ked to dam takto tak to vyhadzuje tu istu chybu…
while (1)
{
if(PINC.4 == 0) c++;
}
AB1
(AB)
March 27, 2010, 4:18pm
5
Zkus
if(bit_is_clear(PINC,4)) c++;
Vdaka…to uz prebehne…
Ale mam taky problem, pri zapojeni portu na tlacidlo mi program nereaguje…akoby ten vstup nedokazal zobrat log.0…
ako mam to tlacidlo zapojit?
jeste jedna otazecka, v cem programujes? PINC.1 ti funguje pouze v Codevision, ale podle te chyby bych spis rekl ze pouzivas WinAvr
Edit: ted sem si vsiml, ze delas v AVR studiu, tam tu hampulackou syntaxi PINC.1 pouzivat nemuzes, tam se jede myslim ze na cistym Cecku
zkus zapnout vnitrni pull-up
PORTC |= (1 << PC4);
zapol som pull-up a pouzil som v nekonecnej smycke tuto podmienku… if(!(PORTC & (1<<PC4))) … pri stlaceni tlacidla mi prikaz neprebehne … dam tu radsej viac toho kodu…
int main(void)
{
PORTC=0b00110000;
DDRC=0b00110000;
PORTC |= (1 << PC4);
lcd_init(LCD_DISP_ON);
while (1)
{
if(!(PORTC & (1<<PC4)))
{
lcd_gotoxy(7,0);
lcd_puts(“Martin”);
_delay_ms(1000);
}
}
}
Martin
(Martin)
March 27, 2010, 5:47pm
10
tlacitko musis mat medzi pinom a GND
no pokud vidim spravne tak mas spatne nastavenej registr DDRC, cislovani portu zacina na nule, tak musis pocitat poradne, jestlize tedy chces mit PC4 jako vstup tak to je patej pin, tedy musis mit DDRC=0b0010 0000;
tz mas nastavenej PC4 jako vystup
Vdaka…to som si ani neuvedomil…
No ale stale mi to na to tlacidlo nereaguje…
no nechces sem dat treba celej kod a zapojeni?
piityy
March 27, 2010, 8:58pm
15
Že ti nejde tlačítko pravděpodobně soudíš podle toho, že ti to nevypíše to slovo. Seš si jistej, že ti jede správně displej? zkus pro začátek něco jednoduššího jako třeba ledku.
Display funguje spravne…to mam otestovane…
Tlacitko je tiez v poriadku…
#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "lcd.h"
#include "util_delay.h"
static const PROGMEM unsigned char copyRightChar] =
{
0x07, 0x08, 0x13, 0x14, 0x14, 0x13, 0x08, 0x07,
0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x10, 0x00
};
int main(void)
{
PORTC=0b00110000;
DDRC=0b00000000;
PORTC |= (1 << PC4); /* Pin PC4 pull-up enabled */
/* initialize display, cursor off */
lcd_init(LCD_DISP_ON);
while (1)
{
if(!(PORTC & (1<<PC4)))
{
lcd_gotoxy(7,0);
lcd_puts("Martin");
_delay_ms(1000);
}
};
return 0;
}
AB1
(AB)
March 28, 2010, 5:22pm
17
Zapisujeme do PORTx, čteme z PINx.
Dakujem za rady…tlacitka som uz rozbehal…
Nie som v tomto obore moc doma, a preto si velmi vazim vasu pomoc.
nebol som prihlaseny…moj prispevok vyssie.