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

[ATmega328P][ATmega32][ModBus] - Modbus ASCII - framing error

dzidav8 29 Paź 2015 14:24 1992 1
REKLAMA
  • #1 15105550
    dzidav8
    Poziom 9  
    Witam, mam zaimplementowaną w projekcie obsługę protokołu modbus (biblioteka freemodbus v1.5).
    Ten sam program uruchamiam na płytce testowej Xplained z ATmega 328P i komunikacją po RS232 przez wbudowany port eDBG - tu wszystko działa jak należy, zarówno tryb RTU jak i ASCII. Zegar 16MHz.

    Po przeniesieniu projektu na ATmega 32 z zegarem 7,3728MHz Modbus RTU działa bez problemów, ale dla trybu ASCII przy próbie komunikacji w Modbus Poll wyrzuca błędy write error i framing error. Na diodach Tx i Rx widać że układ odpowiada - podobnie jak w trybie RTU. (komunikuję się przez MAX232 i przejściówkę RS232 na USB)

    Oczywiście symbol F_CPU jest właściwy w obu projektach, tryb RTU działa w obu przypadkach na różnych baudrate'ach, tryb ASCII tylko na ATmedze 328P.

    Dołączam dwa projekty atmel studio, folder z bibliotekami modbus jest w obu identyczny, jedyna zmiana to lokalizacja pinu RTS.

    Przypuszczam ze błąd ma jakiś związek z inną częstotliwością pracy, ale nie bardzo umiem znaleźć jaki. Z góry dzięki za pomoc!

    [EDIT] Zmieniłem kwarc w Atmedze32 na 12MHz, bo taki akurat miałem i dalej to samo...
  • REKLAMA
  • #2 15290370
    dzidav8
    Poziom 9  
    Doszedłem w czym tkwił problem. Program jest w porządku, natomiast jest różnica w ilości bitów danych w ramce: Modbus RTU ma 8 a ASCII 7. Nie przestawiłem tego po stronie PC, stąd framing error.
REKLAMA