Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 17 gru 2025, o 22:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 35 ]  Przejdź na stronę Poprzednia strona  1, 2
Autor Wiadomość
PostNapisane: 24 sie 2014, o 20:27 
Offline
Nowy

Dołączył(a): 21 kwi 2013
Posty: 11
Pomógł: 0

Kolego Jadamis, nigdy tak nie pisz programów!!! Czyli:
...
Kod:
while(1)
        {
eeprom_write_byte(&silnik, krok);     //zapis
 
 
                if(DOWN)
                {
                        _delay_ms(50);
                        krok++;
                }
 
                if(UP)
                {
                        _delay_ms(50);
                        krok--;
                }
 
                lcd_locate(0,0);
                lcd_int(krok);
 
        }//while
}//ma

...
Po pierwsze liczba możliwych zapisów do pamięci eeprom jest ograniczona. Po drugie w pętli zapisujesz wciąż te samą wartość. Zapisuj ją tylko po zmianie. Ja bym napisał to tak:
...
Kod:
    if(DOWN)
                {                 
                        krok++;
                        eeprom_write_byte(&silnik, krok);     //zapis
                        _delay_ms(50); // daj mikro czas na zapis
                }

Jesze lipszym rozwiązaniem byłoby użycie/dodanie instrukcji swich case.
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sie 2014, o 11:11 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3230
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

Panowie Artyum, Lukas i Sebolek66 proszę się zastosować do topic7402.html

Inaczej posty zostaną usunięte.

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 mar 2017, o 17:52 
Offline
Nowy

Dołączył(a): 29 mar 2017
Posty: 2
Pomógł: 0

Witam ja mam trochę inny problem - mianowicie przy uruchomieniu chciałbym aby przeczytał mi następujące parametry:

volatile uint16_t U1 = 2;
volatile uint16_t U2 = 20;
volatile uint16_t U3 = 984;
volatile uint16_t U4 = 620;
volatile uint8_t U5 = 3;
volatile uint16_t U6 = 1;
volatile uint16_t U7 = 15;
volatile uint16_t U8 = 7;

więc napisałem coś takiego:

#include <avr/io.h>
#include <util/delay.h>
#include "LCD.H"
#include "menu.h"
#include <avr/interrupt.h>
#include "buttons.h"
#include <stdio.h>
#include <string.h>
#include <util/atomic.h>
#include "1wire_basic.h"
#include "1wire.h"
#include "DS18B20.h"



int main(void){

U1 = eeprom_read_word(&eprom[0]);
U2 = eeprom_read_word(&eprom[1]);
U3 = eeprom_read_word(&eprom[2]);
U4 = eeprom_read_word(&eprom[3]);
U5 = eeprom_read_word(&eprom[4]);
U6 = eeprom_read_word(&eprom[5]);
U7 = eeprom_read_word(&eprom[6]);
U8 = eeprom_read_word(&eprom[7]);


następnie wygląda to tak:

#include <avr/eeprom.h> //eprom

uint16_t EEMEM eprom[10]; //eprom


zapis po naciśnięciu przycisku wygląda tak:


if (((oldkey^key) & (1<<BUTTON_OK)) && ((key & (1<<BUTTON_OK)) == 0)) {
Set_values.f_TIME_wash = 0;
set_block = 0;
eeprom_write_word(&eprom[7],U8);
Menu_Show();
}
oldkey = key;
}

Cały problem polega na tym iż zapis działa poprawnie ale niestety strasznie zniekształcił mi parametry - wprowadził jakieś z kosmocu - proszę o pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 mar 2017, o 18:00 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27445
Lokalizacja: Szczecin
Pomógł: 1045

dark113 napisał(a):
Witam ja mam trochę inny problem

Inny problem to znaczy jaki? No sorki ale ten post jest (bez urazy KOMPLETNIE BEZ SENSU) ... ale już wyjaśniam na spokojnie dlaczego.

PO PIERWSZE - wątek dotyczy tego jak należy podchodzić w prawidłowy sposób do zapisu/odczytu EEPROM w prockach AVR

PO DRUGIE - ty dopisujesz się na zasadzie wykopalisk archaicznych do wątku w którym nie ma problemu - tylko pokazane jest jak należy działać, tymczasem wymyślasz jakiś problem - nie zadawszy sobie MINIMUM wysiłku aby obejrzeć poradnik jak należy do tego podejść

PO TRZECIE - robisz wszystko CAŁKOWICIE ODWROTNIE niż wyjaśniam w poradniku i co? Piszesz, że masz inny problem ? Inny w porównaniu do czego ? ... No proszę pomyśl chwilę


Proponuję ci dwa rozwiązania.

PIERWSZE - obejrzyj jednak poradnik o którym mowa w pierwszym wątku poradnika i naucz się jak należy do tego podejść

DRUGIE - załóż całkiem oddzielny wątek na forum ze swoim dziwnym problemem ale OPISZ GO DOKŁADNIE - zamiast pisać, że "masz podobny" bo nawet nie wiadomo do czego podobny .... I zrozum, że forum działa w ten sposób - że tworzy się nowe wątki a nie wciąż dopisuje się do jednego starego wątku - toż to byłby znowu nonsens. Chciałbyś czytać jakieś forum w którym jest jeden GLOBALNY wątek i wszyscy się do niego dopisują na końcu ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 mar 2017, o 22:25 
Offline
Nowy

Dołączył(a): 29 mar 2017
Posty: 2
Pomógł: 0

Dziękuję za wyczerpującą odpowiedź !!
Porady były dla mnie bardzo pomocne - uwagi zachowam na przyszłość..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 35 ]  Przejdź na stronę Poprzednia strona  1, 2

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO