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



Teraz jest 8 wrz 2024, o 02:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 16 paź 2022, o 10:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Witam.
Korzystając z biblioteki MKUART chciałem zrobić ćwiczenie wysyłania znaków z jednego mikorokntolera ATmega 32 do drugiego poprzez pint RX i TX.
Jeden mikrokontroler w tym celu wysyła co sekundę znak A, podpatrując przez terminal Putty z w/w kontrolera literka A wychodzi.

W drugim kontrolerze korzystam z funkcji:
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.


po wpisaniu sprawdzenia "

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


Literka A wpada na LCD odbiorczego kontrolera i super.
Ale to sprawdzenie A jest sztucznie sprawdzone.
Jak zrobić żeby zapisać wpadającą literkę w zmienną typu char z możliwością wyświetlenia jej na LCD :(

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

No leci cyfra 65 i chyba jest ok bo to jest liczbowa wartość kodu ASCI literki A.
To jak wyświetlić na LCD zmienną c ale jako string żeby wyświetliło nie liczbową (65) a literową wartość (A)

------------------------ [ Dodano po: 41 minutach ]

Po prostu mój problem polega na tym że, potrafię wyświetlić wartość kodu ASCI zmiennej c (typu char) (65) , potrafię wyświetlić na LCD string literki A lcd_str("A") ale jat wyświetlić zmienną literowo zmienną c?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2022, o 10:52 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

tak: if( c=='A' ) lcd_str(c);



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2022, o 11:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Tak próbowałem i nic się nie wyświetla :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2022, o 11:53 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Przepraszam sam się pomyliłem. Tak ma być:
char a = 65;
i wyświetlasz na LCD w ten sposób:
lcd_str(&a);


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2022, o 12:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

SUPER o to chodziło. Podpowiedz mi na koniec jeszcze jedną sprawę:
Wyświetlanie jest dla spełnionego warunku
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
, a ja bym chciał żeby warunkiem wyświetlenia było jeśli wpadnie do do c jakakolwiek litera , którą wysyłam z pierwszego kontrolera chodzi mi o to z pierwszego kontrolera wysyłam literkę a z drugiego odbieram i zamiast warunku
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
buł warunek odebrania literki przez funnkcję
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I osiągnięcie takiego efektu - z mikrokontrolera wysyłam literke np A potem B i wpada na wyświetlacz do mikrokontrolera 2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2022, o 13:07 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Proszę o to fajne linki do tych tematów.

a już w szczególności ten cykl:

Polecam!!!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2022, o 17:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Filmiki super dzięki za info.
Przy okazji mam pytanie udało mi się dojść w układzie wysyłania do takiej sytuacji:
- z kontrolera nr1 wysyłam znak A co 1 sekundę
- z kontrolera nr2 odbieram w/w znak przy pomocy funkcji:

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

Wszystko niby ok ale nie do końca ponieważ co jakiś czas na wyświetlacz wpada inny znak ? Co może być nie tak?
Obrazek
Co ewentualnie można jeszcze poprawić :?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2022, o 19:07 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Powodów może być kilka. Na początek podłączył bym procek nadawczy np. do kompa, odpalił bym putty i bym podejrzał czy przez cały czas cyklicznie jest wyświetlane to co wyrzucam z procka. W ten sposób wyeliminował bym jeden z powodów. Czyli jeżeli przez cały czas na ekranie bezbłędnie wyświetlała by mi się literka "a", miał bym pewność że z tą stroną układu jest wszystko ok.
Jeden z powodów kiedy takie rzeczy się dzieją może być to że masz złą dobraną prędkość uarta. Ja bawiłem się kiedyś taką transmisją na stykówce i po prostu kabelki nie do końca stykały co powodowało że na magistrali krzaki leciały zamiast pożądana treść. Sprawdź na początek co widzi putty. :shock:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2022, o 19:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Tak masz rację Puty mnie naprowadził do tego że nie wyświetlał. Nie dałem wspólnej masy :D ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2022, o 19:37 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Dawno nie miałem okazji komuś pomóc!!! Cieszę się że mogłem być pomocny, po długiej mojej nie obecności na tym forum. :P Pozdrawiam. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2022, o 07:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Chciałbym zrobić coś takiego ale przez Wifi tylko nie wiem czy akcesoria Wifi są jeszcze dostępne w sklepie Atnel? Jeśli tak proszę o wskazówkę. Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2022, o 13:44 
Offline
Nowy

Dołączył(a): 14 maja 2020
Posty: 11
Pomógł: 1

Mnie przy tym wszystkim zastanawia, dlaczego do wyświetlania pojedynczego znaku (zmienna typu char) na LCD używasz funkcji do wyświetlania stringów: lcd_str. Jeżeli korzystasz z biblioteki Mirka, to powinieneś mieć dostępną funkcję lcd_char. W Twoim przypadku problem z funkcją lcd_str jest taki, że spodziewa się ona danych zakończonych znakiem o kodzie zero, ale nie możesz mieć pewności, że komórka pamięci następna za tą, w której przechowywana jest zmienna c zawsze będzie mieć wartość zero. Jeżeli nie będzie zerem, to funkcja lcd_str będzie te dane traktować jak kolejny bajt stringa (i go wyświetlać) i tak aż do napotkania na bajtu o wartości zero.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 paź 2022, o 22:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Bardzo cenna uwaga nie stosowałem ale spróbuje dzięki.



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: 13 ] 

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO