Termometr 4 punktowy *z podłączeniem do PC*

Teoria, praktyka, sprzęt, kolumna
laurentp
100%
100%
Posty: 1368
Rejestracja: 2013-07-08, 22:08
Lokalizacja: Mazowieckie

Post autor: laurentp » 2017-02-24, 13:14

111lisu pisze:Nie chodzi mi o te 7 znaków tylko o co Ci chodziło?
?
https://nowyekran24.com/ prawda 24h, POLSKIE forum poza zasięgiem "głównego ścieku", taki informacyjny "DETOX"!
Nienawidzę.mechaniki.Za to przemiany fazowe zaczynają mnie fascynować

woxy
40%
40%
Posty: 98
Rejestracja: 2011-12-09, 18:36

Post autor: woxy » 2017-02-24, 14:01

Pewnie chodziło o to, o co chodziło laurentp, że w kodzie jest taki dynks.

Kod: Zaznacz cały

#if defined(DEV_BOARD_NANO) 
        const uint8_t   temperature_labels_eeprom[4][8] EEMEM = { "zewn.  ",
                                                                  "wewn.  ",
                                                                  "Tkuchni",
                                                                  "-------" }
Pewnie robi termometr pokojowy :)

laurentp
100%
100%
Posty: 1368
Rejestracja: 2013-07-08, 22:08
Lokalizacja: Mazowieckie

Post autor: laurentp » 2017-02-24, 14:25

woxy pisze:....Pewnie robi termometr pokojowy :)
robi, prototyp :)
i nawet mam wykres z tego :) GD + Perl.
https://nowyekran24.com/ prawda 24h, POLSKIE forum poza zasięgiem "głównego ścieku", taki informacyjny "DETOX"!
Nienawidzę.mechaniki.Za to przemiany fazowe zaczynają mnie fascynować

woxy
40%
40%
Posty: 98
Rejestracja: 2011-12-09, 18:36

Post autor: woxy » 2017-02-24, 14:33

A to zapodaj jak możesz, pooglądamy :)

laurentp
100%
100%
Posty: 1368
Rejestracja: 2013-07-08, 22:08
Lokalizacja: Mazowieckie

Post autor: laurentp » 2017-02-25, 10:24

No różni się tylko napisami... I tym, że zapisuje dane do bazy PostgreSQL, ale to już robi skrypt perlowy na laptopie.

[ Dodano: 2017-02-26, 13:44 ]
Wyszły "w praniu" 2 bugi.
Źle wyświetla się %PWM na porcie szeregowym dla 100% i nie załącza się alarm "zagrzania kolumny", prawdopodobnie związane z przejściem na odczyty filtrowane.

Po poprawieniu będzie nowa wersja archiwum.
https://nowyekran24.com/ prawda 24h, POLSKIE forum poza zasięgiem "głównego ścieku", taki informacyjny "DETOX"!
Nienawidzę.mechaniki.Za to przemiany fazowe zaczynają mnie fascynować

laurentp
100%
100%
Posty: 1368
Rejestracja: 2013-07-08, 22:08
Lokalizacja: Mazowieckie

Post autor: laurentp » 2017-02-27, 19:04

Poprawione.
Tj poprawione na pewno wyświetlanie na porcie szeregowym, co do detekcji "zagrzania kolumny" to zmieniłem warunek trochę, było "różnica temp. kolumny > 5.00*C @ 10sek, przy Tk > 50 i < 70", jest teraz 3.00*C.
Sprawdzę przy następnym przebiegu.

Czekamy na opis jak "to użyć (zaprogramować) pod Win$" by Nemo82.
Bo pod Linux to : "make flash" :) ;P
Załączniki
archiwum_2017-02-27_AVR.zip
Źródła i skompilowane na płytkę produkcyjną.
(74.63 KiB) Pobrany 311 razy
https://nowyekran24.com/ prawda 24h, POLSKIE forum poza zasięgiem "głównego ścieku", taki informacyjny "DETOX"!
Nienawidzę.mechaniki.Za to przemiany fazowe zaczynają mnie fascynować

nemo82
10%
10%
Posty: 18
Rejestracja: 2012-12-25, 03:57
Lokalizacja: Gdynia

Przykładowe wgrywanie wsadu do Atmega328P na WIN7 64bit

Post autor: nemo82 » 2017-02-27, 19:09

3c). Przykładowe wgrywanie gotowego wsadu do mikrokontrolera Atmega328P-PU na komputerze z Windows7 - 64bit.

