Forum: Mikrocontroller und Digitale Elektronik Programmieren von Attiny85


von Thomas I. (mittlig1977)


Lesenswert?

Hallo
dieser code wurde für einen attiny13 geschrieben
Ich habe ihn auf einen attiny85 aufgespielt
Leider funktioniert die Schaltung nicht?/*
 * Copyright (c) 2016 Divadlo fyziky UDiF (www.udif.cz)
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following
 * conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 */

#include <avr/sleep.h>
#include <util/delay_basic.h>
#include <avr/eeprom.h>

const uint8_t buttons[4] = {
  0b00001010, 0b00000110, 0b00000011, 0b00010010
};
const uint8_t tones[4] = {
  239, 179, 143, 119
};
uint8_t lastKey;
uint8_t lvl = 0;
uint8_t maxLvl;
// uint32_t ctx; // too big
uint16_t ctx;
uint16_t seed;
volatile uint8_t nrot = 8;
volatile uint16_t time;

void sleepNow() {
  PORTB = 0b00000000; // disable all pull-up resistors
  cli(); // disable all interrupts
  WDTCR = 0; // turn off the Watchdog timer
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_enable();
  sleep_cpu();
}

void play(uint8_t i, uint16_t t = 45000) {
  PORTB = 0b00000000;  // set all button pins low or disable pull-up 
resistors
  DDRB = buttons[i]; // set speaker and #i button pin as output
  OCR0A = tones[i];
  OCR0B = tones[i] >> 1;
  TCCR0B = (1 << WGM02) | (1 << CS01); // prescaler /8
  _delay_loop_2(t);
  TCCR0B = 0b00000000; // no clock source (Timer0 stopped)
  DDRB = 0b00000000;
  PORTB = 0b00011101;
}

void gameOver() {
  for (uint8_t i = 0; i < 4; i++) {
    play(3 - i, 25000);
  }
  if (lvl > maxLvl) {
    eeprom_write_byte((uint8_t*) 0, ~lvl); // write best score
    eeprom_write_byte((uint8_t*) 1, (seed >> 8)); // write high byte of 
seed
    eeprom_write_byte((uint8_t*) 2, (seed & 0b11111111)); // write low 
byte of seed
    //eeprom_write_word((uint16_t*) 1, seed); // write seed
    for (uint8_t i = 0; i < 3; i++) { // play best score melody
      levelUp();
    }
  }
  sleepNow();
}

void levelUp() {
  for (uint8_t i = 0; i < 4; i++) {
    play(i, 25000);
  }
}

uint8_t simple_random4() {
  // ctx = ctx * 1103515245 + 12345; // too big for ATtiny13
  ctx = 2053 * ctx + 13849;
  uint8_t temp = ctx ^ (ctx >> 8); // XOR two bytes
  temp ^= (temp >> 4); // XOR two nibbles
  return (temp ^ (temp >> 2)) & 0b00000011; // XOR two pairs of bits and 
return remainder after division by 4
}

ISR(WDT_vect) {
  time++; // increase each 16 ms
  if (nrot) { // random seed generation
    nrot--;
    seed = (seed << 1) ^ TCNT0;
  }
}

void resetCtx() {
  ctx = seed;
}

