Problem s AVR studiem a C

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
chroustek
Příspěvky: 21
Registrován: 26 zář 2007, 02:00

Problem s AVR studiem a C

#1 Příspěvek od chroustek »

Ahoj zacinam c WinAVR a AVR Studiem. Mam problem s kompilaci programu ktery pouzije cizi knihovnu. Napr jsem chtel popuzit toto .
http://winavr.scienceprog.com/example-a ... brary.html
V programu kdyz dam

Kód: Vybrat vše

int main (void) {

LCDinit;
}
tak se to zkompiluje, ale jakmile pokracuju v psani

Kód: Vybrat vše

int main (void) {
LCDinit;
LCDSendChar('A');
}
tak to vyhodi hlasku undefined reference to 'LCDSendChar'

hakamusai
Příspěvky: 943
Registrován: 17 dub 2007, 02:00

#2 Příspěvek od hakamusai »

Je potřeba si stáhnout z toho webu knihovny lcd_lib
http://winavr.scienceprog.com/download/AVR_LCD.zip

Jinak funkce "LCDSendChar" by měla být vidět -pokud je správně zařazena knihovna lcd_lib do projektu
Naposledy upravil(a) hakamusai dne 11 čer 2009, 08:47, celkem upraveno 1 x.

Uživatelský avatar
chroustek
Příspěvky: 21
Registrován: 26 zář 2007, 02:00

#3 Příspěvek od chroustek »

ahoj knihovny mam includovane do hlavniho.c souboru. Problem je v tom ze jakmile pouziju fci ktera ma parametr, tak to zarve tu chybu.

Uživatelský avatar
chroustek
Příspěvky: 21
Registrován: 26 zář 2007, 02:00

#4 Příspěvek od chroustek »

A prosimte jak by melo vypadat to "spravne" zarazeni knihovny do projektu ?, kde vsude krom #include "cesta_k.h" to musi byt nastaveno ?

hakamusai
Příspěvky: 943
Registrován: 17 dub 2007, 02:00

#5 Příspěvek od hakamusai »

Jestli Ti tu funkci vidí,tak je to pravděpodobně správně.Jak na to koukám v tý knihovně,tak mi připadá,že tam vkládáš špatný parametr - zkus dát jiný,nebo ho přetypovat.

Tohle prostředí nemám nainstalovaný,takže jen odhaduju.Třeba někdo poradí konkrétně.

Uživatelský avatar
chroustek
Příspěvky: 21
Registrován: 26 zář 2007, 02:00

#6 Příspěvek od chroustek »

tak to zkousim s jinou knihovnou primo z avrlibc a kdy naprikal chci zavolat

Kód: Vybrat vše

 lcdGotoXY(0,0);
(zde by snad nemel byt problem) tak to zase zarve na undefined reference to lcdGotoXY.......... Neco je spatne a ja nevim co :o urcite je to nejaka kravovina ale uz nad tim dumam 2 den, pomozte mi nekdo nebo me z toho klepne ..... [/code]

Uživatelský avatar
jano80
Příspěvky: 73
Registrován: 16 lis 2008, 01:00
Bydliště: Michalovce

#7 Příspěvek od jano80 »

no ten problem som mal aj ja.
skus namiesto #include "lcd_lib.h"
#include "lcd_lib.c"

Uživatelský avatar
piitr
Příspěvky: 1003
Registrován: 19 říj 2007, 02:00
Kontaktovat uživatele:

#8 Příspěvek od piitr »

Místo

Kód: Vybrat vše

LCDinit;
bys měl psát:

Kód: Vybrat vše

LCDinit();
Ten tvůj zápis znamená: "Vyhodnoť adresu té funkce a pak ji zahoď."
Teprve ty závorky představují samotné zavolání funkce.
Počítám, že pak ti to udělá undefined reference i na to LCDinit.

Vkládat .c místo .h není úplně dobré řešení. Správně se to má dělat tak:
1) Přeložíš tvůj program.c, vznikne program.o.
2) Přeložíš lcd_lib.c, vznikne lcd_lib.o.
3) Pak všechny ty .o slinkuješ dohromady. Tím se právě dohledají ty reference.

Uživatelský avatar
chroustek
Příspěvky: 21
Registrován: 26 zář 2007, 02:00

#9 Příspěvek od chroustek »

diky za rady, uz to frci ;-)

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“