I. Do wgrania wsadu do Atmega328P-PU potrzebne nam będzie:
1. Programator np: USBASP v2.0 (ja w tym przykładzie będę się takim posługiwał; wystąpiły przypadki, że programator był uszkodzony &#8211; jest to chińska masowa produkcja, ja swój kupiłem w sklepie na miejscu i mój działa bez problemu).
UWAGA: Są także lepsze programatory z gotowymi podstawkami, które znacznie ułatwiają programowanie np.ISP Adapter - podstawka ZIF .Nie trzeba kombinować z płytką stykową, kabelkami itd. mają one także możliwość programowania większej ilości mikrokontrolerów ale są one droższe niż zestaw od metody, którą prezentuje.
2. Prototypowa płytka stykowa (można również wykorzystać podstawkę DIL28 i do niej dolutować wszystkie kabelki i elementy)
3. Osiem kabelków do płytki stykowej z końcówkami męskimi (można użyć przewodów od kabla sieciowego UTP/STP tzw. skrętki)
4. Kwarc 16 Mhz
5. Dwa kondensatory 22pF i jeden 100nF
6. Program WinAVR
7. Program Zadig(ver.2.2) do instalacji sterowników dla programatora USBASP.
8. Pliki z wsadem z wątku Super Termometr. W drugim poście jest zawsze najnowsza wersja do pobrania.
Do wgrania wsadu możemy także użyć programu Burn-O-Mat v.2
9. Program Burn_o_Mat v2 (nakładka na avrdude, link od kolegi krzyski)


II. Instalujemy program WINAVR w głównym katalogu na dysku C, wybieramy nazwę katalogu do instalacji na WINAVR.
Pobrane archiwum z wątku o termometrze rozpakowujemy a następnie wybieramy 2 pliki: main_atmega328p.hex(bin) oraz main_atmega328p_eeprom.hex(bin) i kopiujemy je do katalogu C:\WinAVR\bin
Obrazek
III. Podłączamy programator USBASP do komputera (wyłączamy automatyczne wgrywanie sterowników z witryny Windows Update), uruchamiamy program Zadig, w menu Options wybieramy opcję List All Devices, wybieramy nasz programator z listy urządzeń USB i instalujemy sterowniki do programatora wybierając libusbK (v3.0.7.0). Odłączamy programator od komputera.
Obrazek
IV. Wkładamy chip Amtega328P do płytki stykowej. Następnie wkładamy kwarc 16 MHz także po lewej stronie przy nóżkach 9 i 10. Kolejno dokładamy dwa kondensatory 22pF: w pola 8 i 9 oraz 8 i 10 następnie kondensator 100 uF w pola 7 i 8.
Obrazek
Teraz podłączamy wtyk z taśmy programatora kabelkami do płytki stykowej:

Wtyk - kolor kabelka - Nr nóżki (tak jest u mnie na zdjęciach, kolejność podłączania dowolna ).

VCC - czerwony - Nóżka 7
GND - czarny - Nóżka 8
RESET - pomarańczowy - Nóżka 1
MOSI - żółty - Nóżka 17
MISO - biały - Nóżka 18
SCK - niebieski - Nóżka 19
Następnie łączymy 7 VCC - zielony - 20 AVCC
oraz pole 8 GND - żółty - 22 GND
Obrazek
Korzystając ze schematu powinno to być prostsze niż mój opis słowny :) .

V. Do wgranie wsadu możemy użyć konsoli Windows i wpisać komendy dla avrdude, które podałem poniżej lub skorzystać z nakładki Burn-O-Mat v2 (program do działania wymaga środowiska Java).

Va).Uruchamiamy konsole systemu Windows (w pole "Wyszukaj pliki i programy" wpisujemy: CMD i uruchamiamy).

Przechodzimy do głównego katalogu na dysku C dwukrotnym poleceniem "cd.." a następnie przechodzimy do katalogu WINAVR/bin: "cd WINAVR" , "cd bin".
Podłączamy taśmę do programatora i podłączamy go do komputera. Dla sprawdzenie czy wszystko jest ok wpisujemy komendę:

Kod: Zaznacz cały

avrdude -p m328p -c usbasp -n
Obrazek
Jeśli wszystko zrobiliśmy poprawnie to możemy przystąpić do zaprogramowania mikrokontrolera.

Jeśli mamy 'nowy' mikrokontroler najpierw ustawiamy 'fuses' komendą:

Kod: Zaznacz cały

avrdude -p m328p -c usbasp -U hfuse&#58;w&#58;0xD1&#58;m -Ulfuse&#58;w&#58;0xFF&#58;m -U efuse&#58;w&#58;0x07&#58;m
Następnie wgrywamy plik main:

Kod: Zaznacz cały

avrdude -p m328p -c usbasp -P usb -U flash&#58;w&#58;main_atmega328p.hex
Obrazek
Jako ostatni wgrywamy plik eeprom:

Kod: Zaznacz cały

avrdude -p m328p -c usbasp -P usb - U eeprom&#58;w&#58;main_atmega328p_eeprom.hex
Obrazek

