Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 15 mar 2026, o 12:53


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 11 gru 2016, o 14:34 
Offline
Użytkownik

Dołączył(a): 09 lis 2014
Posty: 33
Pomógł: 0

Witam,po obejrzeniu poradnika P.Mirka o tym jak działa kompilator postanowiłem przerobić "ten materiał" i wziąłem się za dzielenie rożnych programików.

Ale trochę mi nie wychodzi.
Wziąłem się za program P.Kardasia z Mikropasji (ten z odcinka 2) i podzieliłem go tak:
main.c -#include (biblioteki oraz plik "klawisze.h") int main(void) .....
klawisze.c - #include (biblioteki oraz plik "klawisze.h") sama definicja funkcji void moja_zmiana_czasu(...)
klawisze.h -#define.... oraz deklaracje funkcji void moja_zmiana_czasu oraz dekl. key_lock1 i key_lock2.

po próbie kompilacji nie wyświetla mi się żaden "robal" w eclipse ale w konsoli wyświetla się komunikat ld returned 1 exit status (w eclipse gadget tak samo) siedzę już długo i szukam gdzie popełniłem błąd i niestety nie mogę znaleźć.

Po "sklejeniu" tego pliku w jeden plik main.c wszystko działa poprawnie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2016, o 15:43 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

Zadajesz pytanie dla JASNOWIDZA ...

Jeśli zadasz pytanie dla zwykłych ludzi - czyli pokażesz kod który napisałeś to wtedy będzie można pokazać ci gdzie robisz babole - bo sam komunikat błędu który opisujesz właśnie mówi że robisz jakiegoś paskudnego babola

Poza tym w Bluebooku, który jak widzę masz - masz też bardzo ładnie opisaną zasadę podziału projektu na pliki i to ładnie z tabelkami żeby pokazać co i jak - warto więc również zajrzeć do książki.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2016, o 19:02 
Offline
Użytkownik

Dołączył(a): 09 lis 2014
Posty: 33
Pomógł: 0

Witam,
1 plik to main.c
2 plik klawisze.h
3 plik klawisze.c




Kod:
/*
 * main.c
 *
 *  Created on: 11 gru 2016
 *      Author: Marcin
 */


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


#include "klawisze.h"


int main(void)
{
   DDRA |= 0xff;   //cały port A jako wyjście
   PORTA |= 0xff;  //cały port a wystawine 1 (stan wysoki czyli VCC)

//*********INICJALIZACJA******************//

   while(1)
   {

      for( uint8_t i=0; i<8; i++ )
      {

         PORTA &= ~(1<<i);

         if(i>0) PORTA |= (1<<(i-1));

         //_delay_ms(200);
         moja_zmiana_czasu(zmiana_czasu);

      }

      for( int8_t i=8; i>-1; i-- )
      {
         PORTA &= ~(1<<i);
         PORTA |= (1<<(i+1));

         //_delay_ms(200);
         moja_zmiana_czasu(zmiana_czasu);

      }

   }
}



Kod:
/*
 * klawisze.h
 *
 *  Created on: 11 gru 2016
 *      Author: Marcin
 */

#ifndef KLAWISZE_H_
#define KLAWISZE_H_


#define LED1 (1<<PA0)
#define LED1 (1<<PA0)

#define LED_TOG1 PORTA ^= LED1
#define LED_TOG2 PORTA ^= LED2

#define KEY1 (1<<PD0)
#define KEY2 (1<<PD1)




void moja_zmiana_czasu(uint16_t ms);

uint16_t key_lock1=0;
uint16_t key_lock2=0;
uint16_t zmiana_czasu = 500;






#endif /* KLAWISZE_H_ */


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

#include "klawisze.h"



void moja_zmiana_czasu(uint16_t ms)
{

   while( ms-- ){


//Klawiasz 1
      if(!key_lock1 && !(PIND & KEY1))
      {
         key_lock1=500;
         zmiana_czasu += 100;
         if(zmiana_czasu > 800 ) zmiana_czasu = 800;

      }else if (key_lock1 && (PIND & KEY1))key_lock1--;


//klawisz 2

      if(!key_lock2 && !(PIND & KEY2))
      {
         key_lock2=500;
         zmiana_czasu -= 50;
         if(zmiana_czasu <50) zmiana_czasu =50;


      }else if (key_lock2 && (PIND & KEY2)) key_lock2--;
      _delay_ms(0.95);
   }
}



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2016, o 20:24 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3230
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

topic7402.html

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2016, o 20:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
W ramach wstępu: z pliku *h wywal wartości:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dalej doczytaj, no chyba że przystawi.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2016, o 21:51 
Offline
Użytkownik

Dołączył(a): 09 lis 2014
Posty: 33
Pomógł: 0

Poprawnie wprowadziłem kod.
Wyciąłem wartości :

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
500;

z pilku h. ale nie przyniosło to efektu.

więc gdzie popełniam błąd?



Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.






Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2016, o 22:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
W pliku *h nie może być np.: key_lock = 1;
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pisałem wywalić wartości a nie wszystko.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 00:08 
Offline
Użytkownik

Dołączył(a): 09 lis 2014
Posty: 33
Pomógł: 0

Wpisałem ta jak napisałeś ale wywalało ten sam błąd.

dodatkowo wkleiłem do main.c:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i poszło.

Możesz mi wytłumaczyć dlaczego?
Resztę postaram się szybko uzupełnić i doczytać.

Dziękuję Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 00:19 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

Marcin Bąk napisał(a):
uint16_t key_lock1=0;


Po pierwsze NIGDY się nie inicjalizuje zmiennych globalnych ZEREM bo jest to robione automatycznie

po drugie

Marcin Bąk napisał(a):
Możesz mi wytłumaczyć dlaczego?


Przecież masz to w Bluebooku - wciąż wspominam o DEKLARACJI i DEFINICJI ale widzę że kolega nie chce zrozumieć czym się różni deklaracja od definicji zmiennej - i wtedy też tak jak mówiłem w książce - wciąż będzie problem ze zrozumieniem wielu rzeczy w C

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 00:29 
Offline
Użytkownik

Dołączył(a): 09 lis 2014
Posty: 33
Pomógł: 0

Teraz rozumiem,
wpisując wartości do key_lock i ,zapisując to w pliku h. zrobiłem babola to to przecież definicja.

W takim razie po babolach z operatorami (kilka razy przeczytałem te rozdziały i poćwiczyłem) pora na powrót do rozdziału z podziałem plików i utrwalenie tego materiału.

Jeszcze daleka droga przede mną wiec jeszcze was pomęczę takimi oczywistymi (dla was) pytaniami :) :) :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 18:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Marcin Bąk napisał(a):
Wpisałem ta jak napisałeś ale wywalało ten sam błąd

Nie wiem, ja przeniosłem ( bez wnikania do czego to służy ) i przeszło:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Obrazek

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO