AT Tiny25 mit Arduino Leonardo programmieren

Hi,

Ich möchte auf einen AT tiny 25 ein Programm installieren, welches bei Helligkeit eine LED aus schaltet und bei Dämmerung an, bei fortschreitender Dunkelheit soll auch die LED dunkler werden. Die Schwellwerte müssen natürlich beim Programmieren einstellbar sein.

Ich habe gehört, der Tiny kann PWM?

Im Anhang findet man den Aufbau

Mit dem Arduino kenne ich mich nun schon aus, weiß aber nicht, wie ich den als ISP nutzen kann und wie ich das Programm schreiben muss, damit ich es auf den AT Tiny schreiben kann

MfG und danke schonmal

McKaiver:
Ich habe gehört, der Tiny kann PWM?

Da das Deine einzige Frage ist kann ich nur sagen: richtig gehört :slight_smile:

Und falls Du was lesen möchtest: KLICK

Und noch ein Hinweis, falls das mit dem Lesen klappt: kauf Dir für solche Spielereien einen USB Programmer, kostet fast nix und ist viel einfacher in der Handhabe.

Danke :slight_smile:

Ja, an dem DAtenblatt lese ich grade schon rum, aber wenn das Datenblatt reichen würde bräuchte man ja keine Foren mehr, man könnte immer an die Datenblätter verweisen.

Ich haabe grade das Arduino Beispiel ISP geladen und versuche es grade zu verstehen.

Muss ich das auf den Arduino laden? und Wenn es drauf ist, wie bekomme ich dann den Code für die Anwendung auf den Tiny?

Und etwas evtl Offtopic, aber wie müsste der Code für den Tiny aussehen?

Komm schon, bissel Eigeninitiative :angry:

Schon mal nach "arduino isp attiny" gegugelt?
Schon mal die Beispiele aus der IDE angeschaut zu analogwrite? Oder die Referenz?

Da steht ALLES drin was Du brauchst.

Ich kann dir nur für den Arduino UNO ein Beispiel zeigen. Aber wie "Klaus_ww" schon sagte... es geht auf jeden Fall. Und das sogar sehr gut (eigene Erfahrung). Vielleicht unterstützt dich dabei auch das beigefügte Bild, welches ich immer wieder gerne für so etwas hervorhole. Programmieren kannst du ihn wie gewohnt, jedoch müssen die Pin-Nummern entsprechend angepasst werden (im Bild hellblau hinterlegt).

Klaus_ww:
kauf Dir für solche Spielereien einen USB Programmer, kostet fast nix und ist viel einfacher in der Handhabe.

Nicht unbedingt einfacher, aber billiger.

ArduinoAsISP ist simpel und für einen der gerne selbst lötet, auch leicht auf eine Lochrasterplatine zu löten.

Edit:

Wollte das gerade raussuchen, aber Rudi war schneller.

Wollte das gerade raussuchen, aber Rudi war schneller.

'tschuldigung... :wink: Aber das Bild habe ich so wie es vorliegt selbst gepinselt. Auch für die anderen Tinys, hilft mir auf jeden Fall immer wieder gut, die grauen Zellen lassen halt nach :-[

RudiDL5:
'tschuldigung... :wink: Aber das Bild habe ich so wie es vorliegt selbst gepinselt. Auch für die anderen Tinys, hilft mir auf jeden Fall immer wieder gut, die grauen Zellen lassen halt nach :-[

Na dann will ich dir mal verzeihen. :wink:

Das ist auch sehr übersichtlich, meins wäre dann ein anderes.

Guckst du hier: http://highlowtech.org/?p=1695
Dort ist beschrieben, wie man die IDE um die zusätzlichen Files erweitert.
Besorge dir einen USBasp Programmer. Der ist als Chinaclone für unter 2€ zu haben. Dauert halt 3 Wochen, bis er da ist. Das ist nicht so ein Gefrickle, wie den Arduino als Programmer zu nutzen.
Ich habe den Tiny 85 so schon erfolgreich genutzt. Preislich machst du mit dem 25 nichts gut. Außerdem weiß ich nicht, ob der 25 inzwischen in die IDE mit eingebunden ist. Du ersparst dir mit dem 85'er also auch noch Stress und Ärger. Noch dazu ist er universeller verwendbar, da mehr Speicherplatz :wink:
Hier auch noch mal eine Beschreibung auf deutsch:
http://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren

OMG ist das EASY!!!!!!!!!!!!!!!!!!!!!!

Bin grade durch ein Tutorial gegangen und am anfang dachte ich was? Hä? Wie?

vorher dachte ich, das ist bestimmt aufwendig, ich werde das nur jetzt ein mal machen... Ich brauche keinen Programmer... aber das ist ja so einfach umzusetzen, dass ich das in zukunft öfter machen werde,

danke dafür :slight_smile:

nix_mehr_frei:
Besorge dir einen USBasp Programmer. Der ist als Chinaclone für unter 2€ zu haben. Dauert halt 3 Wochen, bis er da ist. Das ist nicht so ein Gefrickle, wie den Arduino als Programmer zu nutzen.

Bei diesen Dingern kannst du aber auch Pech haben, das da noch eine alte Firmware drauf ist, dann brauchst du noch einen zweiten, um diese auf den aktuellen stand zu bringen.

