Witam
Mam taki problem. Program wysyla plik binarny 57kB z PC do mega a on do zewnetrznej pamieci(testuje na mega32 i mega128). Wyglada ze AVR nie jest w stanie wyrobic z transmisja, jakby za wolno wewnetrznie dzialal i dane sie nadpisuja zanim obsluzy przerwanie.
Na PC program pisze w vb6 oto fragment kodu
Open nazwa For Binary Access Read As #2
For adres_wyslany = 1 To dlugosc_pliku
Get #2, adres_wyslany, osiem_bitow
MSComm1.Output = Chr(osiem_bitow)
'opcjonalne opoznienie 20ms
Next
Close #2
Jesli dodam miedzy kolejnym wyslaniami opoznienie to jest ok wszystko jest odbierane na czas (nawet nie testuje opcji zapisu do zewnetrznej pamieci tylko samo odbieranie danych) ale przesyl takiego pliku bedzie trwal chyba 10min
Transmisja z AVR do PC jest ok i trwa 20sekund co dla mnie jest ok
Kod na avr
$crystal = 11059200
$regfile = "m32def.dat"
$baud = 19200
Enable Interrupts
Enable Urxc
On Urxc Odebralem_dana
Do
If Licznik_udr = Kontrola_licznika Then
Adres = Kontrola_licznika - 1
Bajt = Dana_udr
' Call Dekoder_adresu
' Call Zapisz_ram
Incr Kontrola_licznika 'zwiekszam kontrole zapisu
end if
loop
Odebralem_dana:
Dana_udr = Udr
Incr Licznik_udr
Mnoznik_timer2 = 0
Return
Moze lepiej przesylac kilka bajtow zamiast jednego?
Mam wrazenie ze problem tkwi po stronie PC za duzo pcha naraz.
Transmisja na 3 przewodach (w tym masa) reszta zmostkowana.
Mam taki problem. Program wysyla plik binarny 57kB z PC do mega a on do zewnetrznej pamieci(testuje na mega32 i mega128). Wyglada ze AVR nie jest w stanie wyrobic z transmisja, jakby za wolno wewnetrznie dzialal i dane sie nadpisuja zanim obsluzy przerwanie.
Na PC program pisze w vb6 oto fragment kodu
Open nazwa For Binary Access Read As #2
For adres_wyslany = 1 To dlugosc_pliku
Get #2, adres_wyslany, osiem_bitow
MSComm1.Output = Chr(osiem_bitow)
'opcjonalne opoznienie 20ms
Next
Close #2
Jesli dodam miedzy kolejnym wyslaniami opoznienie to jest ok wszystko jest odbierane na czas (nawet nie testuje opcji zapisu do zewnetrznej pamieci tylko samo odbieranie danych) ale przesyl takiego pliku bedzie trwal chyba 10min
Transmisja z AVR do PC jest ok i trwa 20sekund co dla mnie jest ok
Kod na avr
$crystal = 11059200
$regfile = "m32def.dat"
$baud = 19200
Enable Interrupts
Enable Urxc
On Urxc Odebralem_dana
Do
If Licznik_udr = Kontrola_licznika Then
Adres = Kontrola_licznika - 1
Bajt = Dana_udr
' Call Dekoder_adresu
' Call Zapisz_ram
Incr Kontrola_licznika 'zwiekszam kontrole zapisu
end if
loop
Odebralem_dana:
Dana_udr = Udr
Incr Licznik_udr
Mnoznik_timer2 = 0
Return
Moze lepiej przesylac kilka bajtow zamiast jednego?
Mam wrazenie ze problem tkwi po stronie PC za duzo pcha naraz.
Transmisja na 3 przewodach (w tym masa) reszta zmostkowana.