Obrazek
Vb). Instalujemy AVR8 Burn-O-Mat v2 na komputerze. Uruchamiamy program i przechodzimy do Settings --> AVRDUDE. Tutaj ustawiamy katalogi do programu i pliku konfiguracyjnego avrdude (C:\WinAVR\bin), wybieramy nasz programator z listy rozwijalnej (usbasp) i ustawiamy port, na którym pracuje programator (usb).
Obrazek
Przy nowym mikrokontrolerze klikamy na fuses, ustwiamy kolejno wartości: efuse &#8211; FF ; hfuse &#8211; D9 ; Lfuse &#8211; FF . Następnie: Apply i Write. Wgrywanie pliku main i eeprom to wybranie lokalizaji, gdzie mamy pliki i kliknięcie na Write ( pirerwszy raz najpierw plik main potem eeprom, przy wgrywaniu nowej wersji patrz uwagi poniżej).

UWAGA:
1. Fuses wgrywamy tylko raz.
2. Plik eeprom wgrywamy tylko za pierwszy razem,chyba ze w poście jest wyraźnie napisane, że są zmiany w pamięci eeprom.
3. Jeśli wgrywamy nową wersję to wystarczy tylko plik main_atmega328p.hex(bin)

Po wgraniu odłączamy programator od komputera, wyciągamy mikrokontroler z płytki stykowej, wkładamy do termometru i do dzieła.
Pozdrawiam
Marcin
Ostatnio zmieniony 2017-03-01, 07:48 przez nemo82, łącznie zmieniany 1 raz.

krzyski
40%
40%
Posty: 97
Rejestracja: 2015-03-14, 15:09
Lokalizacja: Piękne Podkarpacie

Post autor: krzyski » 2017-02-27, 20:12

Prościej jest przez przez nakładkę na avrdude: AVR8 Burn-O-Mat (do pobrania stąd)

Awatar użytkownika
111lisu
40%
40%
Posty: 76
Rejestracja: 2016-04-01, 01:24

Post autor: 111lisu » 2017-03-04, 18:10

laurentp u Ciebie też wali błędami, czy mi czegoś brakuje?
Wprawdzie hex powstaje i jakoś to bryka.

Kod: Zaznacz cały

mariusz@mariusz-laptop&#58;~/Arduino/Projekty/Termometr-z-forum-2017-03/archiwum_2017-02-27_AVR$ make clean
rm -rf *.o main_atmega328p.elf *.eps *.png *.pdf *.bak 
rm -rf *.lst *.map *.hex *.bin *.srec
mariusz@mariusz-laptop&#58;~/Arduino/Projekty/Termometr-z-forum-2017-03/archiwum_2017-02-27_AVR$ make
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o crc8.o crc8.c
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o ioinit.o ioinit.c
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o lcd.o lcd.c
lcd.c&#58; In function &#8216;lcd_def_cgram_char&#8217;&#58; 
lcd.c&#58;500&#58;13&#58; warning&#58; variable &#8216;pos&#8217; set but not used &#91;-Wunused-but-set-variable&#93; 
     uint8_t pos; 
             ^
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o onewire.o onewire.c
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o ones_count.o ones_count.c
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o keyboard_filter.o keyboard_filter.c
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o timer_int.o timer_int.c
timer_int.c&#58;385&#58;1&#58; warning&#58; "/*" within comment &#91;-Wcomment&#93; 
 /* ------------------------------------------ */
 ^
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o uart_int.o uart_int.c
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o virtual_lcd.o virtual_lcd.c
virtual_lcd.c&#58; In function &#8216;LCD_virt_display&#8217;&#58; 
virtual_lcd.c&#58;19&#58;15&#58; warning&#58; passing argument 1 of &#8216;lcd_puts&#8217; from incompatible pointer type
      lcd_puts&#40;&lcd_line1&#41;; 
               ^
In file included from virtual_lcd.c&#58;6&#58;0&#58; 
virtual_lcd.h&#58;28&#58;17&#58; note&#58; expected &#8216;const char *&#8217; but argument is of type &#8216;char &#40;*&#41;&#91;17&#93;&#8217; 
     extern void lcd_puts&#40;const char *s&#41;; 
                 ^
virtual_lcd.c&#58;51&#58;16&#58; warning&#58; pointer targets in passing argument 1 of &#8216;lcd_puts&#8217; differ in signedness &#91;-Wpointer-sign&#93; 
       lcd_puts&#40;&virt_lcd_line2&#91;16 * &#40;i - 1&#41;&#93;&#41;; 
                ^
In file included from virtual_lcd.c&#58;6&#58;0&#58; 
virtual_lcd.h&#58;28&#58;17&#58; note&#58; expected &#8216;const char *&#8217; but argument is of type &#8216;uint8_t *&#8217; 
     extern void lcd_puts&#40;const char *s&#41;; 
                 ^
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o DS18X20.o DS18X20.c
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o do_config.o do_config.c
do_config.c&#58; In function &#8216;do_config&#8217;&#58; 
do_config.c&#58;78&#58;26&#58; warning&#58; passing argument 1 of &#8216;eeprom_write_byte&#8217; discards &#8216;const&#8217; qualifier from pointer target type
        eeprom_write_byte&#40;&sensor_addreses_eeprom&#91;z&#93;&#91;i&#93;, scratchpad_table&#91;z&#93;&#91;i&#93;&#41;; 
                          ^
