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



Teraz jest 3 mar 2025, o 19:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 19 lut 2013, o 16:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Witam wszystkich :)

Mam problem z (najprawdopodobniej) zapisem EEPROMu.
Kod ten ma trafić do procka w latarce LED (włącznik jedynie załącza i odcina baterie).

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.


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


Klikanie włącznikiem (tzn. odcinanie zasilania) nie powoduje zmiany jasności...
Obecnie jasność zmienia się tylko jeżeli w definicji stałej struktury ładowanej do PROGMEM zmienię wartość u08 ktory_tryb.
Kompilacja w Eclipse przechodzi bez żadnych ostrzeżeń.
Aby mieć dostęp do EEPROMu trzeba ustawić jakieś FUSY?

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2013, o 17:25 
Offline
Moderator
Avatar użytkownika

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

Panie, Panie .... haaaalo stop ;) bo wybiegłeś na pole ale jak to się mówi pługa zapomniałeś ;) .... a gdzie u ciebie pętla główna (czyli ten pług) ??? ;)

w tył zwrot i idź go zabrać ;) i używać

bo teraz to w tym programie jakimś klawiszem to może MATRIX by zdążył ;)

to nie jest w ogóle program :(

_________________
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: 19 lut 2013, o 17:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Chyba się nie zrozumieliśmy...
PCB wygląda mniej-więcej tak: http://www.swiatelka.pl/upload_img/obra ... 5d6012.jpg
Włącznik podłącza i odłącza baterie od całego układu (razem z uC).

Cały więc myk polega na tym, aby program ten analizując odpowiednie sekwencje kliknięć (przy czym kliknięciem jest tu odcięcie zasilania od uC) wrzucił odpowiednie wypełnienie na ster AMC7135.

Chyba że ja czegoś nie zrozumiałem i to:

int main (void)
{
epr_to_ram();
(...)
return 0;
}
Nie jest głównym programem...
Pętli w stylu while (1)... Nie ma bo program ma (bardzo) szybko wykonać jakieś kombinacje po tej strukturze, zapisać ją, ustawić odpowiednie wypełnienie i zacząć idlować.

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2013, o 18:32 
Offline
Moderator
Avatar użytkownika

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

ok popatrzę wieczorkiem

_________________
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: 19 lut 2013, o 18:41 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

PS.
niepotrzebe jest sei();

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2013, o 20:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

No faktycznie ta linia
Kod:
    if (cfg_ram.eprOK|=15)    // Sprawdzenie poprawnosci EEPROM

jest dosyć radosną konstrukcją, ale powinna działać.
O ile dobrze pamiętam z http://mirekk36.blogspot.com/2012/11/avr-eeprom-struktury-poradnik-do-ksiazek.html to wyzerowany EEPROM przyjmuje wartość 0xFF, więc ten zapis miał w sposób "garażowy" sprawdzać poprawność EEPROMu.
Jeżeli starczy mi miejsca to pewnie wrzucę sprawdzanie tego typu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

ale to zajmuje ~100B FLASHa, a jest go tutaj cały 1KB więc nie mam za bardzo czym szastać.
Nie wiem czemu, ale przy takiej konstrukcji układ działa trochę inaczej.
Przy starej od razu po zaprogramowaniu dioda zaczynała świecić zaprogramowana jasnością, a teraz dopiero po jednym restarcie (po zaprogramowaniu zachowuje się jakby nie mógł w ogóle nic sczytać) ...
Przy obydwu oczywiście nie można tej jasności normalnie zmienić...

A sei(); będzie potrzebny w przyszłości (ochrona ogniwa, itp.), ale faktycznie obecnie jest niepotrzebny.

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2013, o 20:57 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Tam ma być != (wykrzyknik i równa się, czyli operator porównania różne) a nie |= (pionowa kreska i równa się)

Po wyjściu z main jest cli(), a potem pętla nieskończona. Sprawdź sobie w pliku wynikowym. Dlatego to sei() na nic się zda. Wstaw jednak to while(1); to jeden rozkaz.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2013, o 22:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Wielkie dzięki :)

W obydwu kodach ten sam błąd :roll:
Pierwszy zadziałał od kopa, drugi dopiero po przypisaniu wartości początkowych do EEPROMu, ale ważne, że już działa :D

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2013, o 14:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

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

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

nie działa prawidłowo? Obie zmienne są oczywiście u08. Konstrukcja ta ma wykonywać 2 różne operacje w zależności od stanu najmłodszego bitu (a pozostałe pomijać). Przy drugim zapisie jeżeli cfg_ram.ktory_tryb jest większy od 0b00000001 zawsze wychodzi z warunku 1. Dokonuje się niejawne rzutowanie? Dodam, że taki zapis:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

nie rozwiązuje problemu :(

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2013, o 15:17 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Zgadza się. Przy operacjach bitowych następuje promocja do typu int o długości 16-bit. Zastosowałeś rzutowanie, ale ono ma wyższy priorytet niż przesunięcie i w efekcie rzutowałeś uint8_t na uint8_t, a nie wynik przesunięcia. Tak powinno być w tym przykładzie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

osobiście sądzę że lepszy jest taki zapis:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 mar 2013, o 14:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Jeżeli ktoś jest ciekaw, co się narodziło z projektu to zapraszam do wątku:
http://www.swiatelka.pl/viewtopic.php?t=10224

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 mar 2013, o 14:42 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

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

No to skoro uzyskałeś TUTAJ pomoc to może wypadałoby opublikować to TUTAJ w dziale DIY? ;-)

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 mar 2013, o 14:43 
Offline
Moderator
Avatar użytkownika

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

Jaglarz napisał(a):
No to skoro uzyskałeś TUTAJ pomoc to może wypadałoby opublikować to TUTAJ w dziale DIY? ;-)


dokładnie - sam bym z chęcią sobie o tym u nas poczytał ;) ....

_________________
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: 9 mar 2013, o 14:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

Hmm... no faktycznie, macie rację :)
Nie wiem tylko czy będę w stanie dokładnie wytłumaczyć jak ten kod działa (zdolności dydaktycznych nie mam wcale, a konstrukcje są trochę zakręcone). :(

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 mar 2013, o 15:07 
Offline
Moderator
Avatar użytkownika

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

barney napisał(a):
Hmm... no faktycznie, macie rację :)
Nie wiem tylko czy będę w stanie dokładnie wytłumaczyć jak ten kod działa (zdolności dydaktycznych nie mam wcale, a konstrukcje są trochę zakręcone). :(


Postaraj się wytłumaczyć w ogóle co to za urządzenie, jak działa - jego zalety, przewaga nad podobnymi rozwiązaniami - o takie rzeczy szczególnie - żeby mogło być to też inspiracją dla innych

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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