Skocz do zawartości

Attiny13a błąd kompilacki, Arduino IDE


Pomocna odpowiedź

Napisano

Witam!
kupiłem pare sztuk Attiny13a żeby zrobić prosty sterownik serwomechanizmu, i tak: zrobiłem wszystko tak jak pokazali na filmie na YouTobie, wypalił się ten bootloader, miganie diodą działa, a kiedy chcę wgrać program  do sterowania serwem to wyskakuje mi taki komunikat:

Arduino:1.8.9 (Windows Store 1.8.21.0) (Windows 10), Płytka:"ATtiny13, 9.6 MHz internal osc., BOD 2.7V, Micros disabled"

Opcje projektu zmienione, przeładuj całość
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp: In function 'void TIMER1_COMPA_vect()':

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:82:31: error: 'TCNT1' was not declared in this scope

   handle_interrupts(_timer1, &TCNT1, &OCR1A);

                               ^

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:82:39: error: 'OCR1A' was not declared in this scope

   handle_interrupts(_timer1, &TCNT1, &OCR1A);

                                       ^

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp: In function 'void initISR(timer16_Sequence_t)':

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:128:5: error: 'TCCR1A' was not declared in this scope

     TCCR1A = 0;             // normal counting mode

     ^

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:129:5: error: 'TCCR1B' was not declared in this scope

     TCCR1B = _BV(CS11);     // set prescaler of 8

     ^

In file included from c:\program files\windowsapps\arduinollc.arduinoide_1.8.21.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files\windowsapps\arduinollc.arduinoide_1.8.21.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\interrupt.h:38,

                 from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:22:

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:129:18: error: 'CS11' was not declared in this scope

     TCCR1B = _BV(CS11);     // set prescaler of 8

                  ^

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:130:5: error: 'TCNT1' was not declared in this scope

     TCNT1 = 0;              // clear the timer count

     ^

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:136:5: error: 'TIFR1' was not declared in this scope

     TIFR1 |= _BV(OCF1A);     // clear any pending interrupts;

     ^

In file included from c:\program files\windowsapps\arduinollc.arduinoide_1.8.21.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files\windowsapps\arduinollc.arduinoide_1.8.21.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\interrupt.h:38,

                 from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:22:

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:136:18: error: 'OCF1A' was not declared in this scope

     TIFR1 |= _BV(OCF1A);     // clear any pending interrupts;

                  ^

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:137:5: error: 'TIMSK1' was not declared in this scope

     TIMSK1 |=  _BV(OCIE1A) ; // enable the output compare interrupt

     ^

In file included from c:\program files\windowsapps\arduinollc.arduinoide_1.8.21.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from c:\program files\windowsapps\arduinollc.arduinoide_1.8.21.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\interrupt.h:38,

                 from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:22:

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:137:20: error: 'OCIE1A' was not declared in this scope

     TIMSK1 |=  _BV(OCIE1A) ; // enable the output compare interrupt

                    ^

exit status 1
Błąd kompilacji dla płytki ATtiny13.
Błędna biblioteka znaleziona w C:\Users\Silver1\Documents\Arduino\libraries\SD: brak plików nagłówkowych (.h) w C:\Users\Silver1\Documents\Arduino\libraries\SD
Błędna biblioteka znaleziona w C:\Users\Silver1\Documents\Arduino\libraries\SD: brak plików nagłówkowych (.h) w C:\Users\Silver1\Documents\Arduino\libraries\SD

Ten raport powinien zawierać więcej informacji jeśli w 
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"


Czy to może mieć związek z tym że jest jakaś większa różnica między Attiny 13 i Attiny13a ?
link do dodatkowych adresów URL do menedźera płytek: https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
I jeszcze kod programu w razie W :

#include <Servo.h>

Servo serwomechanizm;

int odczytanaWartosc;
void setup() {

  serwomechanizm.attach(1);

}

void loop() {
odczytanaWartosc = analogRead(A1);
serwomechanizm.write(odczytanaWartosc);
}

Układ programuje w Arduino IDE, Windows 10, Arduino nano jako programator, daje jeszcze screen ustawień płytki:

image.thumb.png.952e227ae086364c706a5c42d1f187d7.png

(edytowany)

A czy w ATtiny13A jest taki rejestr TCNT1? Ten mikrokontroler ma tylko jeden licznik TCNT0. Twój program raczej powinien pracować na rejestrach, które w układzie się znajdują.

Edytowano przez Belferek
(edytowany)

hm, no pobawiłem się jeszcze chwilę, ale jak wybiorę opcję Attiny13A to jest podobnie i nadal nie działa, więc nie wiem już o co chodzi

image.png

Edytowano przez Silver_1
(edytowany)
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\Servo\src\avr\Servo.cpp:130:5: error: 'TCNT1' was not declared in this scope

     TCNT1 = 0;              // clear the timer count

     ^

Przecież wszystko masz napisane w komunikacie. Próbujesz użyć klasy Servo, a ta odwołuje się do nieistniejącego rejestru tu- TCNT1

Moim zdaniem nie możesz tej biblioteki użyć z tym mikrokontrolerem. Zobacz datasheet dla ATtiny13A - tam nie ma Timer1.

Tak na marginesie tu znajdziesz wiele projektów korzystających z ATtiny13 - warto zobaczyć.

Edytowano przez Belferek

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...