Cześć wszystkim.
Napisałem parę miesięcy temu programik w BASCOM do urządzenia, które ma możliwość odczytu pamięci EEPROM i wysłania jej zawartości przez RS232 do PC.
Urządzonko wróciło do mnie niedawno ze względu na pojawiające się nieraz błędy podczas transmisji. Program używa tylko instrukcji PRINT i nie używa przerwań. Przerwania globalne wyłączone. Ze względu na wykorzystanie wszystkich portów musiałem zrezygnować z rezonatora kwarcowego i ATMega8 ustawiona jest na wewnętrzny oscylator 8MHz.
W pierwszej wersji prędkość transmisji miałem ustawioną na 9600 bodów (0.16%) odchyłki według Bascom'a i postanowiłem zmienić prędkość na 38400.
Po poprawce układ ładnie wysyłał dane do PC i temat by się zakończył gdyby nie znaleziony prze zemnie błąd, a mianowicie zamiast 38400 wpisałem $Baud = 34800 jak to w życiu bywa. Po zmianie na wartość prawidłową $Baud = 38400 znowu zdarzają się nieprawidłowości w transmisji i tyczy się to wszystkich standardowych ustawień 1200,2400,4800 itd.
W związku z powyższym mam pytania?
1. Czy odchyłka (0.16%) to dużo, wydaje się że nie.
2. Czy wartość 34800 to fuks przy, której to dobrze chodzi.
3. Jak ta wartość się ma do wzoru zamieszczonego w pomocy Bascom.
4. Jak prawidłowo wyliczyć wartość $Baund dla oscylatora wewnętrznego 8MHz dla UART'a.
Załączam kawałek kodu gdzie te dane są wysyłane.
Może ktoś z kolegów eksperymentował z transmisją przy nietypowej częstotliwości zegara np. 8MHz ?.
Za wszelkie podpowiedzi będę bardzo wdzięczny.
Roko.
Napisałem parę miesięcy temu programik w BASCOM do urządzenia, które ma możliwość odczytu pamięci EEPROM i wysłania jej zawartości przez RS232 do PC.
Urządzonko wróciło do mnie niedawno ze względu na pojawiające się nieraz błędy podczas transmisji. Program używa tylko instrukcji PRINT i nie używa przerwań. Przerwania globalne wyłączone. Ze względu na wykorzystanie wszystkich portów musiałem zrezygnować z rezonatora kwarcowego i ATMega8 ustawiona jest na wewnętrzny oscylator 8MHz.
W pierwszej wersji prędkość transmisji miałem ustawioną na 9600 bodów (0.16%) odchyłki według Bascom'a i postanowiłem zmienić prędkość na 38400.
Po poprawce układ ładnie wysyłał dane do PC i temat by się zakończył gdyby nie znaleziony prze zemnie błąd, a mianowicie zamiast 38400 wpisałem $Baud = 34800 jak to w życiu bywa. Po zmianie na wartość prawidłową $Baud = 38400 znowu zdarzają się nieprawidłowości w transmisji i tyczy się to wszystkich standardowych ustawień 1200,2400,4800 itd.
W związku z powyższym mam pytania?
1. Czy odchyłka (0.16%) to dużo, wydaje się że nie.
2. Czy wartość 34800 to fuks przy, której to dobrze chodzi.
3. Jak ta wartość się ma do wzoru zamieszczonego w pomocy Bascom.
4. Jak prawidłowo wyliczyć wartość $Baund dla oscylatora wewnętrznego 8MHz dla UART'a.
Załączam kawałek kodu gdzie te dane są wysyłane.
Print "DB"
Waitms 10
For B = 0 To 63
Readeeprom Wart , B
Print Wart
Waitms 10
Next
Może ktoś z kolegów eksperymentował z transmisją przy nietypowej częstotliwości zegara np. 8MHz ?.
Za wszelkie podpowiedzi będę bardzo wdzięczny.
Roko.