int main(void) {
  PORTB = 0b00011101; // enable pull-up resistors on 4 game buttons

  ADCSRA |= (1 << ADEN); // enable ADC
  ADCSRA |= (1 << ADSC); // start the conversion on unconnected ADC0 
(ADMUX = 0b00000000 by default)
  // ADCSRA = (1 << ADEN) | (1 << ADSC); // enable ADC and start the 
conversion on unconnected ADC0 (ADMUX = 0b00000000 by default)
  while (ADCSRA & (1 << ADSC)); // ADSC is cleared when the conversion 
finishes
  seed = ADCL; // set seed to lower ADC byte
  ADCSRA = 0b00000000; // turn off ADC

  WDTCR = (1 << WDCE); // start watchdog timer with 16ms prescaller 
(interrupt mode)
  sei(); // global interrupt enable
  TCCR0B = (1 << CS00); // Timer0 in normal mode (no prescaler)

  while (nrot); // repeat for fist 8 WDT interrupts to shuffle the seed

  TCCR0A = (1 << COM0B1) | (0 << COM0B0) | (0 << WGM01)  | (1 << WGM00); 
// set Timer0 to phase correct PWM

  maxLvl = ~eeprom_read_byte((uint8_t*) 0); // read best score from 
eeprom

  switch (PINB & 0b00011101) {
    case 0b00010101: // red button is pressed during reset
      eeprom_write_byte((uint8_t*) 0, 255); // reset best score
      maxLvl = 0;
      break;
    case 0b00001101: // green button is pressed during reset
      lvl = 255; // play random tones in an infinite loop
      break;
    case 0b00011001: // orange button is pressed during reset
      lvl = maxLvl; // start from max level and load seed from eeprom 
(no break here)
    case 0b00011100: // yellow button is pressed during reset
      seed = (((uint16_t) eeprom_read_byte((uint8_t*) 1)) << 8) | 
eeprom_read_byte((uint8_t*) 2);  // load seed from eeprom but start from 
first level
      break;
  }

  while (1) { // main loop
    resetCtx();
    for (uint8_t cnt = 0; cnt <= lvl; cnt++) { // never ends if lvl == 
255
      _delay_loop_2(4400 + 489088 / (8 + lvl));
      play(simple_random4());
    }
    time = 0;
    lastKey = 5;
    resetCtx();
    for (uint8_t cnt = 0; cnt <= lvl; cnt++) {
      bool pressed = false;
      while (!pressed) {
        for (uint8_t i = 0; i < 4; i++) {
          if (!(PINB & buttons[i] & 0b00011101)) {
            if (time > 1 || i != lastKey) {
              play(i);
              pressed = true;
              uint8_t correct = simple_random4();
              if (i != correct) {
                for (uint8_t j = 0; j < 3; j++) {
                  _delay_loop_2(10000);
                  play(correct, 20000);
                }
                _delay_loop_2(65536);
                gameOver();
              }
              time = 0;
              lastKey = i;
              break;
            }
            time = 0;
          }
        }
        if (time > 4000) {
          sleepNow();
        }
      }
    }
    _delay_loop_2(65536);
    if (lvl < 254) {
      lvl++;
      levelUp(); // animation for completed level
      _delay_loop_2(45000);
    }
    else { // special animation for highest allowable (255th) level
      levelUp();
      gameOver(); // then turn off
    }
  }
}

von c-hater (Gast)


Lesenswert?

Thomas I. schrieb:

> dieser code wurde für einen attiny13 geschrieben
> Ich habe ihn auf einen attiny85 aufgespielt
> Leider funktioniert die Schaltung nicht?

Was erwartest du? Ein Tiny85 unterscheidet sich nunmal in vielen Details 
von einem Tiny13. Wäre es anders, würde er Tiny13 heißen, das sollte 
doch wohl klar sein, oder?

Also: auf Binärlevel (sprich: Hexfile) ist die Chance, dass irgendwas 
läuft, recht gering. Es ist also mindestens neu kompilieren für das 
richtige Target (also Tiny85) nötig. Mit ein wenig Glück stößt schon der 
Compiler dabei auf einige Unterschiede. Da muss dann auf jeden Fall der 
Code angepasst werden.

Leider kann aber der Compiler nicht alle Unterschiede finden. Da hilft 
dann nur Vergleichen der Datenblätter, um die funktionalen Unterschiede 
zu finden. Auch für diese muss dann natürlich der Code entsprechend 
angepasst werden.

Wenn du dich dazu nicht in der Lage siehst, ist die einfachste (und nahe 
liegende) Lösung: Kauf' einen Tiny13 und gut isses.

von Thomas I. (mittlig1977)


Lesenswert?

Hi,
Ok, das naheliegenste wäre es schon einen attiny13 zu nehmen
Leider habe ich da schon beim Kompilieren Probleme
Da kommt die Fehlermeldung das der Sketch zu gross ist
Ich muss sagen das ich ein absoluter noob bin in Sachen Programmieren
hatte halt gehofft das mir jemand hilft den Code anzupassen

von Christian M. (christian_m280)


Lesenswert?

Thomas I. schrieb:
> Sketch

Na das ist für Arduino, die gibt es nicht in ATtiny!

Gruss Chregu

von c-hater (Gast)


Lesenswert?

Thomas I. schrieb:

> Leider habe ich da schon beim Kompilieren Probleme
> Da kommt die Fehlermeldung das der Sketch zu gross ist

Sketch!? Schmeiß den Arduino-Dreck weg und benutze was Richtiges zum 
Compilieren. Z.B. das Microchip-Studio.

von Thomas I. (mittlig1977)


Lesenswert?

Sry wie meinst du das?
Attiny kann auch mit der Arduino Umgebung programmieren

Beitrag #7015592 wurde von einem Moderator gelöscht.
von c-hater (Gast)


Lesenswert?

Thomas I. schrieb:

> Sry wie meinst du das?
> Attiny kann auch mit der Arduino Umgebung programmieren

Natürlich. Aber der TO kann's halt nicht. Zumindest nicht ohne 
Bootloader. Und das dürfte sein, was hier beim Target Attiny13 so 
stört...

Beim Tiny85 ginge es auch mit Bootloader. Aber der Code muss halt 
angepasst werden. Auch das kann der TO wieder nicht. Und die Arduino-IDE 
gibt ihm in der Standard-Konfiguration auch praktisch keine 
Hilfestellung bei diesem Problem.

von Thomas I. (mittlig1977)


Lesenswert?

Ich Poste mal, vielleicht zum besseren Verständnis, das Projekt das ich 
nachbasteln will
https://hackaday.io/project/18952-simon-game-with-attiny13

von Stefan F. (Gast)


Lesenswert?

Thomas I. schrieb:
> Attiny kann auch mit der Arduino Umgebung programmieren

Wie hast du das gemacht? Der ATtiny Core unterstützt den ATtiny13 nicht.

von Schlaumaier (Gast)


Lesenswert?

Christian M. schrieb:
> Na das ist für Arduino, die gibt es nicht in ATtiny!

Blödsinn.

Man kann viele Chips inkl. Atiny's mit der Arduino-Umgebung 
programmieren.

Ich mache das mit den Atiny-85 dauernd.

ABER !!! Man muss den Chip-Treiber installieren.

Wobei wir bei Frage Nr. Uno sind. ;)

Hast du den Chip-Treiber für ein Atiny-13 installiert. Wenn nicht, hier 
eine Anleitung mal eben gegoogelt.

https://42project.net/den-attiny13a-pu-mittels-usb-tiny-isp-und-der-arduino-ide-programmieren/

Es gibt ähnliche Anleitungen auch für den Atiny-85 und jede Menge andere 
Chips. Ist alles die gleiche Vorgehensweise. Einzige Unterschied.

In dieser Auflistung die URL:
https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
hinterlegen und speichern.

Da muss dann der passende Link zum Chiptreiber herein.

Und da kann man theoretisch die Liste unbegrenzt erweitern.

c-hater schrieb:
> Sketch!? Schmeiß den Arduino-Dreck weg und benutze was Richtiges zum
> Compilieren. Z.B. das Microchip-Studio.

WIESO. Nur weil die ein normalen C-Code Sketch nennen. Mir ist der Name 
völlig egal. Hauptsache der Compiler macht ein brauchbaren Code daraus. 
Es wird schon ein Grund haben wieso das Entwickelt wurde und so beliebt 
ist.

von Thomas I. (mittlig1977)


Lesenswert?

Ja, ich habe microcore installiert, so wie in der Anleitung angegeben
Der Sketch wird auch mit attiny13 richtig kompiliert
Leider kommt dort die Fehlermeldung das der Sketch zu gross ist
Haben ein paar Leute bei hackaday auch bemängelt
Attinys habe ich schon viele programmiert über die Arduino Umgebung
Von daher……

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Thomas I. schrieb:
> #include <avr/sleep.h>
> #include <util/delay_basic.h>
> #include <avr/eeprom.h>

#include <avr/io.h>
#include <avr/interrupt.h>

fehlen.

> void play(uint8_t i, uint16_t t = 45000) {

WTF.

>       bool pressed = false;

Datentyp bool kommt auch nicht aus dem Nichts.

von Stefan F. (Gast)


Lesenswert?

Der Knackpunkt ist vielleicht, dass dein Compiler zu neu ist. Die 
älteren Versionen vom avr-gcc erzeugen manchmal kleineren Code.

von Stefan F. (Gast)


Lesenswert?

Tim T. schrieb:
> WTF.
> Datentyp bool kommt auch nicht aus dem Nichts.

Arduino ist C++ und fügt einige Includes automatisch ein. Da ist auch 
der bool Typ mit drin.

von Stefan F. (Gast)


Lesenswert?

Thomas,
an deiner Stelle würde ich alle Register bitweise miteinander 
vergleichen, um den Quelltext anzupassen.

Oder du compilierst es mit einem älteren Compiler ohne Arduino. Aber 
dann musst du die wenige Arduino spezifischen Stellen umschreiben (z.B. 
bool). Infos dazu: http://stefanfrings.de/avr_tools/index.html

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Stefan ⛄ F. schrieb:
> Tim T. schrieb:
>> WTF.
>> Datentyp bool kommt auch nicht aus dem Nichts.
>
> Arduino ist C++ und fügt einige Includes automatisch ein. Da ist auch
> der bool Typ mit drin.

Wo siehst du bei dem Source Anzeichen für C++?

von Stefan F. (Gast)


Lesenswert?

Tim T. schrieb:
> Wo siehst du bei dem Source Anzeichen für C++?

In der "WTF" Zeile.

von Georg M. (g_m)


Lesenswert?

Will it also work with the attiny85?
This hardware design works with ATtiny85 which is almost pin compatible. 
But some software changes have to be made because register names of 
those chips differ a little.

Can I make these with attiny 85?
Yes, you can, but some registers in ATtiny85 have different names and it 
would need some modifications which require knowledge of its datasheet.

https://www.youtube.com/watch?v=BJ-PwkigoB4

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Stefan ⛄ F. schrieb:
> Tim T. schrieb:
>> Wo siehst du bei dem Source Anzeichen für C++?
>
> In der "WTF" Zeile.

Sieht eher nach jemandem aus der C++ Halbwissen versucht in einem 
C-Quelltext unterzubringen. Ansonsten ist der Source auch eine Zumutung 
und man sollte den komplett überarbeiten. Wiedereinmal ein Beispiel 
dafür was Arduino bei den Leuten anrichtet.

von Schlaumaier (Gast)


Lesenswert?

Thomas I. schrieb:
> Leider kommt dort die Fehlermeldung das der Sketch zu gross ist
> Haben ein paar Leute bei hackaday auch bemängelt

Du kannst versuchen die Libs zu kürzen. K.A. ob das bei den Libs möglich 
ist.

Viele Libs sind für mehre Dinge geschrieben. Da wird dann oft mit 
Variablen die passenden Eigenschaften modifiziert.

Wenn man genau weiß was man braucht kann man die überflüssigen Code 
entfernen. Das bringt einiges an Bytes. Einfach die Lib vorher kopieren 
und umbenennen und dann die umbenannte einbinden.

Man kann auch versuchen den Code zu analysieren. Viele Coder (inkl. ich) 
sind bei deklarieren von Array etc. immer sehr großzügig. Hat man sich 
halt durch die Speicherplatzverschwendung bei Windows so angewöhnt. 
Vielleicht hat der Code auch irgendwelche "Angewohnheiten" dieser Art.

Ansonsten hilft nur sich ein CHIP mit mehr Speicher zu suchen. Da gibt 
es sicher was.

Über wie viele Bytes reden wir hier eigentlich.  Der Compiler sagt dir 
doch am ende aufs Byte genau wie groß der Code und wie viel Platz der 
Chip hat, bzw. nicht hat.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Hab das Ding mal eben im AVR Studio 4.19 auf C angepasst und es ist mit 
1104 Byte Flash rausgekommen. Sind zwar noch 2 Warnings drin wegen der 
signedness der delay aber das ist erstmal egal. Sehe aber genug 
Möglichkeiten noch ein paar Byte einzusparen um den Code auch in 1 kB 
Flash zu bekommen.

von Thomas I. (mittlig1977)


Lesenswert?

Omg,Register anpassen
Wüsste ich was das ist :-)

von Thomas I. (mittlig1977)


Lesenswert?

Habe deshalb auch einen attiny85 verwendet, der hat ja mehr Speicher

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Thomas I. schrieb:
> Habe deshalb auch einen attiny85 verwendet, der hat ja mehr Speicher

Der Speicher ist nicht das Problem, der grottige Quelltext ist das 
Problem.

von Stefan F. (Gast)


Lesenswert?