In file included from do_config.c&#58;6&#58;0&#58; 
/usr/lib/avr/include/avr/eeprom.h&#58;164&#58;6&#58; note&#58; expected &#8216;uint8_t *&#8217; but argument is of type &#8216;const uint8_t *&#8217; 
 void eeprom_write_byte &#40;uint8_t *__p, uint8_t __value&#41;; 
      ^
do_config.c&#58;93&#58;31&#58; warning&#58; passing argument 1 of &#8216;eeprom_write_byte&#8217; discards &#8216;const&#8217; qualifier from pointer target type
             eeprom_write_byte&#40;&sensor_addreses_eeprom&#91;i&#93;&#91;j&#93;, 0xFF&#41;; 
                               ^
In file included from do_config.c&#58;6&#58;0&#58; 
/usr/lib/avr/include/avr/eeprom.h&#58;164&#58;6&#58; note&#58; expected &#8216;uint8_t *&#8217; but argument is of type &#8216;const uint8_t *&#8217; 
 void eeprom_write_byte &#40;uint8_t *__p, uint8_t __value&#41;; 
      ^
do_config.c&#58;96&#58;30&#58; warning&#58; passing argument 1 of &#8216;eeprom_write_byte&#8217; discards &#8216;const&#8217; qualifier from pointer target type
            eeprom_write_byte&#40;&num_of_sensors_eeprom, 0&#41;; 
                              ^
In file included from do_config.c&#58;6&#58;0&#58; 
/usr/lib/avr/include/avr/eeprom.h&#58;164&#58;6&#58; note&#58; expected &#8216;uint8_t *&#8217; but argument is of type &#8216;const uint8_t *&#8217; 
 void eeprom_write_byte &#40;uint8_t *__p, uint8_t __value&#41;; 
      ^
do_config.c&#58;97&#58;30&#58; warning&#58; passing argument 1 of &#8216;eeprom_write_byte&#8217; discards &#8216;const&#8217; qualifier from pointer target type
            eeprom_write_byte&#40;&lcd_flags_in_eeprom, LCD_DEFAULT_FLAGS&#41;; 
                              ^
In file included from do_config.c&#58;6&#58;0&#58; 
/usr/lib/avr/include/avr/eeprom.h&#58;164&#58;6&#58; note&#58; expected &#8216;uint8_t *&#8217; but argument is of type &#8216;const uint8_t *&#8217; 
 void eeprom_write_byte &#40;uint8_t *__p, uint8_t __value&#41;; 
      ^
do_config.c&#58;104&#58;67&#58; warning&#58; passing argument 1 of &#8216;eeprom_write_byte&#8217; discards &#8216;const&#8217; qualifier from pointer target type
       if &#40;&#40;flagi & CONFIG_CLEARED_FLAG&#41; == 0&#41; &#123; eeprom_write_byte&#40;&num_of_sensors_eeprom, &#40;z + 1&#41;&#41;; &#125; 
                                                                   ^
In file included from do_config.c&#58;6&#58;0&#58; 
/usr/lib/avr/include/avr/eeprom.h&#58;164&#58;6&#58; note&#58; expected &#8216;uint8_t *&#8217; but argument is of type &#8216;const uint8_t *&#8217; 
 void eeprom_write_byte &#40;uint8_t *__p, uint8_t __value&#41;; 
      ^
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o do_1s_stuff.o do_1s_stuff.c
do_1s_stuff.c&#58; In function &#8216;do_1s_stuff&#8217;&#58; 
do_1s_stuff.c&#58;18&#58;6&#58; warning&#58; implicit declaration of function &#8216;memcpy&#8217; &#91;-Wimplicit-function-declaration&#93; 
      memcpy&#40;&buffer_tx&#91;0&#93;, &lcd_time&#91;0&#93;, 9&#41;; 
      ^
do_1s_stuff.c&#58;18&#58;6&#58; warning&#58; incompatible implicit declaration of built-in function &#8216;memcpy&#8217; 
do_1s_stuff.c&#58;18&#58;13&#58; warning&#58; passing argument 1 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
      memcpy&#40;&buffer_tx&#91;0&#93;, &lcd_time&#91;0&#93;, 9&#41;; 
             ^
do_1s_stuff.c&#58;18&#58;13&#58; note&#58; expected &#8216;void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;18&#58;28&#58; warning&#58; passing argument 2 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
      memcpy&#40;&buffer_tx&#91;0&#93;, &lcd_time&#91;0&#93;, 9&#41;; 
                            ^
