Forum: Mikrocontroller und Digitale Elektronik Attiny 13 mit Arduino Uno programmieren?


von Mike (Gast)


Lesenswert?

Also folgendes:
ich habe mir nen Arduino Uno zugelegt in der Hoffnung damit ein wenig 
basteln zu können.
Jetzt würde ich gerne wissen wie ich ein Hexfile auf einen Attiny13 
bekomme. Auf was muss ich achten (benötigte Hardware, steckbrett 
(welches? oder ist das egal) etc.
Am liebsten wäre mir ein Tutorial oder sowas in der richtung, bin was 
das betrifft ein totaler anfänger, aber ohne den µc gehts leider nicht 
weiter.

von Tom (Gast)


Lesenswert?

Hallo,

probier es einmal damit: http://hlt.media.mit.edu/?p=1229

Tom

von Mike O. (mike_o)


Angehängte Dateien:

Lesenswert?

Ich hab das aus dem tutorial mal übernommen, allerdings ist da die rede 
von einem attiny 45 oder 85. Meiner aber ein 13-20PU.
Die Dateien dort sind auch für die im Tutorial genannten µcs. Woher 
bekommt man denn die sheets für andere Attinys?

von Mike O. (mike_o)


Lesenswert?

hier mal das hexfile welches ich damit verwenden müsste um den attiny 13 
zu beschreiben. das problem ist ich hab noch einige hier und will ungern 
auf die neuere baureihe umsteigen hier der link 
https://www.dropbox.com/sh/y3j6lb1kg81dwrc/8KqtegmpRN/8164conv_final.hex

von Krapao (Gast)


Lesenswert?

Für den Attiny13 müsste man in der Arduino IDE 1.0 eine neue Variante 
aufsetzen. Das ist grundsätzlich nicht sooo schwer, aber ein Anfänger 
(you) oder ein Nicht-Arduino-Testen-Könner (me) hat es dabei schwer.

Man muss als erstes die Beschreibung der Boards in der Datei boards.txt 
erweitern, damit ein neuer Eintrag in der IDE unter Boards erscheint:

arduino-1.0\hardware\arduino\boards.txt
1
# ... alter Inhalt
2
# Neu HINZUGEFÜGT
3
4
attiny13.name=ATtiny13 (internal 1.2 MHz clock)
5
attiny13.bootloader.low_fuses=0x6a
6
attiny13.bootloader.high_fuses=0xff
7
attiny13.upload.maximum_size=1024
8
attiny13.build.mcu=attiny13
9
attiny13.build.f_cpu=1200000L
10
attiny13.build.core=arduino:arduino
11
attiny13.build.variant=tiny13

Dann ist eine neue Datei anzulegen:
arduino-1.0\hardware\arduino\variants\tiny13\pins_arduino.h

In dieser Datei steht:
1
/*
2
  pins_arduino.c - pin definitions for the Arduino board
3
  Part of Arduino / Wiring Lite
4
5
  Copyright (c) 2005 David A. Mellis
6
7
  This library is free software; you can redistribute it and/or
8
  modify it under the terms of the GNU Lesser General Public
9
  License as published by the Free Software Foundation; either
10
  version 2.1 of the License, or (at your option) any later version.
11
12
  This library is distributed in the hope that it will be useful,
13
  but WITHOUT ANY WARRANTY; without even the implied warranty of
14
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
  Lesser General Public License for more details.
16
17
  You should have received a copy of the GNU Lesser General
18
  Public License along with this library; if not, write to the
19
  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20
  Boston, MA  02111-1307  USA
21
22
  $Id: pins_arduino.c 565 2009-03-25 10:50:00Z dmellis $
23
24
  Modified 28-08-2009 for attiny84 R.Wiersma
25
  Modified 09-10-2009 for attiny45 A.Saporetti
26
*/
27
28
#ifndef Pins_Arduino_h
29
#define Pins_Arduino_h
30
31
#include <avr/pgmspace.h>
32
33
// ATMEL ATTINY13 / ARDUINO
34
//
35
//                  +-\/-+
36
// Ain0 (D 5) PB5  1|    |8  Vcc
37
// Ain3 (D 3) PB3  2|    |7  PB2 (D 2) Ain1
38
// Ain2 (D 4) PB4  3|    |6  PB1 (D 1) pwm1
39
//            GND  4|    |5  PB0 (D 0) pwm0
40
//                  +----+
41
42
#define TIMER0_OVF_vect TIM0_OVF_vect // avoid modification of WInterrupts.c file
43
44
#define digitalPinToPCICR(p)    ( ((p) >= 0 && (p) <= 4) ? (&GIMSK) : ((uint8_t *)0) )
45
#define digitalPinToPCICRbit(p) ( PCIE )
46
#define digitalPinToPCMSK(p)    ( ((p) <= 4) ? (&PCMSK) : ((uint8_t *)0) )
47
#define digitalPinToPCMSKbit(p) ( (p) )
48
49
#ifdef ARDUINO_MAIN
50
51
// these arrays map port names (e.g. port B) to the
52
// appropriate addresses for various functions (e.g. reading
53
// and writing) tiny45 only port B 
54
const uint16_t PROGMEM port_to_mode_PGM[] = {
55
  NOT_A_PORT,
56
  NOT_A_PORT,
57
  (uint16_t) &DDRB,
58
};
59
60
const uint16_t PROGMEM port_to_output_PGM[] = {
61
  NOT_A_PORT,
62
  NOT_A_PORT,
63
  (uint16_t) &PORTB,
64
};
65
66
const uint16_t PROGMEM port_to_input_PGM[] = {
67
  NOT_A_PIN,
68
  NOT_A_PIN,
69
  (uint16_t) &PINB,
70
};
71
72
const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
73
  PB, /* 0 */
74
  PB,
75
  PB,
76
  PB,
77
  PB, 
78
  PB, // 5
79
80
};
81
82
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
83
  _BV(0), /* 0, port B */
84
  _BV(1),
85
  _BV(2),
86
  _BV(3), /* 3 port B */
87
  _BV(4),
88
  _BV(5),
89
90
};
91
92
const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
93
  TIMER0A, /* OC0A */
94
  TIMER0B,
95
  NOT_ON_TIMER,
96
  NOT_ON_TIMER,
97
  NOT_ON_TIMER,
98
  NOT_ON_TIMER,
99
};
100
101
#endif
102
103
#endif

Es ist eine leichte abgeänderte Version (Pinbeschreibung + TIMER0... 
Define) der entsprechenden Datei für den Attiny8 aus dem 
https://github.com/damellis/attiny Paket.

Wie gesagt, theoretisch wäre es das. Die Warnungen beim Compile kann man 
auch wegbekommen, wenn man mehr an der eigentlichen Arduino core-Source 
fummelt. Es ist aber IMHO icht notwenig/erwünscht das zu tun.

Und wie auch gesagt, ist das der theoretische Weg. Das eigentliche ISP 
über den Arduino UNO auf den Attiny13 (angeschlossen wie Attiny45 oder 
Attiny8) kann ich mangels Hardware nicht testen.

von Krapao (Gast)


Lesenswert?

Add:

In der Datei arduino-1.0\hardware\arduino\cores\arduino\Arduino.h
kann man die Zeile
1
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)

noch um ein || defined(_AVR_ATtiny13_) erweitern.

Es ist aber nicht so gut dokumentiert was die daraufhin folgenden Makros
#define DEFAULT 0
#define EXTERNAL 1
#define INTERNAL 2
bewirken. Mal im Sourcecode stöbern. DEFAULT hängt mit dem ADC zusammen.

von Mike O. (mike_o)


Lesenswert?

wenn du so nett wärst mir zu erklären wozu die folgenden begriffe gut 
sind befrag ich gerne mal das grosse G XD: DEFAULT und ADC? hängt das 
mit dem Code zusammen oder mit der Schaltung?

von Krapao (Gast)


Lesenswert?

Mit dem Quellcode der Arduino-Bibliotheken. Mit den Makros DEFAULT, 
EXTERNAL und INTERNAL werden für bestimmte AVRs bestimmte Codeteile 
angepasst.

Und die Anpassung bei der das DEFAULT verwendet wird, betrifft die 
Hardware der im AVR enthaltenen Analog-Digital-Converter 
ADC-Einheit.

Die anderen Anpassungen mit EXTERNAL oder INTERNAL habe ich beim 
Reinschauen in den Quellcode des Arduino nicht gesehen.

von Nique (Gast)


Lesenswert?

Weil es hier noch keine Success-Meldung gibt:

Es geht! Danke Krapao!

1. boards.txt angepasst wie oben
2. pins_arduino.h erstellt wie oben
3. Arduino.h angepasst wie oben

Und dieser Code hat schon mal gemacht was er soll, blinken an Pin6:

void setup()
{
 pinMode(1, OUTPUT);
}
void loop() {
 digitalWrite(1, HIGH); // set the LED on
 delay(1000); // wait for a second
 digitalWrite(1, LOW); // set the LED off
 delay(1000); // wait for a second
}

von markus (Gast)


Lesenswert?

Mit einem Attiny13 oder einem Attiny85?
Der Tiny ist mit seinen 2KB Flash für die Arduino-Bibliothek ziemlich 
knapp bemessen.

