Forum: Mikrocontroller und Digitale Elektronik AVR Studio 4


von Manfred K. (elko1954)


Lesenswert?

Hallo
Ich hatte mir vor längerer Zeit einmal das "Lernpaket Mikrokontroller" 
von Franzis bei pollin angeschafft um Evl.kleine Programme zu erstellen 
und so nicht immer aufwändige Platinen und Schaltungen zu bauen.
Ich bin Modellbauer und wollte einmal einen SOS Blinker Bauen für ein 
Modell-feuerlöschkreuzer.
Ich komme aber mit dem Lernkonzept wie das da beschrieben ist nicht 
klar.
bis Punkt4.4 "Ein Blinkprogramm" ist die sache mit dem Assembler 
Schreiben
noch zu verstehen.
Aber ab 4.5 Unterprogramme geht bei mir das Licht aus.
Da fängt das ganze völlig neu an und baut überhaupt nicht mehr auf das 
vorhergehende auf. So kann mann als völliger Leie doch nicht 
weiterlernen.
Wie gesagt ich wollte nur einen SOS Blinkgenerator in einem ATINI13 
unterbringen und für mein Modellbot verwenden.
Hat schon ein Kollege mal so ein Programm geschrieben ? und kann mir das 
zur Ferfügung stellen? oder wo bekomme ich bessere erklärungen zum 
Assembler schreiben für Anfänger.
MfG elko

: Verschoben durch User
von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Ich weis jetzt nicht genau, welches Paket du meinst, da ich in diesen 
Paketen nicht ganz firm bin. Aber so etwas zu bauen ist ehrlich gesagt 
nicht die hohe Kunst. Gib einfach mal ein paar mehr Infos. Mich würde 
interessieren, was denn genau das SOS-Blinken ausführen soll, ich nehm 
an, das sind kleine LEDS, aber vielleicht hast du noch eine genauere 
Info darüber.

Hast du schonmal was gelötet? Kannst du einen Attiny oder Atmega mit 
einem hex-File beschreiben? Und willst du wirklich das programmieren 
erlernen, um evtl. weitere und auch größere Projekte umzusetzen oder 
willst du einfach weils gerade mal passt ein paar Lämpchen blinken 
lassen?

Ich würde dir gern helfen, dazu brauch ich eben noch die eine oder 
andere Info, einfach auch um herauszufinden, wohin du möchtest und was 
du bisher kannst.

Hast vielleicht noch einen Link zu dem Paket?


Dennis

von Manfred K. (elko1954)


Lesenswert?

Hallo Denis
Danke für die schnelle Antwort.
Ich habe mich noch gar nicht mit dem programmieren beschäftigt,dachte 
aber auch nicht das das für ein so kleines Projekt so kompliziert ist.
Es soll wirklich nur eine Led ein richtiges SOS blinken.
Ist für dieses Modellboot als Option so vorgegeben.
Mit Elektronik beschäftige ich mich schon ein paar Jahre.
Ich repariere TV und alles was es überhaupt so an elektronik gibt.
auch für unseren modellsportclub Fernsteueranlagen usw.
 nun dachte ich könnte ich einen Haufen Arbeit und vor allen Platz und 
Gewicht sparen und so eine Sonderfunktion mit nem kleinen Attiny13 
erledigen.
  in dem Lernpaket Mikrokontroller von Franzis wird ein Blinkprogramm
Blink1.asm beschrieben und das kann mann mit der mitgelieferten 
programmierplatine LPMIKRO-140707 auch über ein serielles kabel an den 
Rechner anstecken von der mitgelieferten CD das AVR studio 4 
installieren
und dann die Testprogramme laden und auch ausprobieren .Anfänge im 
ASSEMBLER
schreiben aber wie vorher gesagt fehlt mir das Wissen um da weiter 
einzusteigen.

von Rainer V. (rudi994)


Lesenswert?


von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Manfred Kompaß schrieb:
> dachte
> aber auch nicht das das für ein so kleines Projekt so kompliziert ist.

Ist es ehrlich gesagt auch nicht. Nur Assembler ist dafür nicht 
unbedingt die richtige Sprache dafür. Sicher ist es mit Assembler von 
der Seite her gut, dass du genau mitbekommst, was der µC überhaupt 
macht. So lernt man schon sehr viel, was der Controller denn genau macht 
und mit welchen Dingen er so seine Probleme hat. Ist die Frage, ob du 
das überhaupt möchtest. In C wäre deine Anforderung ein paar einfache 
Zeilen Code. Da der Attiny nix weiter sonst machen soll könnte man das 
sogar ganz einfach mit _delay_ms() lösen. Da brauchst du nix zu 
Interrupts wissen.

Wenn du es trotzdem unbedingt in Assembler machen willst vielleicht mal 
ein kleiner Gedankenanstoß.

Du brauchst eine kurze zählscheife und eine lange. Also einfach 
Schleifen, die irgendwelche Variablen runterzählen. Dann reicht es:
Anfang:
 LED an
 lange Zählschleife
 LED aus
 lange Zählschleife
 LED an
 lange Zählschleife
 LED aus
 lange Zählschleife
 LED an
 lange Zählschleife
 LED aus
 kurze Zählschleife
 LED an
 kurze Zählschleife
 LED aus
 kurze Zählschleife
 LED an
 kurze Zählschleife
 LED aus
 kurze Zählschleife
 LED an
 kurze Zählschleife
 LED aus
 kurze Zählschleife
rjmp Anfang


In C:
1
#include <avr/delay.h>
2
3
int main (void)
4
{
5
    DDRB = 0xff;   //Datenrichtung auf Ausgang
6
7
    while(1)
8
    {
9
      For(uint8_t i = 0; i = 3; i++)
10
      {  
11
       PORTB |= (1<<PB1);     //LED einschalten
12
       _delay_ms(1000);       //1000ms warten
13
       PORTB &= ~(1<<PB1);    //LED wieder ausschalten
14
       _delay_ms(1000);       //wieder 1000ms warten
15
      }
16
      For(uint8_t i = 0; i = 3; i++)
17
      {  
18
       PORTB |= (1<<PB1);
19
       _delay_ms(500);
20
       PORTB &= ~(1<<PB1);
21
       _delay_ms(500);
22
      }
23
    }
24
}

Hier wäre die LED jetzt an PB1 angeschlossen. Ich hab den Code jetzt 
nicht getestet, also kann sein, das der eine oder andere kleine 
Schusselfehler drin ist. Wenn der kleine Controller nix anderes machen 
soll, kannst du es so machen. Soll er irgendwann doch mal mehr machen, 
musst du dich doch mal in Interrupts einarbeiten. Aber für den Anfang 
sollte das so reichen. Assembler ist zu lange her, als ich das das 
letzte mal programmiert hab, deswegen hab ich das jetzt nicht so im 
Kopf, mit den Befehlen.


Dennis

: Bearbeitet durch User
von Manfred K. (elko1954)


Lesenswert?

Hallo
Ich möchte mich erstmal für eure Bemühungen bedanken.
Das mit den Schleifen Propiere ich erstmal aus.
und das lernen von C erscheint mir für die sachen doch sinnvoll.
Dazu ist der Link von Rainer wohl die beste Lösung.
Muß mann werst mal üben ,ist ja immer so.
Vielen Dank noch mal.
Ps. ich melde mich wieder

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.