Forum: Mikrocontroller und Digitale Elektronik ATtiny13 blinkt nicht Arduino


von LeDran (Gast)


Lesenswert?

http://highlowtech.org/?p=1695
Nach dieser Anleitung habe ich einen At13 mit meinem Arduino Nano 
geflasht.
Wenn ich das angepasste Blink Programm laufen lasse passiert jedoch 
nichts weiter als dass die LED an dem Port leuchtet und zwar konstant. 
An anderen Port macht diese nichts. Das leuchten ist je nach 
Programmiertem Port.
Grüße LeDran

von E25 (Gast)


Lesenswert?

LeDran schrieb:

> Wenn ich das angepasste Blink Programm laufen lasse passiert jedoch
> nichts weiter als dass die LED an dem Port leuchtet und zwar konstant.
> An anderen Port macht diese nichts. Das leuchten ist je nach
> Programmiertem Port.
Show Source,
Kabel zum Programmieren abgezogen? Kannst ihn ja vom nano mit dessen 
3,3V versorgen.

von Adolf S. (juppe)


Lesenswert?

LeDran schrieb:
> das angepasste Blink Programm laufen lasse passiert jedoch
> nichts

Welches?

von E25 (Gast)


Lesenswert?

Probier mal das hier:
1
#define F_CPU 1200000UL  # default fuses sind 9.6Mhz internal Oszi und CLKDIV 8 => 1.2Mhz
2
#include <avr/io.h>
3
#include <util/delay.h>
4
5
#define LED_PIN PB0  //LED an PB0
6
7
int main(void) {
8
9
  DDRB |= (1 << LED_PIN);  //Als Ausgang konfigurieren
10
  PORTB = (1 << LED_PIN);
11
12
  while (1) {
13
    PORTB |= (1 << LED_PIN);
14
    _delay_ms(500);
15
    PORTB &= ~(1 << LED_PIN);
16
    _delay_ms(500);
17
  }
18
  return 0;
19
}

Wenn das nicht geht stimmt was mit deiner Verkabelung zum Flashen nicht.
Wenn du den Tiny flashst, LED abklemmen.

von E25 (Gast)


Lesenswert?

E25 schrieb:
> Probier mal das hier:
>
1
> #define F_CPU 1200000UL  // default fuses sind 9.6Mhz internal Oszi und 
2
>
Statt '#' ein '//'

von LeDran (Gast)


Lesenswert?

Mit dem Arduino Blinkprogramm.
1
int led = 0;
2
3
// the setup routine runs once when you press reset:
4
void setup() {                
5
  // initialize the digital pin as an output.
6
  pinMode(led, OUTPUT);     
7
}
8
9
// the loop routine runs over and over again forever:
10
void loop() {
11
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
12
  delay(66);               // wait for a second
13
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
14
  delay(1000);               // wait for a second
15
}

Zum Programmieren hab ich ihn in einer eigenen Fassung, also nur eine 
Verbindung zum Nano. Der hat auch den Kondensator verpasst bekommen.

von LeDran (Gast)


Lesenswert?

Ok mit dem Beispielcode von E25 macht er schonmal was er soll. Somit 
weis ich zumindest das dieser Teil passt. Ist ein alter Tiny wo ich 
nicht mal wusste ob er noch geht. Danke bis jetzt schonmal.
LeDran

von E. D. (elektronenloddel)


Lesenswert?

LeDran schrieb:
> int led = 0;

Ein int ist ein 16-bit vorzeichenbehafteter Platzhalter(aka Variable). 
Passt das zu einem Port, dessen Breite 8 Bit ist?

von Helge (Gast)


Lesenswert?

Passt das zu einem Port, dessen Breite 8 Bit ist?
>  digitalWrite(led, HIGH);

ist kein Port, sondern eine Funktion. Der Parameter led ist einfach eine 
Zahl, die sagt welcher Portpin gemeint ist.

von E25 (Gast)


Lesenswert?

LeDran schrieb:
> http://highlowtech.org/?p=1695
Warte mal da war doch was mit dieser Tiny-Unterstützung: Ach ja:
Ich lese dort nur nur ab ATtiny45 aufwärts, der 13er wird nicht 
unterstützt.

Soviel ich weiss gibts aber woanders (google-code seite) jemanden der da 
was für den Tiny13 gestrickt hat, habe ich aber nie getestet.

Ich würde einfach 'natives' C verwenden, das geht auch aus der 
Arduino-IDE heraus. Du schreibst halt kein Sketch mit setup und loop 
sondern eine normale C-Datei wie oben mit den avr-lib Befehlen. Du 
kannst dir ja selber Macros oder Funktionen schreiben die das Verhalten 
von der Arduinolib nachbilden. Das jagst du dann durch den Compiler und 
flashst es mit dem nano. Vor einige Zeit habe ich das selber mal 
probiert und wenn ich mich recht erinnere ging das sogar.
In der boards.txt der verschiedenen Tinys von oben nimmtst du einen 
Abschnitt als Vorlage und passt die Paras an, dort kannst du auch die 
FUSE Werte einstellen. Danach schaust du in den Ordner variants und 
nimmst wieder ein pins_arduino.h als Vorlage entspr. Ordner erstellen 
tin13 und dann passt du das an, ist ja selbsterklärend.
Dann kannst du von der IDE aus per nano flashen, darfst aber die 
Arduino-Befehle nicht nutzen, ich hatte damals ähnliche Probleme.

Ansonsten nimmst du halt den avr-gcc von Hand jagst das c-File durch den 
Compiler rufts dieses Object-Tool auf und flashst mit avrdude über den 
nano. So mache ich es inzwischen weil es schneller geht und evt. mit 
obiger Methode doch wieder Fehler gibt wo man dann nicht weiss wie die 
Arduino-IDE da dazwischenfunkt.

Der Tiny13 ist so primitiv, da brauchst du keine Arduinolib 
drübergestülpt,
schreib dir ein paar Macros für die Ports, Register,.. die du brauchst 
(meist braucht man sowieso nicht alles) dann ist das ganze übersichtlich 
und wenn der Compiler meckert weisst du genau wo es hackt.

von marcus (Gast)


Lesenswert?

>Ich würde einfach 'natives' C verwenden, das geht auch aus der
>Arduino-IDE heraus.

Wie schafft man es in der Arduino-IDE, dass die Arduino-Libs nicht 
eingebunden werden?

von Stefan S. (sschultewolter)


Lesenswert?

Du musst die Features der Libs einfach NICHT nutzen. Dann werden sie 
auch nicht gebraucht ;)

von marcus (Gast)


Lesenswert?

Und wie wählst Du in der IDE den Attiny13 aus?

von E25 (Gast)


Lesenswert?

marcus schrieb:
> Und wie wählst Du in der IDE den Attiny13 aus?
Dreimal darfst du raten.

von marcus (Gast)


Lesenswert?

>> Und wie wählst Du in der IDE den Attiny13 aus?
> Dreimal darfst du raten.

[ ] Du kennst die Arduino IDE.
[x] Du wolltest etwas ins Internet schreiben.

von LeDran (Gast)


Lesenswert?

Ich füge einen Eintrag in der IDE für den Attiny 13 hinzu? So 
vielleicht!

Daanke für die Hilfe hier.

von LeDran (Gast)


Lesenswert?

Kennt jemand ne gute Seite auf der die Grundlagen für C Programmierung 
von AVRs gut erklärt sind?
Danke.

von Hubert G. (hubertg)


Lesenswert?


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.