Es ist aber nicht einfacher damit, du sparst lediglich das zusammen löten.

Hm, doch nicht so leicht, den Bootloader konnte ich brennen, daher dachte ich es geht, aber das Programm bekomme ich nicht drauf:

Arduino: 1.6.7 (Windows 10), Board: "ATtiny, ATtiny25, 1 MHz (internal)"

In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26:0,

from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:29,

from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:224,

from sketch\ATTinyPWM.ino.cpp:1:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:32:0: warning: "BIN" redefined [enabled by default]

#define BIN 2

^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\iotn25.h:38:0,

from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:422,

from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:88,

from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,

from sketch\ATTinyPWM.ino.cpp:1:

c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\iotnx5.h:55:0: note: this is the location of the previous definition

#define BIN 7

^

Der Sketch verwendet 1.392 Bytes (67%) des Programmspeicherplatzes. Das Maximum sind 2.048 Bytes.
Globale Variablen verwenden 18 Bytes (14%) des dynamischen Speichers, 110 Bytes für lokale Variablen verbleiben. Das Maximum sind 128 Bytes.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x03
Problem beim Hochladen auf das Board. Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload.

Dieser Report hätte mehr Informationen mit
"Ausführliche Ausgabe während der Kompilierung"
aktiviert in Datei > Einstellungen.

Was möchtest du denn für Libraries einbinden?

Nimm mal einen einfachen Sketch, z.B. Blink o.ä.

Habe das:
const int analogInPin = 3; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 0; // Analog output pin that the LED is attached to

int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
void setup() {

}

void loop() {
sensorValue = analogRead(analogInPin);
outputValue = map(sensorValue, 0, 1023, 0, 255);
analogWrite(analogOutPin, outputValue);
}

Ja, die Ressourcen eines ATtiny25 sind recht beschränkt: nur 2k Flash und nur 128 Byte SRAM
Das kann ziemlich wenig sein und du musst dich ein ein bisschen anstrengen, wenn du ihn über die Arduino-IDE programmieren willst. Mit "Arduino-Komfort-Funktionen" wie PinMode oder DigitalWrite kann es sein dass du sehr schnell an die "Decke stößt" :slight_smile:

Vom Preis her ist nur wenig Unterschied zum ATtiny85, der mit 8k Flash und immerhin 512 Byte SRAM schon etwas großzügiger ausgestattet ist. Wenn du also noch nichts gekauft hast, würde ich eher 85er als 25er besorgen. Meist kommt es ja nicht um ein paar Cent mehr oder weniger an (in der Massenfertigung dagegen schon).

Auch ich würde zu einem "normalen" ISP-Programmer raten, das kostet nicht viel und läuft "einfach einfach" :slight_smile:

Aber weil es hier ja um das programmieren eines ATtiny25 mit einem Leonardo geht:
Das spezielle am Leonardo ist ja, dass die Anschlüsse MOSI, MISO und SCK nicht an den Pins D11 bis D13 liegen (wie beim UNO), sondern nur an den ICSP-Anschlüssen. Du musst also diese Pins mit deinem ATtiny verbinden und NICHT D11-D13.
Ob der Sketch "Arudino as ISP" (aus den Beispielen) überhautp mit einem Leonardo funktioniert weiß ich übrigens nicht und wäre auszuprobieren. Mit einem UNO oder MEGA geht es, das weiß ich.

Ansonsten

Ja, danke für den Tip,

habe auch schon vermutet, dass es am Leonardo lag... der hat ja ein paar eigenheiten...

Habe es nun mit nem Nano gemacht und es läuft, der Blink funktioniert, aber das analog write noch nicht:

int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
void setup() {
pinMode(1,INPUT);
pinMode(0, OUTPUT);

}

void loop() {
sensorValue = analogRead(1);
outputValue = map(sensorValue, 0, 1023, 0, 255);
analogWrite(0, outputValue);
delay(1000);
}

Bei dem Code blinkt die LED nur mal heller und mal dunkler, egal was ich mit dem Poti mache

pinMode(1, INPUT) setzt den DigitalPort 1 auf Eingang.
pinMode(A1, INPUT) wäre korrekt für AnalogPort 1.

Also,

ich habe das problem isoliert, es scheint der analog read zu sein... hat da einer Tipps, der das schonmal gemacht hat?

bei analogRead(1); habe ich den schleifer an Pin 6 des IC angeschlossen, habe ich das so richtig verstanden?

McKaiver:
Also,

ich habe das problem isoliert, es scheint der analog read zu sein... hat da einer Tipps, der das schonmal gemacht hat?

bei analogRead(1); habe ich den schleifer an Pin 6 des IC angeschlossen, habe ich das so richtig verstanden?

So wie ich das sehe, ist 1 kein analoger Eingangspin.
Schau dir mal die Grafik von Rudi an.

Pin1 ist nicht 1 in der IDE.

Deswegen bin ich so verwirrt

Dachte AIN1

bedeutet analog in 1

habe es aber auch schon mit pin 3 versucht, da er ADC3 und PB3 deckungsgleich ist... da dann an Pin 2 des ICs angeschlossen