do_1s_stuff.c&#58;18&#58;28&#58; note&#58; expected &#8216;const void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;110&#58;14&#58; warning&#58; passing argument 1 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
       memcpy&#40;&buffer_tx&#91;&#40;j * 17&#41; + 10&#93;,&temperature_labels&#91;j&#93;&#91;0&#93;, 7&#41;; 
              ^
do_1s_stuff.c&#58;110&#58;14&#58; note&#58; expected &#8216;void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;164&#58;34&#58; warning&#58; passing argument 2 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
            memcpy&#40;&lcd_line1&#91;0&#93;, &buffer_tx&#91;&#40;17 * j&#41; + 9&#93;, 16&#41;; 
                                  ^
do_1s_stuff.c&#58;164&#58;34&#58; note&#58; expected &#8216;const void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;260&#58;39&#58; warning&#58; passing argument 2 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
            memcpy&#40;&virt_lcd_line2&#91;0&#93;, &buffer_tx&#91;26&#93;, 16&#41;; 
                                       ^
do_1s_stuff.c&#58;260&#58;39&#58; note&#58; expected &#8216;const void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;322&#58;38&#58; warning&#58; passing argument 2 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
          memcpy&#40;&virt_lcd_line2&#91;41&#93;, &buffer_tx&#91;69&#93;, 7&#41;; 
                                      ^
do_1s_stuff.c&#58;322&#58;38&#58; note&#58; expected &#8216;const void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;352&#58;17&#58; warning&#58; passing argument 1 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
          memcpy&#40;&buffer_tx&#91;77&#93;, "Alarm&#58;-----", 11&#41;; 
                 ^
do_1s_stuff.c&#58;352&#58;17&#58; note&#58; expected &#8216;void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;360&#58;17&#58; warning&#58; passing argument 1 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
          memcpy&#40;&buffer_tx&#91;89&#93;, "PWM&#58;   ", 7&#41;; 
                 ^
do_1s_stuff.c&#58;360&#58;17&#58; note&#58; expected &#8216;void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;411&#58;16&#58; warning&#58; passing argument 1 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
         memcpy&#40;&buffer_tx&#91;&#40;j * 17&#41; + 10&#93;,&temperature_labels&#91;j&#93;&#91;0&#93;, 7&#41;; 
                ^
do_1s_stuff.c&#58;411&#58;16&#58; note&#58; expected &#8216;void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;429&#58;32&#58; warning&#58; passing argument 2 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
          memcpy&#40;&lcd_line1&#91;0&#93;, &buffer_tx&#91;9&#93;, 16&#41;; 
                                ^
do_1s_stuff.c&#58;429&#58;32&#58; note&#58; expected &#8216;const void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;437&#58;50&#58; warning&#58; passing argument 2 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
          memcpy&#40;&virt_lcd_line2&#91;&#40;16 * &#40;j - 1&#41;&#41;&#93;, &buffer_tx&#91;9 + &#40;17 * j&#41;&#93;, 16&#41;; 
                                                  ^
do_1s_stuff.c&#58;437&#58;50&#58; note&#58; expected &#8216;const void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;458&#58;38&#58; warning&#58; passing argument 2 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
          memcpy&#40;&virt_lcd_line2&#91;32&#93;, &buffer_tx&#91;60&#93;, 16&#41;; 
                                      ^
do_1s_stuff.c&#58;458&#58;38&#58; note&#58; expected &#8216;const void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;460&#58;17&#58; warning&#58; passing argument 1 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
          memcpy&#40;&buffer_tx&#91;77&#93;, "Alarm&#58;-----", 11&#41;; 
                 ^
do_1s_stuff.c&#58;460&#58;17&#58; note&#58; expected &#8216;void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
do_1s_stuff.c&#58;468&#58;17&#58; warning&#58; passing argument 1 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
          memcpy&#40;&buffer_tx&#91;89&#93;, "PWM&#58;   %", 8&#41;; 
                 ^
do_1s_stuff.c&#58;468&#58;17&#58; note&#58; expected &#8216;void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p    -c -o main.o main.c
In file included from main.c&#58;197&#58;0&#58; 
main.h&#58;129&#58;1&#58; warning&#58; missing braces around initializer &#91;-Wmissing-braces&#93; 
 uint8_t  sensor_addreses&#91;4&#93;&#91;8&#93; = &#123; 0x28,0xAD,0x94,0xCC,0x00,0x00,0x00,0x8B,
 ^
main.h&#58;129&#58;1&#58; warning&#58; &#40;near initialization for &#8216;sensor_addreses&#91;0&#93;&#8217;&#41; &#91;-Wmissing-braces&#93; 
main.h&#58;226&#58;5&#58; warning&#58; missing braces around initializer &#91;-Wmissing-braces&#93; 
     const uint16_t  tabela_akasa&#91;18&#93;&#91;2&#93;  PROGMEM = &#123; 10000,  000, 
     ^
