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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.