Der Autor des Projektes bietet auf seiner Homepage neben dem Quelltext 
auch die *.hex Datei an. Nimm die doch einfach.

von Thomas I. (mittlig1977)


Lesenswert?

Habe letztens noch den Ersteller des Codes kontaktiert und beim ihm 
nachgefragt ob er nicht auch einen angepassten Code für attiny 85 posten 
will
Leider nicht…

von Thomas I. (mittlig1977)


Lesenswert?

Die hex Datei müsste ich sicher auch anpassen für einen attiny 85
Oder?

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Thomas I. schrieb:
> Habe letztens noch den Ersteller des Codes kontaktiert und beim ihm
> nachgefragt ob er nicht auch einen angepassten Code für attiny 85 posten
> will
> Leider nicht…

Das Ding ist in 15 Minuten komplett auf einen Tiny25/45/85 angepasst, 
nur sollte man dabei schon minimale Ahnung haben was man da macht.

von Stefan F. (Gast)


Lesenswert?

Wenn du programmieren möchtest, solltest du doch schon selbst mit der 
Thematik befassen. Von nichts kommt nichts.

Wenn es dir jedoch nur ums Basteln ging, dann nimm die hex Datei vom 
Autor. Die ist übrigens zufälligerweise exakt die maximalen 1024 Bytes 
groß.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Thomas I. schrieb:
> Die hex Datei müsste ich sicher auch anpassen für einen attiny 85
> Oder?

Die hex Datei ist was hinterher rauskommt und in den Tiny geladen wird, 
also ja, die wird durch anpassen des Quelltextes und kompilieren 
natürlich angepasst.
Also bei dir sehe ich zwei Möglichkeiten:
1. hex vom Autor aufspielen und fertig.
2. Anderes Hobby suchen.

von Thomas I. (mittlig1977)


Lesenswert?

Ja genau, minimale Ahnung
Habe ich keine

von Thomas I. (mittlig1977)


Lesenswert?

Ein anderes Hobby suche ich mir deswegen nicht
Im eigentlichen Sinn ist programmieren auch gar nicht mein Hobby
weil das auch gar nicht mache oder gelernt habe
Darum verwende ich Arduino, wie viele andere auch
An diesem Projekt habe ich vorallem Spass daran die Platine selber zu 
ätzen und das ganze dann zu verlöten

: Bearbeitet durch User
von STK500-Besitzer (Gast)


Lesenswert?

Thomas I. schrieb:
> An diesem Projekt habe ich vorallem Spass daran die Platine selber zu
> ätzen und das ganze dann zu verlöten

Dann bastel lieber mit Logik-Bausteinen.
Da braucht man nicht programmieren.

von Stefan F. (Gast)


Lesenswert?

Wo ist denn jetzt das Problem, die *.hex Datei in den ATtiny13 zu laden?

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Stefan ⛄ F. schrieb:
> Wo ist denn jetzt das Problem, die *.hex Datei in den ATtiny13 zu laden?

Zwischen den Ohren.

von Schlaumaier (Gast)


Lesenswert?

Thomas I. schrieb:
> Ein anderes Hobby suche ich mir deswegen nicht
> Im eigentlichen Sinn ist programmieren auch gar nicht mein Hobby
> weil das auch gar nicht mache oder gelernt habe
> Darum verwende ich Arduino, wie viele andere auch

Es gibt für dich nur 3 Möglichkeiten.

1. Anderes Hobby suchen. Ok willst du nicht.

2. Etwas nutzen OHNE Ahnung und hoffen das es klappt. Mag funktionieren 
ist aber gefährlich wenn man so abhängig ist (wie man in der Politik 
gerade sieht ;)

3. Den Code nehmen, lernen ihn zu verstehen. Dazu ist (wie auch in der 
Politik) am Anfang viel Zeit, etwas Geld und viel Nerven erforderlich. 
ABER dann kann man so ein Code nehmen o. es auch lassen und gleich was 
eigenes machen.

Und die Arduinos sind genau DAFÜR erfunden worden. Diese Studios wo hier 
alle reden gab es schon vorher. Bloß sie haben nicht "die breite Masse" 
motiviert, wozu ich auch mich zähle.

Aber wie sagte schon Susi bei Herzblatt :" Nimmst du Nr 1, oder Nr 2 
oder entscheidest du dich doch für Nr. 3"  o.s.ä. ;)