main.h&#58;226&#58;5&#58; warning&#58; &#40;near initialization for &#8216;tabela_akasa&#91;0&#93;&#8217;&#41; &#91;-Wmissing-braces&#93; 
main.h&#58;245&#58;5&#58; warning&#58; missing braces around initializer &#91;-Wmissing-braces&#93; 
     const uint8_t  time_table&#91;TIME_TABLE_MAX&#93;&#91;3&#93; PROGMEM = &#123; 0,  0, 15,
     ^
main.h&#58;245&#58;5&#58; warning&#58; &#40;near initialization for &#8216;time_table&#91;0&#93;&#8217;&#41; &#91;-Wmissing-braces&#93; 
main.h&#58;351&#58;5&#58; warning&#58; missing braces around initializer &#91;-Wmissing-braces&#93; 
     const uint8_t  sensor_addreses_eeprom&#91;4&#93;&#91;8&#93; EEMEM = &#123; 0x28,0xAD,0x94,0xCC,0x00,0x00,0x00,0x8B,
     ^
main.h&#58;351&#58;5&#58; warning&#58; &#40;near initialization for &#8216;sensor_addreses_eeprom&#91;0&#93;&#8217;&#41; &#91;-Wmissing-braces&#93; 
main.c&#58; In function &#8216;display_3rd_lcd_line&#8217;&#58; 
main.c&#58;372&#58;33&#58; warning&#58; passing argument 2 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
     memcpy&#40;&virt_lcd_line2&#91;24&#93;, &lcd_time&#91;0&#93;, 8&#41;; 
                                 ^
In file included from main.c&#58;169&#58;0&#58; 
/usr/lib/avr/include/string.h&#58;117&#58;14&#58; note&#58; expected &#8216;const void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
 extern void *memcpy&#40;void *, const void *, size_t&#41;; 
              ^
main.c&#58;385&#58;33&#58; warning&#58; passing argument 2 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
     memcpy&#40;&virt_lcd_line2&#91;25&#93;, &lcd_time&#91;0&#93;, 7&#41;; 
                                 ^
In file included from main.c&#58;169&#58;0&#58; 
/usr/lib/avr/include/string.h&#58;117&#58;14&#58; note&#58; expected &#8216;const void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
 extern void *memcpy&#40;void *, const void *, size_t&#41;; 
              ^
main.c&#58;391&#58;33&#58; warning&#58; passing argument 2 of &#8216;memcpy&#8217; discards &#8216;volatile&#8217; qualifier from pointer target type
     memcpy&#40;&virt_lcd_line2&#91;25&#93;, &buffer_tx&#91;52&#93;, 7&#41;; 
                                 ^
In file included from main.c&#58;169&#58;0&#58; 
/usr/lib/avr/include/string.h&#58;117&#58;14&#58; note&#58; expected &#8216;const void *&#8217; but argument is of type &#8216;volatile uint8_t *&#8217; 
 extern void *memcpy&#40;void *, const void *, size_t&#41;; 
              ^
avr-gcc -g -Wall -Os -std=gnu99 -mmcu=atmega328p  -Wl,-Map,main.map -o main_atmega328p.elf crc8.o ioinit.o lcd.o onewire.o ones_count.o keyboard_filter.o timer_int.o uart_int.o virtual_lcd.o DS18X20.o do_config.o do_1s_stuff.o main.o 
avr-objdump -h -S main_atmega328p.elf > main_atmega328p.lst
avr-objcopy -j .text -j .data -O ihex main_atmega328p.elf main_atmega328p.hex
avr-objcopy -j .text -j .data -O binary main_atmega328p.elf main_atmega328p.bin
avr-objcopy -j .text -j .data -O srec main_atmega328p.elf main_atmega328p.srec
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex main_atmega328p.elf main_atmega328p_eeprom.hex \
|| &#123; echo empty main_atmega328p_eeprom.hex not generated; exit 0; &#125; 
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O binary main_atmega328p.elf main_atmega328p_eeprom.bin \
|| &#123; echo empty main_atmega328p_eeprom.bin not generated; exit 0; &#125; 
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O srec main_atmega328p.elf main_atmega328p_eeprom.srec \
|| &#123; echo empty main_atmega328p_eeprom.srec not generated; exit 0; &#125; 
mariusz@mariusz-laptop&#58;~/Arduino/Projekty/Termometr-z-forum-2017-03/archiwum_2017-02-27_AVR$ ./Wgraj_main

avrdude&#58; AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude&#58; Device signature = 0x1e950f
avrdude&#58; NOTE&#58; "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude&#58; erasing chip
avrdude&#58; reading input file "./main_atmega328p.hex" 
avrdude&#58; input file ./main_atmega328p.hex auto detected as Intel Hex
avrdude&#58; writing flash &#40;11904 bytes&#41;&#58; 

Writing | ################################################## | 100% 3.63s

