EdW 1/2006 - Płytka testowa kursu AVR-GCC

Jeżeli masz jakieś uwagi dotyczące bieżącego lub archiwalnych numerów "Elektroniki dla wszystkich" lub zauważyłeś błędy czy nieścisłości to jest to odpowiednie miejsce aby o tym napisać.
ODPOWIEDZ
Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 24 cze 2007, 13:44

treker pisze:Układ z lepszą płytką wykonawczą bedzie jako nowy kit czy poprawka do tego?
Raczej sama płytka wykonawcza byłaby jako inny zestaw. Jeśli dobrze rozumiem, teraz płytka wykonawcza i sterująca są sprzedawane oddzielnie...
Po prostu nie chodzi mi jedynie o prostą poprawkę polegającą na usunięciu problemów z programowaniem, ale także na dodaniu i przemieszczeniu kilku elementów. Na aktualnej płytce brakuje mi na przykład możliwości prostego podłączenia 1wire i i2c.

treker
-
Posty: 48
Rejestracja: 11 lut 2007, 15:34
Kontakt:

Post autor: treker » 26 cze 2007, 17:41

Koppel pisze:Jeśli dobrze rozumiem, teraz płytka wykonawcza i sterująca są sprzedawane oddzielnie...
Wydaje mi się, że nie.

oki
-
Posty: 3
Rejestracja: 16 wrz 2007, 11:38
Lokalizacja: Gdańsk

Post autor: oki » 16 wrz 2007, 11:47

Witam
Mam nadzieję, że jeszcze ktoś tu zagląda. Mam taki problem. Rozpocząłem "przerabianie" kursu C z EDW. "Zassałem" narzędzia, zainstalowałem, skonfigurowałem. Zassałem pliki "make" i "clean" oraz listingi ze strony Autora. Dodałem "Tools" "make" i Clean". Przy próbie kompilacji (F7) otrzymuję coś takiego:
"
> "C:\WinAVR\make.bat"

C:\WinAVR\_do_cz1\_do_cz1\hello>make.exe
AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x170000, State 0x10000
C:\WinAVR\UTILS\BIN\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487

-------- begin --------
avr-gcc (GCC) 3.4.3
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x170000, State 0x10000
C:\WinAVR\UTILS\BIN\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
make.exe: *** [sizebefore] Error 1

> Process Exit Code: 2
"

Jeżeli muszę podać jeszcze jakieś informacje, to proszę pytać.
Jeżeli ktoś może mi podsunąć jakąkolwiek poradę, to będę BARDZO wdzięczny (bez tego niezbyt mogę "człapać" dalej w kursie C :) :) ).

Z góry dziękuję za odpowiedzi.
Pozdrawiam serdecznie
Oki
Ostatnio zmieniony 16 wrz 2007, 14:03 przez oki, łącznie zmieniany 1 raz.

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 16 wrz 2007, 14:05

oki pisze:llocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x170000, State 0x10000
C:\WinAVR\UTILS\BIN\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
Wygląda to tak jakby na komputerze były zainstalowane dwie różne wersje Cygwina. Proszę wyszukać biblioteki cygwin1.dll i zostawić tylko jedną kopię.

Jeśli na komputerze znajduje się pełny cygwin, proponuję usunąć cygwin1.dlll z katalogu /bin instalacji WinAVR.

oki
-
Posty: 3
Rejestracja: 16 wrz 2007, 11:38
Lokalizacja: Gdańsk

Post autor: oki » 16 wrz 2007, 16:53

Witam

Przede wszystkim bardzo dziękuję za błyskawiczną odpowiedź.
Usunięcie drugiego "cygwin1.dll" nie pomoglo. Nie wiem, czy tak powinno być, ale gdy uruchomię "Programers Notepad", to w oknie programu na górze (pozioma, niebieska listwa tytułowa) wyświetla mi się : "Programers Notepad 2", i to samo mam w listwie zadań na dole ekranu.
Na tym komputerze był kiedyś zainstalowany PN, ale potem była reinstalacja systemu. Wyszukiwanie pliku "pn.exe" wskazuje tylko jeden taki plik (w aktualnej lokalizacji WinAVR...).
Może jest jeszcze jakaś podpowiedź na taką sytuację.
Jeszcze raz dziękuję za poprzednią wskazówkę i czekam na ewentualne kolejne.

