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



Teraz jest 8 lis 2024, o 15:47


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 18 lis 2014, o 21:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 sie 2013
Posty: 87
Pomógł: 0

Witam wszystkich

Od wczoraj działam na nowym ATB i mam jakiś dziwny problem:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


PORTA 0-4 zaadresowane jako wejścia oraz podłączone do przycisków na ATB do KBD od 1-5 (PA0-1...PA4-5)
Wg programu powyżej led na PA5 powinein zmieniać stan po wciśnięciu K3 ale niestety jest przesunięty w lewo na K2
Przy próbie na K1 czyli PA0 zaczyna wariować tak jakby był zwarty do masy, sprawdziłem po odłączeniu zasilania i wyjęciu procka czy nie ma zwarć i wygląda że jest ok.
Próbowałem to przenieść na PORTD - i to samo. Porty nie są używana w innych plikach programu a SSD działa na TWI.

Możliwe że jest uszkodzony procek czy raczej to będzie coś w eclipse?

Z góry dzięki za pomoc



Ostatnio edytowano 18 lis 2014, o 21:56 przez mickeu, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2014, o 21:30 
Offline
Użytkownik

Dołączył(a): 19 cze 2014
Posty: 247
Pomógł: 15

Cytuj:
DDRD &= ~((1<<PORTA0)|(1<<PORTA1)|(1<<PORTA2)|(1<<PORTA3)|(1<<PORTA4)); //wejscia

Piszesz najpierw DDRD a potem PORTA, musi być albo A albo D.

_________________
http://elektropanel.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2014, o 21:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 sie 2013
Posty: 87
Pomógł: 0

leonos2000 napisał(a):
Cytuj:
DDRD &= ~((1<<PORTA0)|(1<<PORTA1)|(1<<PORTA2)|(1<<PORTA3)|(1<<PORTA4)); //wejscia

Piszesz najpierw DDRD a potem PORTA, musi być albo A albo D.


To z ostatniej próby zamiany portu - poprawiłem i nadal to samo.
Po za tym DDRx i tak jest inicjowane jako 0 w całym porcie na starcie o ile nie zadeklarowane inaczej wiec bez różnicy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2014, o 21:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 sie 2013
Posty: 87
Pomógł: 0

Antystatyczny napisał(a):
Może się mylę, ale nie widzę nigdzie zmiennych przechowujących aktualny stan klawiszy.


są w common.h



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2014, o 22:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 sie 2013
Posty: 87
Pomógł: 0

Antystatyczny napisał(a):
Ok, teraz wkleiłeś więcej kodu i widać. Pamiętam, że miałem podobny problem i przeniesienie zmiennych zapamiętujących stan klawiszy do pliku main.c tuż przed funkcją main() natychmiast rozwiązało problem. Kiedyś o to nawet pytałem tu na forum. Widzę, że je masz w common.h, wystawione poza moduł, więc teoretycznie powinno być dobrze...

------------------------ [ Dodano po: 5 minutach ]

Oczywiście wyjmowałeś mikrokontroler i sprawdzałeś multimetrem poprawność działania przycisków, brak zwarć pomiędzy nimi, obecność zasilania na AVCC itd... Choć z drugiej strony, jeśli to fabryczny moduł, to powinien działac poprawnie.


Tak wzystko na liniach zostało rozpięte i "przedzwonione" brak zwarć czy też przerw a połączeniach.

Co dziwniejsze normalna funkcja:

if(!(PINA & (1<<PINA0))){
led();
}

Działa bez problemu - pewnie coś w Superdebounce zawala sprawe.
Powyłączałem nawet wszystkie inne moduły in includy i dalej to samo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2014, o 23:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 sie 2013
Posty: 87
Pomógł: 0

Antystatyczny napisał(a):
No to jeśli sobie posprawdzałes prostym kodem, że sprzęt odzywa się poprawnie, to pozostaje wina kodu. Kombinowałeś już z tymi zmiennymi k1 i k2?

------------------------ [ Dodano po: 1 minucie ]

Aha, sama funkcja superdebounce jest do bólu sprawna. Trzeba jedynie pamiętać, że dla każdego klawisza musi być oddzielna zmienna "trzymająca władzę" czyli aktualny stan.


Tak, przeniosłem je też nad main, tak samo jak i superdebounce... wciąż to samo. zaczyna szleć po wejsciu w pętle while(1)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2014, o 23:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

mickeu napisał(a):

void led(void){
PORTA ^= (1<<PORTA5);
PORTA |= (1<<PORTA7);
_delay_ms(100);
PORTA &= ~(1<<PORTA7);


A co to ?

Powinno być PORTA ^= (1<<PA5);

itd

Po za tym wyłącz jtag jak masz włączony.

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Odp:
PostNapisane: 18 lis 2014, o 23:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 sie 2013
Posty: 87
Pomógł: 0

majster napisał(a):
mickeu napisał(a):

void led(void){
PORTA ^= (1<<PORTA5);
PORTA |= (1<<PORTA7);
_delay_ms(100);
PORTA &= ~(1<<PORTA7);


A co to ?

Powinno być PORTA ^= (1<<PA5);

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


to jest z eclipse :)

Jtag wyłączony



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2014, o 07:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

No ok a teraz przeanalizuj pierwszego if i pomyśl przez chwilkę.


Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2014, o 14:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 sie 2013
Posty: 87
Pomógł: 0

Błąd znaleziony - maskowanie klawiszy

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

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

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

lub
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: 19 lis 2014, o 19:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 sie 2013
Posty: 87
Pomógł: 0

Antystatyczny napisał(a):
Kurczaki...tego nie zauważyłem...


Ja też nie - głównodowodzący pomógł.



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 0 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