Zmiana oprogramowania po RS485 , czy możliwe ?
-
- Posty: 58
- Rejestracja: 23 wrz 2018, 11:28
Re: Zmiana oprogramowania po RS485 , czy możliwe ?
Witam , watchdog był nie raz konfigurowany to dużo nie zmieniło . Jeśli chodzi o podłączenie to bootloader wgrywany mkII a soft laptop > konwerter na rs485 ======== MAX485 > tx i rx PRO MINI . Może to uściślijmy dla porządku .
1. wgrywamy bootloadera przez avr mkii
2. po wgraniu ręcznie resetujemy pro mini dla "świętego spokoju"
3. wgrywamy soft przez rs485
4. podczas wgrywania ale przed zakończenie procek resetowany jest ale już przez wgrany soft i powinien potwierdzić
to MSC bootloaderowi cele sprawdzenia czy poprawnie się wgrał - i tu się " wywala " tak mi się wydaje
5. Można wgrywać softy po rs485 ale w sofcie musi być zawarty reset programowy , bo przecież po resecie idzie od
początku programu
Jak coś żle zrozumiałem to proszę mnie poprawić
1. wgrywamy bootloadera przez avr mkii
2. po wgraniu ręcznie resetujemy pro mini dla "świętego spokoju"
3. wgrywamy soft przez rs485
4. podczas wgrywania ale przed zakończenie procek resetowany jest ale już przez wgrany soft i powinien potwierdzić
to MSC bootloaderowi cele sprawdzenia czy poprawnie się wgrał - i tu się " wywala " tak mi się wydaje
5. Można wgrywać softy po rs485 ale w sofcie musi być zawarty reset programowy , bo przecież po resecie idzie od
początku programu
Jak coś żle zrozumiałem to proszę mnie poprawić
- Pikczu
- Posty: 390
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Zmiana oprogramowania po RS485 , czy możliwe ?
Mozesz wkleic obydwa kody bootloadera i ten który ładujesz później?
-
- Posty: 58
- Rejestracja: 23 wrz 2018, 11:28
Re: Zmiana oprogramowania po RS485 , czy możliwe ?
Witam wczoraj w nocy a właściwie dzisiaj zrobiłem jeszcze raz test na rs232 z DTR na RST w pro mini i wszystko chodzi tak jak powinno , posiedzę jeszcze nad 485 i dam znać
- Pikczu
- Posty: 390
- Rejestracja: 17 sie 2015, 13:46
- Lokalizacja: Dublin, Ireland
- Kontakt:
Re: Zmiana oprogramowania po RS485 , czy możliwe ?
.
Ostatnio zmieniony 27 wrz 2019, 22:48 przez Pikczu, łącznie zmieniany 1 raz.
-
- Posty: 58
- Rejestracja: 23 wrz 2018, 11:28
Re: Zmiana oprogramowania po RS485 , czy możliwe ?
Tu nie chodzi o pokazanie kodu , przecież jest dostępny w linkach w poprzednich postach a dodana jest tylko konfiguracja portd.2 potrzebnego do współpracy z MAX485 , zresztą odnośniki też w linkach .Teraz walczę z rs485 i sytuacja wygląda tak że też działa ale czasami coś się wywala przy programowaniu . Po prostu podaje konkretne informacje żeby się nie rozpisywać ale ... ten jest z linku do testów
i bascomowy bootloader tak przerobiony jak w linkuhttps://bart-projects.cba.pl/bootloader.html
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m328pdef.dat"
- $crystal = 16000000
- $hwstack = 32
- $swstack = 16
- $framesize = 24
- $baud = 1200
- Config Watchdog = 512
- Config Serialin = Buffered , Size = 20
- Config Portb.5 = Output
- Config Portd.2 = Output
- Config Print0 = Portd.2 , Mode = Set
- Portb.5 = 0
- Dim Command As String * 10 , Znak As Byte
- Dim Command_timeout As Byte , Got_str As Byte
- Dim Timer_programowy As Word
- Enable Interrupts 'dla buforowanego UARTu potrzebne sa przerwania
- '*** START ***
- Do
- '---------------------------------------------------------------------
- 'If Timer_programowy < 500 Then
- ' Incr Timer_programowy
- 'Else
- ' Timer_programowy = 0
- Toggle Portb.5
- 'End If
- '---------------------------------------------------------------------
- 'poniżej odbiór i analiza tego co nadeszło z USART
- If Ischarwaiting() > 0 Then 'jeśli w buforze czeka znak
- Znak = Inkey()
- Command_timeout = 50
- Select Case Znak
- Case 10 'zignoruj
- Case 13 : Got_str = 1 'nadszedł Enter więc sprawdź komendę
- Case Else
- Command = Command + Chr(znak) 'jeśli to nie ENTER ani LF to dodaj do stringa
- End Select
- If Len(command) > 9 Then Got_str = 1 'zabezpieczenie by nie przepełnić zmiennej
- If Got_str = 1 Then
- If Command = "R" Then
- Disable Interrupts 'wylaczenie przerwan
- Start Watchdog 'uruchomienie Watchdoga
- Do 'petla nieskonczona
- Loop 'w niej czekamy na Reset
- End If
- Command = ""
- 'end if Got_str
- End If
- End If
- If Command_timeout > 0 Then 'jesli nadeszły jakieś znaki
- Decr Command_timeout 'pomału odliczaj
- 'najwyraźniej to były błedne znaki więc usuń je i czekaj na poprawne
- If Command_timeout = 0 Then Command = ""
- End If
- Waitms 1 'tylko na potrzeby tego kodu
- 'by wolniej odliczało Timeout
- Loop
- End
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Zmiana oprogramowania po RS485 , czy możliwe ?
Przepraszam, ze tak późno, ale chyba nie przeczytałem jednego postu i już później nie dostałem powiadomienia o następnych
Co do tych kroków:
1. Pominę
2. Po wgraniu bootloadera, przy pierwszym programowaniu, nie trzeba resetować ręcznie. Spowodowane to jest tym, że bootloader startuje, czeka 10x100ms na jakieś dane z komputera, ale jak ich nie ma to kończy pracę i każe procesorowi skoczyć na początek flash pod adres $oo. Tam jednak nic nie ma, same FF. Procesor szybko czyta te FF przez cały pusty flash i dojeżdża do miejsca gdzie zaczyna się bootloader. Koło sie zamyka. bootloader czeka 10x100ms i znów wysyła procek pod $00
3. Pominę
4. Nie, to nie tak. Komputer wysyła do BL trzy bajty.Status, CRC i numer bloku. Potem wysyła 128 bajtów i drugie CRC. Procesor sprawdza CRC. Jak się zgadza odsyła OK i programuje jedną stronę, jak nie to odsyła BŁĄD i komputer powtarza blok. Na koniec komputer zmienia status na 4 - koniec programowania i procesor ma znowu odesłać OK. Po tym, po 20ms procesor ma skoczyć już do nowego programu.
5. No i tu się zgodzę.
Widzę że chyba muszę to pyknąć na próbę Mam takie gotowe płyteczki mega328P z RS485 tylko muszę podmienić kwarc na 16MHz.
https://bart-projects.cba.pl/fun.html
Mierzymy czas
Co do tych kroków:
No to tak:grafii1 pisze:Witam , watchdog był nie raz konfigurowany to dużo nie zmieniło . Jeśli chodzi o podłączenie to bootloader wgrywany mkII a soft laptop > konwerter na rs485 ======== MAX485 > tx i rx PRO MINI . Może to uściślijmy dla porządku .
1. wgrywamy bootloadera przez avr mkii
2. po wgraniu ręcznie resetujemy pro mini dla "świętego spokoju"
3. wgrywamy soft przez rs485
4. podczas wgrywania ale przed zakończenie procek resetowany jest ale już przez wgrany soft i powinien potwierdzić
to MSC bootloaderowi cele sprawdzenia czy poprawnie się wgrał - i tu się " wywala " tak mi się wydaje
5. Można wgrywać softy po rs485 ale w sofcie musi być zawarty reset programowy , bo przecież po resecie idzie od
początku programu
Jak coś żle zrozumiałem to proszę mnie poprawić
1. Pominę
2. Po wgraniu bootloadera, przy pierwszym programowaniu, nie trzeba resetować ręcznie. Spowodowane to jest tym, że bootloader startuje, czeka 10x100ms na jakieś dane z komputera, ale jak ich nie ma to kończy pracę i każe procesorowi skoczyć na początek flash pod adres $oo. Tam jednak nic nie ma, same FF. Procesor szybko czyta te FF przez cały pusty flash i dojeżdża do miejsca gdzie zaczyna się bootloader. Koło sie zamyka. bootloader czeka 10x100ms i znów wysyła procek pod $00
3. Pominę
4. Nie, to nie tak. Komputer wysyła do BL trzy bajty.Status, CRC i numer bloku. Potem wysyła 128 bajtów i drugie CRC. Procesor sprawdza CRC. Jak się zgadza odsyła OK i programuje jedną stronę, jak nie to odsyła BŁĄD i komputer powtarza blok. Na koniec komputer zmienia status na 4 - koniec programowania i procesor ma znowu odesłać OK. Po tym, po 20ms procesor ma skoczyć już do nowego programu.
5. No i tu się zgodzę.
Widzę że chyba muszę to pyknąć na próbę Mam takie gotowe płyteczki mega328P z RS485 tylko muszę podmienić kwarc na 16MHz.
https://bart-projects.cba.pl/fun.html
Mierzymy czas
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Zmiana oprogramowania po RS485 , czy możliwe ?
Okay. Działa za każdym razem. Bez problemu.
Bootloader:
Kod programu głównego:
W programie Bootloadera trzeba zwrócić uwagę na ustawienie "$timeout = 800000" Im szybszy procesor tym liczba powinna być większa wiec zwiększyłem z 4 na 8
W programie głównym pewnym wrażliwym ustawieniem jest "Command_timeout = 30" Np. Przy wartości 10 procesor dla $baud 115200 już sie sam nie resetuje.
Przy $baud 1200 chyba musisz to jeszcze znacznie wydłużyć. Chodzi o to jak długo spływa kolejny znak.
Miłego kodowania
PS. Tam w jednym miejscu pisze 500ms a faktycznie jest 250ms. Zmieniłem sobie żeby szybciej, weselej migały, ale zapomniałem zmienić komentarz.
Bootloader:
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- '----------------------------------------------------------------
- ' (c) 1995-2009, MCS
- ' Bootloader.bas
- ' This sample demonstrates how you can write your own bootloader
- ' in BASCOM BASIC
- ' VERSION 2 of the BOOTLOADER. The waiting for the NAK is stretched
- ' further a bug was resolved for the M64/M128 that have a big page size
- '-----------------------------------------------------------------
- 'This sample will be extended to support other chips with bootloader
- 'The loader is supported from the IDE
- ' LB FB FBH FBX
- $prog &HFF , &HFF , &HDA , &HFD ' generated. Take care that the chip supports all fuse bytes.
- '$crystal = 12000000
- $crystal = 16000000
- '$crystal = 14745600
- $baud = 115200 'this loader uses serial com
- 'It is VERY IMPORTANT that the baud rate matches the one of the boot loader
- 'do not try to use buffered com as we can not use interrupts
- 'possible return codes of the PC bootloader.exe
- ' -6005 Cancel requested
- ' -6006 Fatal time out
- ' -6007 Unrecoverable event during protocol
- ' -6008 Too many errors during protocol
- ' -6009 Block sequence error in Xmodem
- ' -6016 Session aborted
- $regfile = "m328pdef.dat"
- Const Loaderchip = 32
- #if Loaderchip = 32 ' Mega32
- $loader = $3c00 ' 1024 words
- Const Maxwordbit = 6 'Z6 is maximum bit '
- Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
- 485_en Alias Portd.2 : Config 485_en = Output
- Config Print0 = Portd.2 , Mode = Set
- #endif
- Const Maxword =(2 ^ Maxwordbit) * 2 '128
- Const Maxwordshift = Maxwordbit + 1
- Const Cdebug = 0 ' leave this to 0
- #if Cdebug
- Print Maxword
- Print Maxwordshift
- #endif
- 'Dim the used variables
- Dim Bstatus As Byte , Bretries As Byte , Bblock As Byte , Bblocklocal As Byte
- Dim Bcsum1 As Byte , Bcsum2 As Byte , Buf(128) As Byte , Csum As Byte
- Dim J As Byte , Spmcrval As Byte ' self program command byte value
- Dim Z As Long 'this is the Z pointer word
- Dim Vl As Byte , Vh As Byte ' these bytes are used for the data values
- Dim Wrd As Word , Page As Word 'these vars contain the page and word address
- Dim Bkind As Byte , Bstarted As Byte
- 'Mega 88 : 32 words, 128 pages
- Disable Interrupts 'we do not use ints
- 'Waitms 100 'wait 100 msec sec
- 'We start with receiving a file. The PC must send this binary file
- 'some constants used in serial com
- Const Nak = &H15
- Const Ack = &H06
- Const Can = &H18
- 'we use some leds as indication in this sample , you might want to remove it
- 'Config Pinb.2 = Output
- 'Portb.2 = 1 'the stk200 has inverted logic for the leds
- 'Config Pinb.3 = Output
- 'Portb.3 = 1
- $timeout = 800000 'we use a timeout
- 'When you get LOADER errors during the upload, increase the timeout value
- 'for example at 16 Mhz, use 200000
- Bretries = 5 'we try 5 times
- Testfor123:
- #if Cdebug
- Print "Try " ; Bretries
- Print "Wait"
- #endif
- Bstatus = Waitkey() 'wait for the loader to send a byte
- #if Cdebug
- Print "Got "
- #endif
- Print Chr(bstatus);
- If Bstatus = 123 Then 'did we received value 123 ?
- Bkind = 0 'normal flash loader
- Goto Loader
- Elseif Bstatus = 124 Then ' EEPROM
- Bkind = 1 ' EEPROM loader
- Goto Loader
- Elseif Bstatus <> 0 Then
- Decr Bretries
- If Bretries <> 0 Then Goto Testfor123 'we test again
- End If
- 'For J = 1 To 10 'this is a simple indication that we start the normal reset vector
- ' Toggle Portb.2 : Waitms 100
- 'Next
- #if Cdebug
- Print "RESET"
- #endif
- Goto _reset 'goto the normal reset vector at address 0
- 'this is the loader routine. It is a Xmodem-checksum reception routine
- Loader:
- #if Cdebug
- Print "Clear buffer"
- #endif
- Do
- Bstatus = Waitkey()
- Loop Until Bstatus = 0
- ' For J = 1 To 3 'this is a simple indication that we start the normal reset vector
- ' Toggle Portb.2 : Waitms 50
- ' Next
- If Bkind = 0 Then
- Spmcrval = 3 : Gosub Do_spm ' erase the first page
- Spmcrval = 17 : Gosub Do_spm ' re-enable page
- End If
- Bretries = 10 'number of retries
- Do
- Bblocklocal = 1
- Bstarted = 0 ' we were not started yet
- Csum = 0 'checksum is 0 when we start
- Print Chr(nak); ' firt time send a nack
- Do
- Bstatus = Waitkey() 'wait for statuse byte
- Select Case Bstatus
- Case 1: ' start of heading, PC is ready to send
- Csum = 1 'checksum is 1
- Bblock = Waitkey() : Csum = Csum + Bblock 'get block
- Bcsum1 = Waitkey() : Csum = Csum + Bcsum1 'get checksum first byte
- For J = 1 To 128 'get 128 bytes
- Buf(j) = Waitkey() : Csum = Csum + Buf(j)
- Next
- Bcsum2 = Waitkey() 'get second checksum byte
- If Bblocklocal = Bblock Then 'are the blocks the same?
- If Bcsum2 = Csum Then 'is the checksum the same?
- Gosub Writepage 'yes go write the page
- Print Chr(ack); 'acknowledge
- Incr Bblocklocal 'increase local block count
- Else 'no match so send nak
- Print Chr(nak);
- End If
- Else
- Print Chr(nak); 'blocks do not match
- End If
- Case 4: ' end of transmission , file is transmitted
- If Wrd > 0 And Bkind = 0 Then 'if there was something left in the page
- Wrd = 0 'Z pointer needs wrd to be 0
- Spmcrval = 5 : Gosub Do_spm 'write page
- Spmcrval = 17 : Gosub Do_spm ' re-enable page
- End If
- ' Waitms 100 ' OPTIONAL REMARK THIS IF THE DTR SIGNAL ARRIVES TO EARLY
- Print Chr(ack); ' send ack and ready
- 'Portb.3 = 0 ' simple indication that we are finished and ok
- Waitms 20
- Goto _reset ' start new program
- Case &H18: ' PC aborts transmission
- Goto _reset ' ready
- Case 123 : Exit Do 'was probably still in the buffer
- Case 124 : Exit Do
- Case Else
- Exit Do ' no valid data
- End Select
- Loop
- If Bretries > 0 Then 'attempte left?
- Waitms 1000
- Decr Bretries 'decrease attempts
- Else
- Goto _reset 'reset chip
- End If
- Loop
- 'write one or more pages
- Writepage:
- If Bkind = 0 Then
- For J = 1 To 128 Step 2 'we write 2 bytes into a page
- Vl = Buf(j) : Vh = Buf(j + 1) 'get Low and High bytes
- !lds r0, {vl} 'store them into r0 and r1 registers
- !lds r1, {vh}
- Spmcrval = 1 : Gosub Do_spm 'write value into page at word address
- Wrd = Wrd + 2 ' word address increases with 2 because LS bit of Z is not used
- If Wrd = Maxword Then ' page is full
- Wrd = 0 'Z pointer needs wrd to be 0
- Spmcrval = 5 : Gosub Do_spm 'write page
- Spmcrval = 17 : Gosub Do_spm ' re-enable page
- Page = Page + 1 'next page
- Spmcrval = 3 : Gosub Do_spm ' erase next page
- Spmcrval = 17 : Gosub Do_spm ' re-enable page
- End If
- Next
- Else 'eeprom
- For J = 1 To 128
- Writeeeprom Buf(j) , Wrd
- Wrd = Wrd + 1
- Next
- End If
- 'Toggle Portb.2 : Waitms 10 : Toggle Portb.2 'indication that we write
- Return
- Do_spm:
- Bitwait Spmcsr.0 , Reset ' check for previous SPM complete
- Bitwait Eecr.1 , Reset 'wait for eeprom
- Z = Page 'make equal to page
- Shift Z , Left , Maxwordshift 'shift to proper place
- Z = Z + Wrd 'add word
- !lds r30,{Z}
- !lds r31,{Z+1}
- #if _romsize > 65536
- !lds r24,{Z+2}
- !sts rampz,r24 ' we need to set rampz also for the M128
- #endif
- Spmcsr = Spmcrval 'assign register
- !spm 'this is an asm instruction
- nop
- nop
- Return
- 'How you need to use this program:
- '1- compile this program
- '2- program into chip with sample elctronics programmer
- '3- select MCS Bootloader from programmers
- '4- compile a new program for example M88.bas
- '5- press F4 and reset your micro
- ' the program will now be uploaded into the chip with Xmodem Checksum
- ' you can write your own loader.too
- 'A stand alone command line loader is also available
- 'How to call the bootloader from your program without a reset ???
- 'Do
- ' Print "test"
- ' Waitms 1000
- ' If Inkey() = 27 Then
- ' Print "boot"
- ' Goto &H1C00
- ' End If
- 'Loop
- 'The GOTO will do the work, you need to specify the correct bootloader address
- 'this is the same as the $LOADER statement.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m328pdef.dat"
- $crystal = 16000000
- $hwstack = 32
- $swstack = 16
- $framesize = 24
- $baud = 115200
- Config Serialin = Buffered , Size = 20
- 485_en Alias Portd.2 : Config 485_en = Output
- Config Print0 = Portd.2 , Mode = Set
- Dim Command As String * 10 , Znak As Byte
- Dim Command_timeout As Byte , Got_str As Byte
- '*************************************************
- '* NA POTRZEBY DEMO *
- '*************************************************
- Dim Timer_programowy As Byte
- R_led Alias Portb.0 : Config R_led = Output : Set R_led 'będą migały na przemian
- G_led Alias Portd.7 : Config G_led = Output ': Set G_led
- '*************************************************
- '* TIMER2 CONFIG FOR TIME BASE *
- '*************************************************
- Config Timer2 = Timer , Prescale = 1024 , Clear_timer = 1
- Compare2a = 155 '10ms @16MHz/1024
- Enable Interrupts 'dla buforowanego UARTu potrzebne sa przerwania
- '*** START ***
- Do
- '---------------------------------------------------------------------
- If Tifr2.ocf2a = 1 Then '10ms
- Tifr2.ocf2a = 1
- If Timer_programowy < 24 Then
- Incr Timer_programowy
- Else '500ms
- Timer_programowy = 0
- Toggle R_led
- Toggle G_led
- End If
- '---------------------------------------------------------------------
- 'poniżej odbiór i analiza tego co nadeszło z USART
- If Ischarwaiting() > 0 Then 'jeśli w buforze czeka znak
- Znak = Inkey()
- Select Case Znak
- Case 10 'zignoruj
- Case 13 : Got_str = 1 'nadszedł Enter więc sprawdź komendę
- Case Else
- Command = Command + Chr(znak) 'jeśli to nie ENTER ani LF to dodaj do stringa
- End Select
- If Len(command) > 9 Then Got_str = 1 'zabezpieczenie by nie przepełnić zmiennej
- If Got_str = 1 Then
- If 0 < Instr(command , "AT+RST") Then
- Disable Interrupts 'wylaczenie przerwan
- Print "Resetting in progress..."
- Start Watchdog 'uruchomienie Watchdoga
- Do 'petla nieskonczona
- Loop 'w niej czekamy na Reset
- End If
- Command = ""
- Got_str = 0
- Else
- Command_timeout = 30
- End If
- End If
- If Command_timeout > 0 Then 'jesli nadeszły jakieś znaki
- Decr Command_timeout 'pomału odliczaj
- 'najwyraźniej to były błedne znaki więc usuń je i czekaj na poprawne
- If Command_timeout = 0 Then Command = ""
- End If
- End If
- Loop
- End
W programie głównym pewnym wrażliwym ustawieniem jest "Command_timeout = 30" Np. Przy wartości 10 procesor dla $baud 115200 już sie sam nie resetuje.
Przy $baud 1200 chyba musisz to jeszcze znacznie wydłużyć. Chodzi o to jak długo spływa kolejny znak.
Miłego kodowania
PS. Tam w jednym miejscu pisze 500ms a faktycznie jest 250ms. Zmieniłem sobie żeby szybciej, weselej migały, ale zapomniałem zmienić komentarz.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
-
- Posty: 58
- Rejestracja: 23 wrz 2018, 11:28
Re: Zmiana oprogramowania po RS485 , czy możliwe ?
Dzięki za wskazówki , też nie mam kiedy kontynuować testów . Zastanawiałem się dlaczego po rs232 idzie bez problemów nawet bez dtr i z różnymi konfiguracjami . Dużą poprawę uzyskałem odznaczając w linii 178 waitms 100 . Będę jeszcze działał na konwerterze z ft232rl , dam znać co i jak ...
-
- Posty: 58
- Rejestracja: 23 wrz 2018, 11:28
Re: Zmiana oprogramowania po RS485 , czy możliwe ?
Witam , czy kolega działał na " przewodowym " połączeniu ? . Owszem u mnie działa ale tylko do 57600 , problem był w konwerterze na standardowej " chińszczyźnie " się rwało dopiero na ft232 można było testować . Na analizatorze zauważyłem że jest problem na przełączeniu max485 , zanim jedna transmisja się skończy i przełącz maxa ( konwerter ) na odbiór , pro mini już odpowiada i " swojego " maxa przestawia na nadawanie co prawda twa to około 50us ale raczej dwa mastery są nie wskazane w danej chwili . Myślę że soft bootloadera jest przystosowany do full duplex . Mimo wszystko czy podłącze przez 232 czy na 485 max co mogę osiągnąć to 57600 , może to pro mini a może coś innego , no nic będę jeszcze testował i informował co i jak ...
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Zmiana oprogramowania po RS485 , czy możliwe ?
Najtańszym za 7zł50gr takim jak na dołączonym obrazku.
W układzie docelowym Mega328P z kwarcem 16MHz i MAX485.
Ten komplet który dałem dwa posty wyżej to przetestowałem i działa na pewno. Spędziłem nad tym pół godziny bo musiałem posprawdzać co gdzie mam na tej docelowej płytce
Co do samych prędkości to z kwarcem Usartfriendly właśnie też tym najtańszym adapterem śmigam 250kb/s
Tam jednak faktycznie trzeba było zrezygnować z bascom`owego sterowania i tradycyjnie zająć się tym samemu, ale to może być spowodowane tym że w Modbus czekamy przez czas potrzebny na przesłanie dwóch znaków i jak nic nie nadeszło to dopiero oznacza koniec transmisji więc tego sterowania bym tu nie przesądzał.
Co do softu bootloadera - przez bluetooth mam obecnie cos połączone 115200 i cały czas działa jak złoto czyli wgrywanie nowego softu i debug.
Oczywiście HC-05 trzeba najpierw przestawić na tę prędkość.
W układzie docelowym Mega328P z kwarcem 16MHz i MAX485.
Ten komplet który dałem dwa posty wyżej to przetestowałem i działa na pewno. Spędziłem nad tym pół godziny bo musiałem posprawdzać co gdzie mam na tej docelowej płytce
Co do samych prędkości to z kwarcem Usartfriendly właśnie też tym najtańszym adapterem śmigam 250kb/s
Tam jednak faktycznie trzeba było zrezygnować z bascom`owego sterowania i tradycyjnie zająć się tym samemu, ale to może być spowodowane tym że w Modbus czekamy przez czas potrzebny na przesłanie dwóch znaków i jak nic nie nadeszło to dopiero oznacza koniec transmisji więc tego sterowania bym tu nie przesądzał.
Co do softu bootloadera - przez bluetooth mam obecnie cos połączone 115200 i cały czas działa jak złoto czyli wgrywanie nowego softu i debug.
Oczywiście HC-05 trzeba najpierw przestawić na tę prędkość.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Set Rs485dir
- For Mbj = 1 To Mbruncount
- Print #1 , Chr(mbruncheck(mbj)); 'send out this data
- Next
- 'tu możesz wstawić, na próbę, Waitms 1-3
- Reset Rs485dir
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.