Pozdrawiam
Oki

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 16 wrz 2007, 17:03

Z cygwinem jest taki problem, że jeśli w systemie istnieją inne jego instalacje, to wcale nie musi kłócić się przez bibliotekę cygwin1.dll. WinAVR korzysta jeszcze z cygncurses-8.dll, cygiconv-2.dll. Może nawet z czegoś jeszcze? Jeśli to możliwe proszę usunąć, przynajmniej na próbę, całkowicie aplikację w której wystąpił drugi plik cygwin1.dll.

Ten problem nie ma nic wspólnego w Programmers Notepad'em - to jest tylko edytor. Problem pojawia się w chwili uruchomienia narzędzi do kompilacji.

oki
-
Posty: 3
Rejestracja: 16 wrz 2007, 11:38
Lokalizacja: Gdańsk

Post autor: oki » 16 wrz 2007, 17:09

Witam

Spróbuję, ale muszę z tym poczekać do jutra. Dzisiaj niestety nie mogę usunąć z komputera, z którego korzystam wspomnianej aplikacji.

Jeszcze raz bardzo dziękuję, i jutro dam znać jak zadziałało.
Pozdrawiam
Oki

[ Dodano: 2007-09-17, 10:03 ]
Witam
OGROMNE dzięki. Zainstalowałem narzędzia na innym komputerze (bez aplikacji, która miała "cygwin1.dll"), i co :
"

-------- end --------


> Process Exit Code: 0
".
Jeszcze raz dziękuję (i żałuję, że na tym forum nie ma "sogów", "bajaderek" :) :), albo czegoś innego dla wyrażenia uznania).

Jeżeli Autor będzie w Trójmieście, to proszę o kontakt i od razu zapraszam na kebab i "duże, bezalkoholowe z pianką :) :) ".

Pozdrawiam
Oki

bluex
-
Posty: 9
Rejestracja: 26 wrz 2006, 14:54
Lokalizacja: Grudziądz

Post autor: bluex » 30 lis 2007, 11:29

Mam jeszcze pytanie dotyczące najnowszego WinAVR(20070525), programy korzystające z rs'a po poprawnym skompilowaniu nie odbierają znaków wysyłanych do mikrokontrolera
(np po ponownym skompilowaniu bootloadera z części 12 komunikacja nie jest w ogóle nawiązywana)

Kod: Zaznacz cały

#include <avr\io.h>

#define DEF_BAUD 4800

#define RS_MAKE_UBRR(baud) (F_CPU/(baud*16l)-1)
#define RS_SET_BAUD(baud) \
	{UBRR0H = (uint8_t)(RS_MAKE_UBRR(baud)>>8); \
	 UBRR0L = (uint8_t)RS_MAKE_UBRR(baud); }

int rs_put(char znak)
{
	while(!(1<<UDRE0 & UCSR0A)) {}
	UDR0 = znak; 
	return 0;
}

int rs_get(void)
{
	char znak; 
	while(!(1<<RXC0 & UCSR0A)) {}
	znak = UDR0; 
	return znak;
}

int main(void)
{
	char c = 0;
	
	RS_SET_BAUD(DEF_BAUD); 
	UCSR0C = 1<<URSEL0 | 1<<UCSZ01 | 1<<UCSZ00;
	UCSR0B = 1<<RXEN0 | 1<<TXEN0; 
	UCSR0A = 0;
	
	for(;;) {
		c=rs_get();
		rs_put(c);
	}
	//for(;;)
	//	rs_put('a'+(c++)%('z'-'a'+1));
}
powyższy program działa dopiero po usunięciu linii

Kod: Zaznacz cały

UCSR0C = 1<<URSEL0 | 1<<UCSZ01 | 1<<UCSZ00;
problem występuje tylko z odbieraniem, nadawanie działa bardzo dobrze (np. nieskończona pętla wypisująca alfabet w komentarzu)
może ma ktoś jakieś pomysły?

Problem rozwiązany - wystarczło wstawienie nowego pliku Makefile :oops:
Mam jednak jeszcze jedo pytanie dotyczące bootloadera - czemu w miejscu, gdzie powinna być obsługa programowania pamięci eeprom nie ma nic?

Kod: Zaznacz cały

else if(komenda == 'e')
{
	// Zapis bufora pod określony adres w pamięci eeprom
}

treker
-
Posty: 48
Rejestracja: 11 lut 2007, 15:34
Kontakt:

Post autor: treker » 01 gru 2007, 16:50

Kiedy będzie książka?

Awatar użytkownika
gwozdex
Użytkownik
Posty: 879
Rejestracja: 24 lut 2006, 10:04
Lokalizacja: Czechowice-Dziedzice
Kontakt:

Post autor: gwozdex » 01 gru 2007, 23:03

To pytanie należałoby skierować do autora p. Radosława Koppla (przepraszam jeśli źle odmieniłem nazwisko).

sasha_amator
-
Posty: 10
Rejestracja: 07 wrz 2006, 22:15
Lokalizacja: katowice

Post autor: sasha_amator » 21 lut 2008, 23:48

witam,
przy instalacji winavr postepowalem zgodnie z zalecaniami zawartymi w kursie C opisanego w EdW, mimo tego mam problem , mianowicie po skompilowaniu programu w okienku output drukuje sie cos takiego :

> "C:\WinAVR\make.bat"

C:\projekt>make.exe clean

-------- begin --------

Cleaning project:
rm -f test.hex
rm -f test.eep
rm -f test.cof
rm -f test.elf
rm -f test.map
rm -f test.sym
rm -f test.lss
rm -f test.o
rm -f test.lst
rm -f test.s
rm -f test.d
rm -f .dep/*
-------- end --------


> Process Exit Code: 0

najdziwniejsze jest to, ze drukuje sie zawsze to samo, niezaleznie od tego co znajduje sie w kompilowanym pliku! moge napisac tam wypracowanie z polskiego,a w output zawsze bedzie to samo.

bardzo prosze o pomoc.

mam winavr 20050214, ale probowalem tez 20071221-efekt taki sam.

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 22 lut 2008, 7:13

Nie używasz przypadkiem "Make Clean"? bo to komunikat z czyszczenia projektu z plików wynikowych.

Do kompilowania używa się "Make All" a później do zaprogramowania "Program".

sasha_amator
-
Posty: 10
Rejestracja: 07 wrz 2006, 22:15
Lokalizacja: katowice

Post autor: sasha_amator » 22 lut 2008, 9:17

uzywalem Make oraz Make All, ale efekt ciagle taki sam , pozniej wcisnalem Make clean ,ale w outputs wypisuje to samo. w dodatku nie generuje zadnych plikow, chociaz z tego output wynika jakby generowl pliki i od razu je usuwal. tylko dlaczego to sie kompiluje bez wzgledu na zawartosc kompilowanego pliku ?

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 22 lut 2008, 9:24

Z tego co wkleiłeś w poprzednim poście wynika że uruchamiasz plik make.bat i on ma polecenie do czyszczenia w sobie.

Makefile masz poprawnie skonfigurowany? ja przyznam się że nie spotkałem się z takim problemem i projekty się poprawnie kompilowały od razu po zainstalowaniu winavr.

sasha_amator
-
Posty: 10
Rejestracja: 07 wrz 2006, 22:15
Lokalizacja: katowice

Post autor: sasha_amator » 22 lut 2008, 9:51

plik make.bat stworzylem dokladnie w taki sposob jak bylo to opisane w Edw. wyglada on nastepujaco:

@set PATH=C:\WinAVR\bin;C:\WinAVR\utils\bin;
make.exe clean

co ciekawe plik clean.bat ma tylko inna nazwa , ale wyglada dokladnie tak samo :

@set PATH=C:\WinAVR\bin;C:\WinAVR\utils\bin;
make.exe clean

wydalo mi sie to dziwne , ale poniwaz nie znam sie na tym, wiec przyjalem to jako pewnik.

makefile tez zmienilem tak jak to bylo w Edw, ale wydaje mi sie ze tam raczej nie ma bledow.
zmienilem pole MCU, F_CPU i target.

ODPOWIEDZ