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



Teraz jest 16 lis 2024, o 01:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 2 lis 2013, o 12:08 
Offline
Nowy

Dołączył(a): 02 lis 2013
Posty: 2
Pomógł: 0

Witam serdecznie!
Testuję najprostszą komunikację uC-PC przez RS232: wysyłam znak z komputera, dopisuję wykrzyknik i wysyłam z powrotem ;)
Gdy nadaję z samego uC to transmisja przebiega pomyślnie. Gdy odbieram i dopisuję mam pewien błąd - pojawia się znak podkreślenia "_" (0x5F). Teraz dzieje się magia:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W takim przypadku otrzymuję x_!

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

To otrzymuję x!_

Kod do nadawania/odbierania mam z noty katalogowej (zmieniony tylko 2 na 1 bit stopu).
Mam Atmegę8, taktowaną wewnętrznym oscylatorem 8MHz, złożoną wg schematu: uC-MAX232-PC, bez żadnych przejściówek. Nadaję 9600 bodów, ramkę 8b, 1bit stopu, bez parzystości - ustawienia uC zgadzają się na terminalu (używam RealTerm i moim własnym, napisanym w C# - w obu przypadkach ten sam błąd).
Sprawdzałem połączenia, kombinowałem ze zmianą UBRR. Napięcie na wejsciu/wyjściu maxa od strony pc to -+ 10V. Po zwarciu kabli dochodzących do Rx i Tx atmegi otrzymuję na terminalu ładne echo, więc to musi być wina procka.
Bardzo proszę o pomoc.

Pozdrawiam,
Kamil



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2013, o 15:12 
Offline
Nowy

Dołączył(a): 02 lis 2013
Posty: 2
Pomógł: 0

O ja głupi, string musi kończyć się nullem! Wielkie dzięki, przepraszam za tę gafę :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 12:56 
Offline
Nowy

Dołączył(a): 11 lis 2013
Posty: 2
Pomógł: 0

Witam
Dopiero co zacząłem ogarniać temat komunikacji uC->PC przez RS232.
Schemat mojego połączenia:
Obrazek

Kod:

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


Do wstawiania kodu używamy znacznika 'syntax' zamiast znacznika 'code', poprawiłem - Sonix

Przykład wzięty z poradnika Mirkka.
Niestety na terminalu Putty dostaję taki krzaki:
Obrazek
Co może być tego przyczyną?
Dodam że kodowanie w Eclipse to Cp1250. Kodowanie w Putty to Win 1250.
Używam przejściówki:
http://www.cabletech.pl/pl/6343-kabel-k ... 232--db9m-
Bardzo proszę o pomoc.



Ostatnio edytowano 11 lis 2013, o 13:14 przez jarO, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 13:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sty 2013
Posty: 272
Pomógł: 3

Bumszakalakacz napisał(a):
Mam Atmegę8, taktowaną wewnętrznym oscylatorem 8MHz, złożoną wg schematu: uC-MAX232-PC, bez żadnych przejściówek. Nadaję 9600 bodów, ramkę 8b, 1bit stopu, bez parzystości - ustawienia uC zgadzają się na terminalu (używam RealTerm i moim własnym, napisanym w C# - w obu przypadkach ten sam błąd).
Sprawdzałem połączenia, kombinowałem ze zmianą UBRR. Napięcie na wejsciu/wyjściu maxa od strony pc to -+ 10V. Po zwarciu kabli dochodzących do Rx i Tx atmegi otrzymuję na terminalu ładne echo, więc to musi być wina procka.
Bardzo proszę o pomoc.

Pozdrawiam,
Kamil


Chcesz zabić procesor rozumiem?! Odłącz to natychmiast! Procesor potrzebuje standardu TTL 0-5V a nie RS232 +/- 12 V !!

Tutaj w opisie nowego modułu masz również opisaną RÓŻNICĘ pomiędzy tymi standardami:

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 14:23 
Offline
Nowy

Dołączył(a): 11 lis 2013
Posty: 2
Pomógł: 0

Consola:

**** Clean-only build of configuration Release for project ADC ****

make clean
rm -rf ./myuart/myuart.o ./main.o ./myuart/myuart.d ./main.d ADC.eep ADC.hex ADC.lss sizedummy ADC.elf


**** Build Finished ****

**** Build of configuration Release for project ADC ****

make all
Building file: ../myuart/myuart.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=1000000UL -MMD -MP -MF"myuart/myuart.d" -MT"myuart/myuart.d" -c -o "myuart/myuart.o" "../myuart/myuart.c"
Finished building: ../myuart/myuart.c

Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=1000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
Finished building: ../main.c

Building target: ADC.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,ADC.map -mmcu=atmega32 -o "ADC.elf" ./myuart/myuart.o ./main.o
Finished building target: ADC.elf

Invoking: AVR Create Extended Listing
avr-objdump -h -S ADC.elf >"ADC.lss"
Finished building: ADC.lss

Create Flash image (ihex format)
avr-objcopy -R .eeprom -O ihex ADC.elf "ADC.hex"
Finished building: ADC.hex

Create eeprom image (ihex format)
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex ADC.elf "ADC.eep"
Finished building: ADC.eep

Invoking: Print Size
avr-size --format=avr --mcu=atmega32 ADC.elf
AVR Memory Usage
----------------
Device: atmega32

Program: 522 bytes (1.6% Full)
(.text + .data + .bootloader)

Data: 14 bytes (0.7% Full)
(.data + .bss + .noinit)


Finished building: sizedummy


**** Build Finished ****

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


Putty:
Speed: 9600
Data bits: 8
Stop bits: 1
Parity: None
Flow control: None

Taktowanie z wewnętrznego zegara 1MHz.

------------------------ [ Dodano po: 34 minutach ]

Problem rozwiązany.
Zmieniłem taktowanie na 8MHz na zegarze procka oraz ustawiłem taką samą prędkość w ustawieniach projektu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 15:48 
Offline
Moderator
Avatar użytkownika

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

Ciekawe ile jeszcze razy będzie trzeba przypominać początkującym, żeby zaglądali do noty PDF, ostatnia strona rozdziału UART w dowolnej nocie dowolnego procka AVR i proszę pierwsza tabela dla taktowania 1MHz

Obrazek

z której widać jak na dłoni że procent błędów przekracza 2,5% a więc przy tak ŚLIMACZYM tempie taktowania procka nie ma co się dziwić że są KRZAKI

panie kolego zwiększ sobie taktowanie fusebitami do 8MHz - i wtedy zajrzyj do tabeli dla 8MHz i sprawdź czy będzie można użyć prędkości 9600 ok ?

wtedy zrozumiesz raz na zawsze jak się dobiera taktowanie procka do potrzeb transmisji RS232

_________________
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: 6 ] 

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