avrdude&#58; 11904 bytes of flash written
avrdude&#58; verifying flash memory against ./main_atmega328p.hex&#58; 
avrdude&#58; load data flash data from input file ./main_atmega328p.hex&#58; 
avrdude&#58; input file ./main_atmega328p.hex auto detected as Intel Hex
avrdude&#58; input file ./main_atmega328p.hex contains 11904 bytes
avrdude&#58; reading on-chip flash data&#58; 

Reading | ################################################## | 100% 2.80s

avrdude&#58; verifying ...
avrdude&#58; 11904 bytes of flash verified
avrdude&#58; reading input file "./main_atmega328p_eeprom.hex" 
avrdude&#58; input file ./main_atmega328p_eeprom.hex auto detected as Intel Hex
avrdude&#58; writing eeprom &#40;66 bytes&#41;&#58; 

Writing | ################################################## | 100% 0.33s

avrdude&#58; 66 bytes of eeprom written
avrdude&#58; verifying eeprom memory against ./main_atmega328p_eeprom.hex&#58; 
avrdude&#58; load data eeprom data from input file ./main_atmega328p_eeprom.hex&#58; 
avrdude&#58; input file ./main_atmega328p_eeprom.hex auto detected as Intel Hex
avrdude&#58; input file ./main_atmega328p_eeprom.hex contains 66 bytes
avrdude&#58; reading on-chip eeprom data&#58; 

Reading | ################################################## | 100% 0.16s

avrdude&#58; verifying ...
avrdude&#58; 66 bytes of eeprom verified

avrdude&#58; safemode&#58; Fuses OK &#40;H&#58;00, E&#58;00, L&#58;00&#41; 

avrdude done.  Thank you.

mariusz@mariusz-laptop&#58;~/Arduino/Projekty/Termometr-z-forum-2017-03/archiwum_2017-02-27_AVR$ 
Lisu

laurentp
100%
100%
Posty: 1368
Rejestracja: 2013-07-08, 22:08
Lokalizacja: Mazowieckie

Post autor: laurentp » 2017-03-04, 18:19

111lisu pisze:laurentp u Ciebie też wali błędami, czy mi czegoś brakuje?...
Wali, to są warningi, nie errory, przy error by nie dokończył kompilacji.
To "jakieś typecasty w C", część jest z volatile vs bez volatile.

Ale ogólnie działa jak trzeba.
A nie jestem na tyle mocny w C, żeby to poprawiać.

Jak się wywala, ja robię "make 2> /tmp/xxx; grep err /tmp/xxx" :)
I tak wyłapuję realne błędy.
https://nowyekran24.com/ prawda 24h, POLSKIE forum poza zasięgiem "głównego ścieku", taki informacyjny "DETOX"!
Nienawidzę.mechaniki.Za to przemiany fazowe zaczynają mnie fascynować

Awatar użytkownika
111lisu
40%
40%
Posty: 76
Rejestracja: 2016-04-01, 01:24

Post autor: 111lisu » 2017-03-04, 23:48

A to spoko bo myślałem, że coś mi brakuje.

Pociesze Cię ja nie jestem tak mocny w C jak Ty, dlatego jak coś dłubie to w C++
ale jak ostatnio zobaczyłem co to wciska w scalaka to masakra. Dziwne, że to działa.

No teraz bardziej mi się podoba ;)

Kod: Zaznacz cały

    #if defined&#40;DEV_BOARD_NANO&#41; 
<------>const uint8_t<->temperature_labels_eeprom&#91;4&#93;&#91;8&#93; EEMEM = &#123; "Kolumny",
<------><------><------><------><------><------><------><------>  "Glowicy",
<------><------><------><------><------><------><------><------>  "T. Wody",
<------><------><------><------><------><------><------><------>  "T. KEGa" &#125;; 


Trochę coś staram się nabazgrać w Andku powiem fajna rzecz tylko jest tego - masakra.
Pościągałem jakieś książki, ale to pasuje mi najbardziej:
http://andrzejklusiewicz-android.blogsp ... -java.html
Może komuś się przyda ;)

Kod: Zaznacz cały

#!/bin/bash

#######
##Boot##
#######
#/mnt/Magazyn/projekty/arduino-1.7.9-linux64/hardware/tools/avr/bin/avrdude -P #/dev/ttyACM3 -b 115200 \
#-C "/mnt/Magazyn/projekty/arduino-1.7.9-linux64/hardware/tools/avr/etc/avrdude.conf" \
#-c avrisp -p m328p -v -e -U flash&#58;w&#58;/home/mariusz/Arduino/Projekty/bootloader_Arduino_Nano/ATmegaBOOT_168_atmega328.hex \
#-U lock&#58;w&#58;0x0F&#58;m

##########
## Program##
##########
/mnt/Magazyn/projekty/arduino-1.7.9-linux64/hardware/tools/avr/bin/avrdude -p atmega328p \
-c arduino -C "/mnt/Magazyn/projekty/arduino-1.7.9-linux64/hardware/tools/avr/etc/avrdude.conf" \
-P /dev/ttyUSB0 -b 57600 -U flash&#58;w&#58;"./main_atmega328p.hex"&#58;a \
-U eeprom&#58;w&#58;"./main_atmega328p_eeprom.hex"&#58;a

#########
# Instrukcja#
#########
echo "Wciskasz lewy przycisk pod LCD włączając termometr." 
echo "Podłączasz czujniki po 1 na raz. Jak się pojawia OK wciskasz przycisk." 
echo "Przechodzi do następnego, na koniec się restartuje." 
No moja "rura" prawie gotowa ;)
Ostatnio zmieniony 2017-03-05, 21:01 przez 111lisu, łącznie zmieniany 2 razy.
Lisu

laurentp
100%
100%
Posty: 1368
Rejestracja: 2013-07-08, 22:08
Lokalizacja: Mazowieckie

Post autor: laurentp » 2017-03-05, 00:13

111lisu pisze:...dlatego jak coś dłubie to w C++
ale jak ostatnio zobaczyłem co to wciska w scalaka to masakra. Dziwne, że to działa....
No C++ jest fajne... dla programisty.

Gorzej dla procka z małą ilością flash / RAM, tutaj to masakra.
C się sprawdza i ma dużą bazę bibliotek. No i forum avrfreaks :)
"goły" C to prawie jak assembler (kontrola sprzętu), tylko fajny no i biblioteki...

Jak się ma choćby na ESP8266 4MB flasha / 256kB RAM to co innego, no i Linux, GB RAM... i GHz procesora.
https://nowyekran24.com/ prawda 24h, POLSKIE forum poza zasięgiem "głównego ścieku", taki informacyjny "DETOX"!
Nienawidzę.mechaniki.Za to przemiany fazowe zaczynają mnie fascynować

Awatar użytkownika
111lisu
40%
40%
Posty: 76
Rejestracja: 2016-04-01, 01:24

Post autor: 111lisu » 2017-03-05, 00:57

Mój znajomy ze studiów mawiał, że on tylko w assemblera wierzy, a C zjada memory,
i jeszcze więcej błędów generuje, ale to stary wyjadacz.
I kiedyś coś w tym dłubałem i też mi się podobało, jednak mało i wygoda zupełnie inna ;)

Używasz do tego jakiegoś środowiska typu Eclipse czy jedziesz w vi?
Lisu

laurentp
100%
100%
Posty: 1368
Rejestracja: 2013-07-08, 22:08
Lokalizacja: Mazowieckie

Post autor: laurentp » 2017-03-05, 01:24

111lisu pisze:...Używasz do tego jakiegoś środowiska typu Eclipse czy jedziesz w vi?
MC też koloruje :)
vi to jednak siermiężne...
a Eclipse armata na muchę...

Co daje *podłączenie do PC*?
Choćby takie wykresy (ja mam zrobione "na żywo") jak załączam.
Załączniki
temperatury_dzis_kolumna_zoom_cgi_1.pl.png
Od zagrzania do końca odbioru przedgonów. Ładnie widać wzrost Tgłowicy jak ubywa przedgonów. Oraz zmianę temperatur przy redukcji mocy (z ~3.2kW) do odbioru przedgonu (1.5kW). Coś mam z wypełnieniem i nie dochodzi do zalania, kolumna od razu się stabilizu
temperatury_dzis_kolumna_zoom_cgi_1.pl.png (5.76 KiB) Przejrzano 938 razy
temperatury_dzis_kolumna_zoom_cgi_2.pl.png
Widać ładnie działanie automatu odbioru serca. Tam gdzie jest przerwa w PWM ale nie spadek to moja ręczna korekcja, bo kolumna się destabilizowała zbyt szybko.
temperatury_dzis_kolumna_zoom_cgi_2.pl.png (7.7 KiB) Przejrzano 884 razy
Ostatnio zmieniony 2017-03-06, 01:20 przez laurentp, łącznie zmieniany 1 raz.
https://nowyekran24.com/ prawda 24h, POLSKIE forum poza zasięgiem "głównego ścieku", taki informacyjny "DETOX"!
Nienawidzę.mechaniki.Za to przemiany fazowe zaczynają mnie fascynować

Awatar użytkownika
111lisu
40%
40%
Posty: 76
Rejestracja: 2016-04-01, 01:24

Post autor: 111lisu » 2017-03-05, 20:12

Eeeeee, nooooo...
Powiem Ci, że mcedit , który bardzo lubię nie ma startu do vim'a
Np: nie ma opcji u jak coś zmaścisz w mcedit

/etc/vim/vimrc:
syntax on
set background=dark

o set list nie wspomnę.

najważniejsze to:
i, a, x, p, u , ZZ ;)

Powiedz mi czy temperatura wody (chłodziwo) jest gdzieś użyta
do obliczeń czy tylko jest wyświetlana na wyświetlaczu?
Lisu

ODPOWIEDZ

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 26 gości