von HildeK (Gast)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> Tim T. schrieb:
>> Wo siehst du bei dem Source Anzeichen für C++?
>
> In der "WTF" Zeile.

Ist ja kein Problem, die Aufrufe von Play mit beiden Parametern 
anzugeben, in den 'WTF'-Fällen eben mit '45000'.

Ich habe den Originalcode aus dem Link versucht zu Kompilieren mit 
meinem (alten) WinAVR. 125% für den Tiny13 Flashbelegung. Ich hätte ja 
den vom TO genommen, wenn er es als File angehängt hätte; so muss man 
jede Menge Kommentarzeilen korrigieren.

Mit dem Tiny25/45/85 geht es dann natürlich, aber man muss sowieso ein 
paar Dinge anpassen:
- wenn schon keine Prototypen vorhanden sind: die Funktion 'levelUp' 
muss vor 'gameOver' im Code platziert sein
- #include <avr/interrupt.h> muss drin sein, sonst gibt es kein sei() 
und cli()
- _delay_loop_2(65536): die 65536 sind zu groß; es geht nur uint16_t als 
Argument
- bool und false/true ersetzten oder nachdefinieren
- WDTIE heißt beim Tinyx5 WDIE

Ob die Funktion damit gegeben wäre, habe ich nicht geprüft; für den 
Tinyx5 jedenfalls kompiliert sie fehlerfrei.

von c-hater (Gast)


Lesenswert?

Schlaumaier schrieb:

> Diese Studios wo hier
> alle reden gab es schon vorher. Bloß sie haben nicht "die breite Masse"
> motiviert

Und das war auch gut so. Das hat den absolut untauglichen Crap 
vorbeugend ausgeschlossen.

Was über blieb, war zwar auch längst nicht immer als "Programmierer" zu 
bezeichnen, aber immerhin nachweislich daran interessiert, irgendwas in 
diesem Bereich zu lernen.

von Schlaumaier (Gast)


Lesenswert?

c-hater schrieb:
> Was über blieb, war zwar auch längst nicht immer als "Programmierer" zu
> bezeichnen, aber immerhin nachweislich daran interessiert, irgendwas in
> diesem Bereich zu lernen.

hihi.

Das Problem war das die ein Nischenprodukt waren ohne breit gestreute 
Werbung. Weshalb ich die nie kennengelernt habe. Sonst hätte ich mir die 
mit Sicherheit mal angesehen.

Ich bin erst wieder durch die Arduino-Teile zur Elektronik gekommen. Den 
letzten "Chip" für denn ich vor einen Arduino den Sockel eingelötet habe 
war ein 7400.

Fakt ist man hat auch viele Motivierte Leute (wie mich) ausgeschlossen. 
Und ich kann Programmieren seit ich mein ZX-81 bekommen habe. ;)

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Schlaumaier schrieb:
>
> Das Problem war das die ein Nischenprodukt waren ohne breit gestreute
> Werbung. Weshalb ich die nie kennengelernt habe. Sonst hätte ich mir die
> mit Sicherheit mal angesehen.
>
> Ich bin erst wieder durch die Arduino-Teile zur Elektronik gekommen. Den
> letzten "Chip" für denn ich vor einen Arduino den Sockel eingelötet habe
> war ein 7400.
>
> Fakt ist man hat auch viele Motivierte Leute (wie mich) ausgeschlossen.
> Und ich kann Programmieren seit ich mein ZX-81 bekommen habe. ;)

Und noch ein Grund die Arduinos nicht zu mögen...

von Thomas I. (mittlig1977)


Lesenswert?

Vielen Dank für den Code
Die Schaltung funktioniert jetzt

von Roland F. (rhf)


Lesenswert?

Hallo,
Schlaumaier schrieb:
> Fakt ist man hat auch viele Motivierte Leute (wie mich) ausgeschlossen.

Du hast dich selber ausgeschlossen!

In der letzten Zeit hast du mehrfach erwähnt was du schon alles 
programmiert hast.
Und dann schaffst du es nicht dich in eine Entwicklungsumgebung 
einzuarbeiten, die nun wirklich nicht schwer zu verstehen ist?
Das ist völlig unverständlich, zumal man im Internet überall 
Informationen dazu finden kann wie man mit Atmel-Studio Software für die 
AVR-Controller erstellt.

