logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Błąd składniowy w kodzie dla wyświetlacza 7-segmentowego ATmega32

Riwars 06 Sie 2018 23:43 582 2
  • #1 17370498
    Riwars
    Poziom 7  
    Znalazłem kod obsługi wyś 7-segmentowego, pozmieniałem rejestry pod swój mikro procesor (ATmega32).
    Tylko mam problem z linia " static const uint8_t __flash DIGITS[11]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xBF};"
    Kompilator pokazuje błąd składniowy.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dodano po 11 [minuty]:

    zrezygnowałem z pamięci flash teraz linia wygląda tak " static const uint8_t DIGITS[11]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xBF};" i kompilator nie pokazuje żadnego błędu, tylko mam problem z wyświetlaniem , cyfry na sb nachodzą. Ma ktoś pomysł jak to rozwiązać.

    Dodano po 20 [minuty]:

    Wystarczyło usunąć negacje w linii " PORTC=(PORTC & 0xF0) | (~(1<<LEDNO) & 0x0F);"
    Temat można uznać z zamknięty. Tylko jestem ciekaw czm autor kodu chciał umieścić w pamięci flash? Chodziło tylko o prędkość odczytu ? czy o coś więcej?
  • Pomocny post
    #2 17370545
    simw
    Poziom 27  
    Riwars napisał:
    Znalazłem kod obsługi wyś 7-segmentowego, pozmieniałem rejestry pod swój mikro procesor (ATmega32).
    Tylko mam problem z linia " static const uint8_t __flash DIGITS[11]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xBF};"
    Kompilator pokazuje błąd składniowy.

    To standardowy błąd eclipse i pluginu do AVR, nie wpływa ten błąd na kompilację, jedynie na "podkreślanie" składni w Eclipse.
    Rozwiązanie tego problemu znajdziesz m.in. w tym wątku:
    https://forum.atnel.pl/topic15543.html#p162300


    Riwars napisał:

    zrezygnowałem z pamięci flash teraz linia wygląda tak " static const uint8_t DIGITS[11]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xBF};" i kompilator nie pokazuje żadnego błędu, tylko mam problem z wyświetlaniem , cyfry na sb nachodzą. Ma ktoś pomysł jak to rozwiązać.

    Dodano po 20 [minuty]:

    Wystarczyło usunąć negacje w linii " PORTC=(PORTC & 0xF0) | (~(1<<LEDNO) & 0x0F);"
    Temat można uznać z zamknięty. Tylko jestem ciekaw czm autor kodu chciał umieścić w pamięci flash? Chodziło tylko o prędkość odczytu ? czy o coś więcej?

    Tak pewnie chciał, zamiast "__flash" mógłbyś dodać PROGMEM, ale wymagałoby to
    dodatkowej modyfikacji kodu i dodanie makr do odczytu pamięci flash: "pgm_read_xxx".

    Osobiście zalecam korzystanie z "__flash", przyda się to później do łatwiejszego przenoszenia kodu z AVR np. do STM32.
  • #3 17371125
    Riwars
    Poziom 7  
    Dzięki za pomoc
REKLAMA