PLIK main.c :
PLIK wyswietlacze.h:
Przy kompilacji Eclise wyrzuca 2 błędy
1 /
Description Resource Path Location Type
variable 'cyfry' must be const in order to be put into read-only section by means of '__attribute__((progmem))' wyswietlacze.h /AtinyL7 line 37 C/C++ Problem
2/
Description Resource Path Location Type
unknown type name 'prog_uint8_t' wyswietlacze.h /AtinyL7 line 37 C/C++ Problem
Zaczynam z C i nie wiem o co chodzi . Dzięki za wskazówki !
Cytat:#include <avr/interrupt.h>
#include <inttypes.h>
#include <util/delay.h>
#include "wyswietlacze.h" //mój plik nagłówkowy
uint8_t i;
int main(void)
{
DDRB = 255; //cały port jako wyjściowy
DDRD |= (1<<0)|(1<<1); //porty PD0 i PD1 również jako wyjścia
PORTD |= (1<<0); //aktywowanie pierwszego wyświetlacza
while(1)
{
for (i=0; i<10; i++)
{
PORTB = cyfra(i);
_delay_ms(1000); // opóźnienie 1s między kolejnymi cyframi
}
}
return 0;
}
PLIK wyswietlacze.h:
Cytat:/*
* wyswietlacze.h
*
* Created on: 18-04-2021
* Author: PC
*/
#ifndef WYSWIETLACZE_H_
#define WYSWIETLACZE_H_
#endif /* WYSWIETLACZE_H_ */
////////////////////////////////////////////////////////////////////////////////
// wyswietlacze.h - plik nagłówkowy z przydatnymi funkcjami do
// obsługi wyświetlaczy
// wersja: 1.0 data: 7 marca 2008
// autor: Ravender
////////////////////////////////////////////////////////////////////////////////
// Funkcje
//
// uint8_t cyfra(uint8_t) - zwraca podaną cyfrę z pamięci danych
//
//Plik ten należy umieścić w folderze \avr\include
#include <avr/pgmspace.h>
#include <inttypes.h>
#define A 0
#define B 1
#define C 2
#define D 3
#define E 4
#define F 5
#define G 6
//prog_uint8_t cyfry[11] PROGMEM = {
uint8_t cyfry[11] PROGMEM = {
(1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<E)|(1<<F), //0
(1<<B)|(1<<C), //1
(1<<A)|(1<<B)|(1<<G)|(1<<E)|(1<<D), //2
(1<<A)|(1<<B)|(1<<G)|(1<<C)|(1<<D), //3
(1<<F)|(1<<G)|(1<<B)|(1<<C), //4
(1<<A)|(1<<F)|(1<<G)|(1<<C)|(1<<D), //5
(1<<A)|(1<<F)|(1<<E)|(1<<D)|(1<<C)|(1<<G), //6
(1<<A)|(1<<B)|(1<<C), //7
(1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<E)|(1<<F)|(1<<G), //8
(1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<F)|(1<<G), //9
(0<<A)|(0<<B)|(0<<C)|(0<<D)|(0<<E)|(0<<F)|(0<<G), //10 - całkowite wygaszenie wyświetlacza
};
uint8_t cyfra(uint8_t cyfra)
{
return pgm_read_byte(&cyfry[cyfra]);
}
Przy kompilacji Eclise wyrzuca 2 błędy
1 /
Description Resource Path Location Type
variable 'cyfry' must be const in order to be put into read-only section by means of '__attribute__((progmem))' wyswietlacze.h /AtinyL7 line 37 C/C++ Problem
2/
Description Resource Path Location Type
unknown type name 'prog_uint8_t' wyswietlacze.h /AtinyL7 line 37 C/C++ Problem
Zaczynam z C i nie wiem o co chodzi . Dzięki za wskazówki !