Odpowiedz 
 
Ocena wątku:
  • 3 Głosów - 3.33 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Programowanie w języku C w środowisku AVR Studio4
SQ6ADE Offline
Radjoamator.
****

Liczba postów: 539
Dołączył: 05-04-2010
Post: #61
RE: Programowanie w języku C w środowisku AVR Studio4
Sorry - ale bez przeczytania dokumentacji do elementów elektronicznych sterowanych programem (uP i peryferia) - może być lipa.
Przepraszam - już się nie wtrącam.

tylko na FM UKF -> Just True Sound Hi-Fi Smile
26-01-2012 23:16
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP5IWI Offline
Janek
*

Liczba postów: 32
Dołączył: 01-02-2009
Post: #62
RE: Programowanie w języku C w środowisku AVR Studio4
[
Kliknijcie na "New Project"
2. Potem wybierzcie "AVR GCC" i resztę tak jak zaznaczyłem na rysunku. wybierzcie sobie katalog w którym macie wszystkie dotychczasowe lekcje, następnie klikacie "Next" i zaznaczacie to co na rysunku .......

Przy kompilowaniu moich wypocin(dołożyłem plik "makefile") a także lekcji 9 mam taki sam komunikat:

Build started 26.1.2012 at 22:44:51
make: *** Brak reguł do zrobienia obiektu `../NOWY.c', wymaganego przez `NOWY.o'. Stop.
Build failed with 1 errors and 0 warnings...
Przerabiałem kilka razy i zawsze mam taki wynik,jakieś sugestie?
26-01-2012 23:54
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9RFC Offline
Jerzy
*****

Liczba postów: 1,193
Dołączył: 02-07-2010
Post: #63
RE: Programowanie w języku C w środowisku AVR Studio4
(26-01-2012 21:04)SQ6ADE napisał(a):  Nie tracić czasu proca i korzystać z informacji zgromadzonych w wyświetlaczu.
Lektura obsługi sterownika HD-LCD wskazana.

A jeszcze konkretniej. Jakieś praktycznie sprawdzone przykłady?


(26-01-2012 21:44)SP4EJT napisał(a):  
(26-01-2012 20:57)SQ9RFC napisał(a):  Nadal dręczy mnie pytanie: po co robisz zapis do portu który ustawiony jest do odczytu?
Mógłbyś rozwinąć to pytanie ? bo nie do końca wiem o co chodzi ...


Lekcja 5
( komentarze moje)
...
int main(void)
{
DDRA = 255;
DDRB = 0x00; // ustawiasz wszystkie piny portu B jako wejścia
PORTB= 0x01; // tu nie kapuje: wpisujesz do portu B wartość, po co ? skoro ten port wcześniej ustawiasz do odczytu.
PORTA= 0b01010101;
while(1)
...

73 JERZY SQ9RFC
(Ten post był ostatnio modyfikowany: 27-01-2012 2:40 przez SQ9RFC.)
27-01-2012 2:40
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #64
RE: Programowanie w języku C w środowisku AVR Studio4
(26-01-2012 23:16)SQ6ADE napisał(a):  Sorry - ale bez przeczytania dokumentacji do elementów elektronicznych sterowanych programem (uP i peryferia) - może być lipa.
Przepraszam - już się nie wtrącam.
Ja o tym wiem, ale ludzie korzystający z tego kursu nie są najlepsi w tym temacie - podejrzewam że niektórzy na tyle słabo znają komputerowe sprawy, że nie znajdą właściwych pomocy w internecie ... nie wpominając już o czytaniu chociażby noty aplikacyjnej AD9951 w języku angielskim (ze zrozumieniem).
Mówisz o przypadku gdy wszyscy już umieją pewne rzeczy. Tutaj jest totalna "zerówka" jak pewnie sam zauważyłeś po pytaniach lursantów kierowanych do mnie. Nie chciałem Cię obrazić (jesli tak sie stało to przeprawszam), tylko wyjasnić, że ten sposób edukacji, tutaj nie zda egzaminu ( jak na tą chwilę ). Oczywiscie potem gdy załapią bakcyla sam ich pognam batem do tego aby sami szukali wiadomości i sami siebie rozwijali.
(26-01-2012 23:54)SP5IWI napisał(a):  Przy kompilowaniu moich wypocin(dołożyłem plik "makefile") a także lekcji 9 mam taki sam komunikat:
Build started 26.1.2012 at 22:44:51
make: *** Brak reguł do zrobienia obiektu `../NOWY.c', wymaganego przez `NOWY.o'. Stop.
Build failed with 1 errors and 0 warnings...
Przerabiałem kilka razy i zawsze mam taki wynik,jakieś sugestie?
Janku, czy potrafisz skompresować katalog z zawartością tego niedziałającego projektu i przesłać tu, na forum jako załącznik ? Tak jak ja to robię z lekcjami, wtedy będę mógł sprawdzić to u siebie i być może znajdę błąd.
(26-01-2012 20:57)SQ9RFC napisał(a):  ...
int main(void)
{
DDRA = 255;
DDRB = 0x00; // ustawiasz wszystkie piny portu B jako wejścia
PORTB= 0x01; // tu nie kapuje: wpisujesz do portu B wartość, po co ? skoro ten port wcześniej ustawiasz do odczytu.
PORTA= 0b01010101;
while(1)
...
Lekcja3 się kłania, oto jej fragment :
...
DDRB = 0b00000000; // właczyłem do zabawy port B
PORTB= 0b00000111; // "1" oznacza podciągnięcie wejścia do napięcia zasilania Atmegi poprzez wewnętrzny rezystor
// możecie sprawdzić miernikiem że wyprowadzenia B0, B1 i B2 mają jakieś napięcie w przeciwieństwie do B3, B4 .... B7
...

Tłumaczę teraz przypadek z twojego pytania (czyli lekcji 5):
ten zabieg podciąga ( PB0 ) do napiecia zasilania - inaczej mówiąc do stanu wysokiego. Dzieje się to za sprawą dołączanego wewnątrz atmegi rezystora pomiędzy zasilaniem a tym wyprowadzeniem.
Tam jest podpięty przycisk ( a drugim biegunem do masy). Żeby Atmega wiedziała o tym że przyciskasz, stosuje się zabieg polegający na "podciągnięciu" tego wyprowadzenia ( czyli PB0 ) do stanu wysokiego. Naciskając przycisk robimy zwarcie pomiędzy masą a wyprowadzeiniem PB0 uzyskując w ten sposób zmianę stanu wysokiego na stan niski na tym wyprowadzeniu ( czyli zmianę z 1 na 0 ) Przy puszczeniu przycisku stan logiczny tego wyprowadzenia z powrotem wraca do "jedynki logicznej" za sprawą rezystora podciągającego.
(Ten post był ostatnio modyfikowany: 27-01-2012 8:29 przez SP4EJT.)
27-01-2012 7:42
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9RFC Offline
Jerzy
*****

Liczba postów: 1,193
Dołączył: 02-07-2010
Post: #65
RE: Programowanie w języku C w środowisku AVR Studio4
Ok znów nie doczytałem.
Pytanko 1 dla speców od PICa - czy tak samo (programowo) można podciągać do stanu wysokiego wejścia? czy trzeba to robić zewnętrznym opornikiem - przeglądając różne schematy i w ATMEDZE i w PICu prawie zawsze są zewnętrzne rezystory.
Pytanko 2 dla super-speców: czy da się switch podłączyć pod linię danych wyświetlacza i nie marnując nóg procka zrobić klawiaturę. W tym czasie gdy na wyświetlacz nic nie wystawiamy procek "słucha" switcha?

73 JERZY SQ9RFC
27-01-2012 13:14
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9JXB Offline
Początkujący
**

Liczba postów: 64
Dołączył: 22-03-2010
Post: #66
RE: Programowanie w języku C w środowisku AVR Studio4
Cytat:#include <avr/io.h>
#include <util/delay.h>

/* Konfiguracja - na którym porcie i na wyprowadzeniach puszczamy sterowanie LCD */
#define DEF_PORT DDRA /* wpisujemy DDRA, DDRB, DDRC, DDRD - zależy który port będzie obsługiwał wyświetlacz */
#define LCD_PORT PORTA /* wpisujemy, który port ma wysyłać dane do wyświetlacza - 4 starsze bity portu (7,6,5,4) */
/* podłączamy odpowiednio do wyjść D7, D6, D5, D4 wyświetlacza */
#define LCD_RS 3 /* które wyprowadzenie PORTU będzie linią RS */
#define LCD_E 2 /* które wyprowadzenie portu ma być linią E */
/* koniec konfiguracji. Pamiętajcie że numeracja wyprowadzeń PORTU zaczyna sie od "0" */

void bajt_lcd(unsigned char znak)
{
LCD_PORT = (LCD_PORT & 15)|(znak&240);
LCD_PORT |= (1<<LCD_E);
LCD_PORT &= (~1<<LCD_E);
LCD_PORT = (LCD_PORT & 15)|(znak<<4);
LCD_PORT |= (1<<LCD_E);
LCD_PORT &= (~1<<LCD_E);
_delay_ms(10);
}

void napis_lcd(char tab[])
{
LCD_PORT = LCD_PORT|(1<<LCD_RS);
int i=0;
while(tab[i]!=0)
{
bajt_lcd(tab[i]);
i=i+1;
}
}


void init_lcd(void)
{
DEF_PORT = 0xf0|(1<<LCD_RS)|(1<<LCD_E);
unsigned char i;
for(i=0;i<3;i++)
{
LCD_PORT = (LCD_PORT&0x0f)|(0x30&0xf0);
LCD_PORT |= (1<<LCD_E);
LCD_PORT &= (~1<<LCD_E);
_delay_ms(50);
}
LCD_PORT = (LCD_PORT&0x0f)|(0x20&0xf0);
LCD_PORT |= (1<<LCD_E);
LCD_PORT &= (~1<<LCD_E);
_delay_ms(50);
bajt_lcd(0x28); // Interfejs 4-bit, Wyświetlacz dwuwierszowy, Matryca znaków 5x7
bajt_lcd(0x01); // czyszczenie i przesuniecie na poczatek LCD
bajt_lcd(0x0e); // włączenie wyświetlacza kursor widoczny niemrygający
}

Czy ten kod dla portu A jest prawidłowy? nazwy portów pokazałem jako tekst pogrubiony.

P.S. wczytałem plik nowy.hex i nic się nie wyświetla. W kompilacji nie mam errorów.

Janek SQ9JXB
(Ten post był ostatnio modyfikowany: 27-01-2012 13:54 przez SQ9JXB.)
27-01-2012 13:54
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP5IWI Offline
Janek
*

Liczba postów: 32
Dołączył: 01-02-2009
Post: #67
RE: Programowanie w języku C w środowisku AVR Studio4
Janku, czy potrafisz skompresować katalog z zawartością tego niedziałającego projektu i przesłać tu, na forum jako załącznik ? Tak jak ja to robię z lekcjami, wtedy będę mógł sprawdzić to u siebie i być może znajdę błąd.

Dzisiaj widocznie lepszy dzień,zrobiłem od nowa i poszło normalnie, przerobiłem wszystkie porty i na każdym jest ok.Wyświetla się napis "napis_"
27-01-2012 14:22
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9JXB Offline
Początkujący
**

Liczba postów: 64
Dołączył: 22-03-2010
Post: #68
RE: Programowanie w języku C w środowisku AVR Studio4
Cytat:Janku, czy potrafisz skompresować katalog z zawartością tego niedziałającego projektu i przesłać tu, na forum jako załącznik ?

No problem.

P.S. Czy 4 młode bity wyświetlacza mają być podłączone do masy (czyli D3, D2, D1, D0 do masy)


Załączone pliki
.zip  nowy.zip (Rozmiar: 14.48 KB / Pobrań: 898)

Janek SQ9JXB
(Ten post był ostatnio modyfikowany: 27-01-2012 15:02 przez SQ9JXB.)
27-01-2012 15:02
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #69
RE: Programowanie w języku C w środowisku AVR Studio4
(27-01-2012 14:22)SP5IWI napisał(a):  Dzisiaj widocznie lepszy dzień,zrobiłem od nowa i poszło normalnie, przerobiłem wszystkie porty i na każdym jest ok.Wyświetla się napis "napis_"
... tak trzymaj ... napisz co było nie tak.

SQ9JXB, to było do Janka SP5IWI Smile
U mnie na płycie ewaluacyjnej są podłączone do masy, ale widziałem kilka schematów w sieci na których te młodsze bity były niepodłączone więc pewnie zadziała w obu przypadkach.
(27-01-2012 13:54)SQ9JXB napisał(a):  Czy ten kod dla portu A jest prawidłowy? nazwy portów pokazałem jako tekst pogrubiony.
Jeżeli zmieniłeś tylko DDRD na DDRA i PORTD na PORTA to TAK, powinno działąć na porcie A
SQ9JXB napisał(a):P.S. wczytałem plik nowy.hex i nic się nie wyświetla. W kompilacji nie mam errorów.
Wcześniejsze lekcje Ci działały, a ta dziewiąta nie działa ??
Posprawdzaj jeszcze raz wszystkie połączenia. Janek SP5IWI też miał problem ale znalazł rozwiązanie
(Ten post był ostatnio modyfikowany: 27-01-2012 15:28 przez SP4EJT.)
27-01-2012 15:28
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9JXB Offline
Początkujący
**

Liczba postów: 64
Dołączył: 22-03-2010
Post: #70
RE: Programowanie w języku C w środowisku AVR Studio4
Cytat:Wcześniejsze lekcje Ci działały, a ta dziewiąta nie działa ??

Tak poprzednie lekcje działają bez problemu.

Połączenia portu A tak jak np. w lekcji 6.

Teraz wczytałem nowy.hex i .................nie wyświetla nic.

Mam ustawiony maksymalny kontrast wyświetlacza, włączam zasilanie i kwadraciki górnej linii są widoczne, i po 8 sekundach znikają.

Janek SQ9JXB
(Ten post był ostatnio modyfikowany: 27-01-2012 18:02 przez SQ9JXB.)
27-01-2012 18:01
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 18 gości