rhf

von Schlaumaier (Gast)


Lesenswert?

Roland F. schrieb:
> Und dann schaffst du es nicht dich in eine Entwicklungsumgebung
> einzuarbeiten, die nun wirklich nicht schwer zu verstehen ist?
> Das ist völlig unverständlich, zumal man im Internet überall
> Informationen dazu finden kann wie man mit Atmel-Studio Software für die
> AVR-Controller erstellt.

Du hast meine Aussage nicht verstanden.

Ich habe von den System nicht einmal gewusst. Ich bin erst durch eine 
Zeitschrift über den Raspberry darüber informiert worden. Und habe mich 
DANN erst schlau gemacht. Und DANN habe ich erst wieder mit Elektronik 
angefangen.

Das erste Buch was ich mir gekauft habe, hatte nicht einmal was mit 
Arduinos zu tun, sondern war "Coole Projekte mit den Raspberry pi". Da 
ich anfangs geplante hatte auf/mit der Beere zu entwickeln. Dann kam ich 
zu den wesentlich preiswerten Arduinos, habe mir 1 Starter-Paket mit UNO 
und danach 5 Clone-Nano für a 2 Euro in China gekauft. So fing es an.

Klar wusste ich das es jede Menge programmierbare Chips gab, aber ich 
habe mich halt vorher nicht dafür interessiert. Besonders nicht, weil 
ich Programmer bei Conrad + Co. für mehre 100 Euro gesehen habe. Das war 
mir der Spass einfach nicht wert.

Und ich denke das irgendwie sehr viele Leute eine sehr ähnliche 
Vorgeschichte haben.

von c-hater (Gast)


Lesenswert?

Schlaumaier schrieb:

> Dann kam ich
> zu den wesentlich preiswerten Arduinos, habe mir 1 Starter-Paket mit UNO
> und danach 5 Clone-Nano für a 2 Euro in China gekauft. So fing es an.

Na dann wäre für jeden Normaldenkenden doch die erste Aktion gewesen, 
die Datenblätter der dort verbauten µC zu beschaffen. Und in dem Kontext 
wäre man praktisch unvermeidlich auch auf das Atmel-Studio gestoßen...

Nö, deine Darstellung überzeugt mich absolut nicht.

von Roland F. (rhf)


Lesenswert?

Hallo,
Schlaumaier schrieb:
> Du hast meine Aussage nicht verstanden.

Doch, habe ich.

> Ich habe von den System nicht einmal gewusst.

Und als du es gewusst hast, hast du trotzdem nicht geschafft mit 
Atmel-Studio umzugehen.
Aber es ist nicht zu spät, nur Mut.

rhf

von Schlaumaier (Gast)


Lesenswert?

Roland F. schrieb:
> Und als du es gewusst hast, hast du trotzdem nicht geschafft mit
> Atmel-Studio umzugehen.
> Aber es ist nicht zu spät, nur Mut.

Stimmt. ;) Beides ;)

Allerdings habe ich mir nie das Datenblatt für den Arduino-chip komplett 
!! angesehen. **schämemich**. Man bekommt an jeder Ecke so viel Infos 
dazu das ich es nie wirklich als notwendig erachtet habe.

Im Gegensatz zu lausigen LED's z.b. da bekomme ich LED's an jeder Ecke 
und muss Datenblätter lesen um die Eigenschaften zu erfahren.  Verkehrte 
Welt ;)

Vielleicht wenn ich mal Langeweile habe schaue ich mir das ATMEL-Studio 
an. Ist halt oft ne Frage ob ich Lust habe. Aber sobald das Wort EURO 
irgendwo erscheint, ist das in meinen Gedächtnis Geschichte, das ist 
Fakt.

Kommt häufig vor das ich z.b. hier Beiträge lese und mir dann das 
Produkt anschaue ob es mich interessiert. Und wenn ich es spannend 
finde, wussele ich mich da halt rein. ;) Halt Allgemeinwissen 
verbessern.

von Forist (Gast)


Lesenswert?

Thomas I. schrieb:
> dieser code wurde für einen attiny13 geschrieben

Hast du irgendeinen Plan, was der folgende Hinweis bedeuten könnte?

Wichtige Regeln - erst lesen, dann posten!
...
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

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.