von Cyblord -. (cyblord)


Lesenswert?

Nique schrieb:
> Weil es hier noch keine Success-Meldung gibt:
>
> Es geht! Danke Krapao!
>
> 1. boards.txt angepasst wie oben
> 2. pins_arduino.h erstellt wie oben
> 3. Arduino.h angepasst wie oben

Krass wie einfach es sein kann, einen solchen Boliden wie den Tiny13 
einfach mal so zu programmieren. Zum Glück gibts Arduino, sonst wüsste 
man gar nicht wie man da anfange sollten. Danke danke danke für diesen 
Tip! Endlich kann ich meine ganzen tinys wieder aus dem Müll holen....

von Quack (Gast)


Lesenswert?

Kuebellord, hast du kein Leben?

von Harald N. (haraldn)


Lesenswert?

Quack schrieb:
> Kuebellord, hast du kein Leben?

Vorsicht, hier wird man ganz leicht zur S** gemacht...

Bzgl hilfreicher Tipps... vlg Thread von gestern...

Und weg...

von Eumel (Gast)


Lesenswert?

Harald Nagy schrieb:
> Vorsicht

Ja vor dem Cyberlord muss man schon Angst haben, jemand der im Internet 
unfreundlich ist und Leute anmault, mal was ganz neues, schon ein 
gefährlicher Typ ;)

von Cyblord -. (cyblord)


Lesenswert?

Harald Nagy schrieb:
> Quack schrieb:
>> Kuebellord, hast du kein Leben?
>
> Vorsicht, hier wird man ganz leicht zur S** gemacht...
>
> Bzgl hilfreicher Tipps... vlg Thread von gestern...

Ach du verträgst auch gar nichts. Nur weil du absolut keinerlei 
Selbstreflektion hast. Sonst hättest du mal gemerkt, dass genau DEIN 
Post und DEINE Kritik an anderen Usern, Off-Topic und unangemessen waren 
und du damit genau das gemacht hast, was du eigentlich kritiseren 
wolltest. Und das haben leider auch andere so gesehen. Damit kommst wohl 
nicht klar. Heulst du damit jetzt jeden Thread voll? Wie wärs mal mit 
EINSICHT?

gruß cyblord

von Paul B. (paul_baumann)


Lesenswert?

Es ist verhältnismäßig einfach, sich Leute vom Leibe zu halten, deren
"Ergüsse" man sich getrost ersparen kann. Hier ist eine Methode 
beschrieben:
Beitrag "User ausblenden"

MfG Paul

von Harald N. (haraldn)


Lesenswert?

>
> Ach du verträgst auch gar nichts. Nur weil du absolut keinerlei
> Selbstreflektion hast. Sonst hättest du mal gemerkt, dass genau DEIN
> Post und DEINE Kritik an anderen Usern, Off-Topic und unangemessen waren
> und du damit genau das gemacht hast, was du eigentlich kritiseren
> wolltest. Und das haben leider auch andere so gesehen. Damit kommst wohl
> nicht klar. Heulst du damit jetzt jeden Thread voll? Wie wärs mal mit
> EINSICHT?
>
> gruß cyblord

Ach halt die Klappe. Du bist in Zukunft einfach unsichtbar für mich...

von Cyblord -. (cyblord)


Lesenswert?

Harald Nagy schrieb:

> Ach halt die Klappe. Du bist in Zukunft einfach unsichtbar für mich...

Soviel zum Thema: Einsicht...

Vielleicht fehlt dir dazu aber noch etwas Reife.
Dieselbe hat ja auch mit dem Alter wenig zu tun.

: Bearbeitet durch User
von Das TIER (Gast)


Lesenswert?

Moin, ich habs gemacht wie in
Autor: Nique (Gast)
Datum: 26.03.2014 10:34
oben beschrieben, und habe den fehler "missing upload.tool" bekommen. 
damit is offensichtlich die boards.txt gemeint, wo offenbar eine zeile 
fehlt.
weiss die einer?
mfg Das TIER

von Thomas (Gast)


Lesenswert?

Mike Oswald schrieb:
> Ich hab das aus dem tutorial mal übernommen,

Wie hast Du die Grafiken erstellt?

Würde damit auch gerne anschauliche Darstellungen machen!

von peter (Gast)


Lesenswert?

mit Fritzing zum Beispiel

von Heiko K. (heikoch)


Lesenswert?

Hier ist ein Reository das über den Arduino-Boardmanager installierbar 
ist
https://github.com/MCUdude/MicroCore

Bei MCUdude gibt es auch für andere AVR Konfigurationen.

Heiko

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.