*.inc einfügen

Hallo,
ich möchte ein Krippenlagerfeuer mit einem Tiny nachbauen und hab schon einen passenden Code gefunden. Jetzt verlangt das Programm eine *.inc die ich bereits hier gefunden habe. Wie bekomme ich den Text jetzt in meine Bibliothek? In der Anleitung ist nur von *.zip und *.cpp die rede aber auf der Seite habe ich ja nur einen Text.

Danke schonmal im vorraus

Auf Deine Frage habe ich keine Antwort, allerdings schreibe ich Sketche für ATtiny45/85/4313 mit der Arduino-IDE fast so wie für einen UNO. Möglicherweise wäre das eine Alternative für Dich.

asm Programmierung für attiny ist eine andere Baustelle:

https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Assembler_und_Inline-Assembler
und zwar der standalone Assembler Teil.( nicht inline )

Wenn du dir das wirklich antun willst :wink:

Mit #include lassen sich beliebige Dateien einfügen.

Ob der Compiler die Datei verkraftet, so wie sie ist, bleibt abzuwarten. Vermutlich muß man noch ein asm{} o.ä. drumherum schreiben.

Zeige doch mal den Code den du gefunden hast.

In der Anleitung ist nur von *.zip und *.cpp die rede aber auf der Seite habe ich ja nur einen Text.

Welche Anleitung?
Sehe ich nicht!

Und eine *,inc Datei ist nur Text...
Was soll es sonst sein?

Ich frage mich, worum es überhaupt geht.

Aus dem Link entnehme ich, daß eine AVR Bibliothek eingebunden werden soll. Im README steht dazu ganz klar, daß diese Bibliothek für Atmel Studio geschrieben ist, nicht für die Arduino IDE und Entwicklungsumgebung.

Die einfache Antwort wäre damit: Diese Bibliothek funktioniert vermutlich nicht in der IDE, nimm was anderes. Entweder Atmel Studio, oder eine andere Bibliothek.

Wenn Du es trotzdem versuchen möchtest, lade die ZIP Datei herunter (Button “Clone or download”), und expandiere sie in Dein Bibliotheksverzeichnis (Sketchbook\libraries).

Wie sieht denn das Programm aus, das diese Bibliothek verlangt? Ist das ein Sketch (*.ino), oder was?

Anbei mal der Code:

/*
Flackernde LED-Flamme für ATtiny12

LEDs werden über Soft-PWM gedimmt, PWM-Frequenz ca 73Hz, 5 Kanäle (PB0 bis PB4), 64 Stufen.
PWM-Werte werden nach 5 Zyklen zufällig neu bestimmt.

*/

.include “tn12def.inc” ; Definitionsdatei für den Prozessortyp einbinden

.def temp = r16
.def Counter = r17
.def Counter2 = r18
.def Random = r19
.def PWM1 = r21
.def PWM2 = r22
.def PWM3 = r23
.def PWM4 = r24
.def PWM5 = r25

.equ channel1 = 0x01 ; Kanal1: PB0
.equ channel2 = 0x02 ; Kanal2: PB1
.equ channel3 = 0x04 ; Kanal3: PB2
.equ channel4 = 0x08 ; Kanal4: PB3
.equ channel5 = 0x10 ; Kanal5: PB4

.org 0x0000
rjmp main ; Reset Handler
.org OVF0addr
rjmp timer0_overflow ; Timer Overflow Handler

;============
; Main
;============
main:
ldi PWM1, 0x30 ; Startwerte für PWM, maximal 0x3F
ldi PWM2, 0x30
ldi PWM3, 0x30
ldi PWM4, 0x30
ldi PWM5, 0x30
ldi Random, 0x10 ; Initialwert für Zufallsgenerator

; Port initialisieren
ldi temp, 0xFF
out DDRB, temp ; Alles Ausgang
ldi temp, 0x00
out PORTB, temp ; Alles Low

;Timer initialisieren
ldi temp, 0x01
out TCCR0, r16 ; Prescaler 1
ldi temp, 0x02
out TIMSK, r16 ; Timer Interrupt Enabled

sei ; Interrupts global aktivieren

; Haupt(Endlos)schleife
loop:
rjmp loop

;============
; ISR
;============
; Bei jedem Timer-Overflow Counter inkrementieren
timer0_overflow:
inc Counter

ldi temp, 0

; Wenn Zähler > PWM-Wert → Ausgang auf 1 (LED aus)
cp Counter, PWM1 ; Counter und PWM vergleichen
brlo weiter ; Überspringen wenn Zähler < PWM
ori temp, channel1
weiter:

; Zweiter Kanal
cp Counter, PWM2 ; Counter und PWM2 vergleichen
brlo weiter2 ; Überspringen wenn Zähler < PWM2
ori temp, channel2
weiter2:

; Dritter Kanal
cp Counter, PWM3 ; Counter und PWM3 vergleichen
brlo weiter3 ; Überspringen wenn Zähler < PWM3
ori temp, channel3
weiter3:

; Vierter Kanal
cp Counter, PWM4 ; Counter und PWM4 vergleichen
brlo weiter4 ; Überspringen wenn Zähler < PWM4
ori temp, channel4
weiter4:

; Fünfter Kanal
cp Counter, PWM5 ; Counter und PWM5 vergleichen
brlo weiter5 ; Überspringen wenn Zähler < PWM5
ori temp, channel5
weiter5:

out PORTB, temp

; Wenn Zähler = 63 → Zurücksetzen und von vorne
cpi Counter, 0x3F
brne weiter6; Überspringen wenn Counter != 0x3F
ldi temp, 0x00
out PORTB, temp ; Alle Kanäle auf 0 setzen
clr Counter
inc Counter2
weiter6:

; Wenn Zähler2 voll → neuen zufälligen PWM-Wert setzen
cpi Counter2, 0x05 ; Nach 5 Intervallen neuen PWM-Wert
brne weiter7;
mov PWM1, Random ; neuen Zufallswert als PWM-Vergleichswert für Kanal1
andi PWM1, 0x3F ; maximal 63

; neue Zufallszahl generieren
rcall LFSR

mov PWM2, Random ; neuen Zufallswert als PWM-Vergleichswert für Kanal2
andi PWM2, 0x3F ; maximal 63

; neue Zufallszahl generieren
rcall LFSR

mov PWM3, Random ; neuen Zufallswert als PWM-Vergleichswert für Kanal3
andi PWM3, 0x3F ; maximal 63

; neue Zufallszahl generieren
rcall LFSR

mov PWM4, Random ; neuen Zufallswert als PWM-Vergleichswert für Kanal4
andi PWM4, 0x3F ; maximal 63

; neue Zufallszahl generieren
rcall LFSR

mov PWM5, Random ; neuen Zufallswert als PWM-Vergleichswert für Kanal5
andi PWM5, 0x3F ; maximal 63
clr Counter2

weiter7:

reti

;============
; Funktionen
;============
LFSR:
clr temp
sbrc Random,7
inc temp
sbrc Random,5
inc temp
sbrc Random,4
inc temp
sbrc Random,3
inc temp
ror temp
rol Random
brne lfsrx
ldi Random,128
lfsrx:
ret

Ok, habe gerade gesehen daß das Programm in Atmel Studio geschrieben worden ist. Als ich es installieren wollte, meckert Atmel das ich 2 Updates installieren soll die aber bereits installiert sind.