logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega128L][C] - Atmega128L + GPS nie działa, wyświetla same krzaki

Wilq31 31 Paź 2012 14:11 1944 11
REKLAMA
  • #1 11471509
    Wilq31
    Poziom 1  
    Witam,
    Mam następujący problem. Zakupiłem robota z zamontowaną płytką: http://www.mobot.pl/download/MOBOT-MBv2-AVR_instrukcja.pdf

    GPS to FGPMMOPA4, konfiguracja: 9600 bps/8/N/1
    Po drobnych modyfikacjach zamontowany jest tam kwarc 7,3728 Mhz. Procesor to Atmega128L (początkowo był Atmega128A z kwarcem 16Mhz). Podłączyłem do RX0 wyjście TX GPS FGPMMOPA4.
    Jako że GPS zasilany jest 3,3V a Atmega 5v to napięcie 3,3v uzyskuje za pomocą dwóch diód prostowniczych 1N4007. RX0 nie podłączyłem bezpośrednio do TX ale podłączyłem to w sposób pokazany na obrazku :

    [Atmega128L][C] - Atmega128L + GPS nie działa, wyświetla same krzaki
    Powyższe podłączenie znalazłem na tym forum. Jest i działa dla Atmegi16A - porównywałem charakterystyki Atmegi16A i Atmegi128L i chyba ten układ powinien działać poprawnie również w tym przypadku.

    Z jakiegoś powodu wartości wyświetlone na LCD to praktycznie same jakieś krzaki. Dodam że GPS przetestowałem na płytce stykowej używając tego samego podłączenia RX0 do TX, Atmegi16A i kwarcu 16Mhz. Tutaj prawidłowe wartości są odczytywane i wyświetlone. Oczywiście w robocie dostosowalem UBRR do kwarcu 7,3728 Mhz.

    Fragment kodu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    W Configuration Options też ustawiłem taktownie 7372800. Używam Avr Studio 4, programatora USBasp i aplikacji SinaProg.

    Oczywiście testowałem już wiele możliwości. Starałem się zapisywać znaki do bufora, próbowałem rożne kombinacje UBRR, uruchamiałem opcje U2X – nic nie pomaga. Dla Atmegi16A to wszystko działa. Z tego co wiem to jedyna różnica w UART pomiędzy Atmega16 i Atmega128 to bit URSEL ale w Atmedze128 i tak nie można się do niego dostać, więc tu nie powinno być problemu.
    Czy moje problemy mogą być spowodowane tym że Atmega128L korzysta z lini RX0 i TX0 podczas programowania ISP (jakieś zakłócenia, coś?)?
    Ogólnie z tego co wyczytałem to tego typu problemy występują dla złej konfiguracji UART. Niestety wydaje mi się że inicjalizuje UART prawidłowo. Na pewno korzystam z kwarcu zewnętrznego: 7,3728 a fusebity to: lowfuse: FF, highfuse: C9, ext. bits:FF.

    Czy mogą być jakieś inne powody dla ktorych UART0 może nie odbierać prawidłowych znaków? Nie mogę niestety skorzystać z UART1 (żeby oddzielić SPI od UART)
    Być może jest jakiś problem w schemacie (jest w dokumencie który umieściłem na samym początku) albo w tym układziku łączącym RX0 z TX Gpsa?
    Czy jest opcja że gdyby zmienić procesor na Atmega128A to zaczęłoby działać tak samo jak dla Atmegi16A? Między Atmega128L a 128A są jakieś minimalne różnice.
    Wydaje mi się ze to mimo wszystki kwestia konfiguracji UART0, ale nie wiem co miałoby być źle
    Od dłuższego czasu męczę się z tym i wiem że pewnie część z tych pytań jest bez sensu ale już nie mam pomysłów.

    Byłbym bardzo wdzięczny za pomoc.
  • REKLAMA
  • #2 15188642
    Tomu$L
    Poziom 11  
    Odkopuję stary temat ale mam identyczny problem. Czy udało się go rozwiązać jakoś?
  • #3 15188815
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #4 15188877
    Tomu$L
    Poziom 11  
    Może nie sprecyzowałem swojego problemu. Mój GPS i ATmega128L zasilane są z 3,3V więc konwersja napięć tutaj nie wchodzi w grę. GPS podłączony do procesora poprzez rezystor ograniczający prąd 330 Ohm zgodnie z datasheet GPS ()FGPMMOA6C). Najgłupsze z tego wszystkiego jest to że na ATmega16 działa prawidłowo a na ATmega128L krzaczy. Komunikacja PC z ATmega128L również jest prawidłowa tak jak i PC z GPS, ale GPS z ATmega128L już nie.
  • #5 15188912
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 15188924
    Tomu$L
    Poziom 11  
    Kompatybilność z Atmega103 mam wyłączoną, Fusy mam na wewnętrzny 8MHz.
    Dla mnie jest to druga ATmega128 ale pierwsza w wersji L. Z tą zwykłą pracowałem już i nie było żadnego problemu z transmisją, a tutaj taki zonk. Ewentualnie mogę jeszcze spróbować wylutować zewnętrzny kwarc, ale raczej wątpię żeby on był problemem. Niestety mam go 16MHz więc nie mogę przełączyć się na niego bo wersja L jest do 8MHz.
  • #7 15188929
    Konto nie istnieje
    Konto nie istnieje  
  • #8 15188937
    Tomu$L
    Poziom 11  
    Kwarc wewnętrzny 8MHz, zasilanie 3,3V, GPS podłączony bezpośrednio do uC poprzez rezystor 330 Ohm. Prędkość 9600 bodów. Transmisja GPSa z kompem działa poprawnie. Transmisja ATmega128L z kompem działa poprawnie. Transmisja GPSa z ATmega128L krzaczy. Transmisja GPSa z ATmega16 5V 8MHz wewnętrzny działa prawidłowo.

    Dodano po 2 [minuty]:

    Loopback = RxD zwarty z TxD w ATmedze?
    A jak będzie dobrze bo jestem w 90% przekonany że tak właśnie będzie?

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #9 15188980
    Konto nie istnieje
    Konto nie istnieje  
  • #10 15188988
    Tomu$L
    Poziom 11  
    Ale żeby tego było mało zasiliłem ATmege16 również napięciem 3,3V i o dziwo komunikacja nadal była prawidłowa. Zasilę dzisiaj ATmege128L z 5V i zobaczę co będzie się działo jak będzie ok to bajka.
  • #11 15189022
    Konto nie istnieje
    Konto nie istnieje  
  • #12 15190082
    Tomu$L
    Poziom 11  
    Pomogła kalibracja rezonatora wewnętrznego OSCCAL
REKLAMA