Hallo, Ich bin neu hier, möchte in die Mikrocontroller-Welt reinschnuppern. Eletronisches Basiswissen ist vorhanden, mit C-Code habe ich bisher noch keine Erfahrung gesammelt. Ich möchte nun mit hilfe des ATtyni2313 eine Lauflichtsteuerung basteln. Folgende Funktionen werden gewünscht: Lauflicht beginnt nach betätigen eines Tasters und endet nach einer vordefinierten Zeit (z.B. 10 sec.), sollte der Taster noch betätigt sein verlängert sich die Funktion um weitere 10 sec. Über einen Codierschalter (Hex Variante) soll das Lauflicht-Muster veränderbar sein. Für die ansteuerung der LEDs würde ich den B-Port (8 Kanal Lauflicht) vorschlagen, für den Codierschalter würde ich den D-Port nutzen. Mit VB wäre das kein Problem für mich, mit C habe ich bisher noch nichts programmiert, könnt ihr mich dabei unterstützen? Zur Verdeutlichung der gewünschten Funktionen, habe ich eine entsprechende Excel Datei in den Anhang gepackt (ich hoffe das ist ok). Liebe Grüße yo_ga
Hallo, Danke erstmal für die schnelle Antwort. Scheint genau das zu sein was ich mir wünsche. Ich würde gerne die Routine verstehen aber momentan raucht mein Kopf, C-Code ist ganz neu für mich. Wenn ich den Mikrocontroller einschalte, in welcher reihenfolge werden die Routinen abgearbeitet, läuft das alles parallel? Was für ein Vorteil ergibt sich, wenn die Tabelle in den Flash geladen wird. Nach dem einschalten/aufwachen, wird das zuletzt gewählte LED-Muster wiedergegeben oder welches? Eine Tastenentprellung benötige ich eigentlich nicht, bei mir soll das Lauflicht über den MP3_soundmodul MSM2 (ELV) gesteuert werden, d.h. wenn hier eine MP3 abgespielt wird (teilweise sehr kurze Stücke < 10sec.) dann soll das Lauflicht arbeiten, mind. 10 sec max. bis ende des MP3. dafür würde ich das "Xreset" Signal dieser Schaltung abgreifen. Solange ein Mp3 File abgespielt wird habe ich am "Xreset" 3,3V sonst 0 V Die LEDs möchte ich gerne direkt an den Ausgangsports des Mikrocontrollers anschließen, habe irgendwo gelesen das dieser 20mA liefert, ist das richtig? OK, muss mich jetzt hinlegen. Vorab schon mal vielen Dank für die Antworten.
Yos Garcia schrieb: > ich mir wünsche. Ich würde gerne die Routine verstehen aber momentan > raucht mein Kopf, C-Code ist ganz neu für mich. Dann besorg dir als erstes ein C-Buch. Ohne systematische Führung durch die Sprache bist du, so wie viele andere, verloren. > Wenn ich den Mikrocontroller einschalte, in welcher reihenfolge werden > die Routinen abgearbeitet, ein C Programm beginnt immer bei der Funktion, die main() heißt. > läuft das alles parallel? Nein. > Was für ein Vorteil > ergibt sich, wenn die Tabelle in den Flash geladen wird. Speicherersparnis im SRAM. Aber allen Ernstes: Das ist schon etwas für Fortgeschrittenere (genauso wie dein Projekt). Am Anfang solltest du all diese Feinheiten ignorieren und erst mal zusehen, dass der Wagen ins rollen kommt. Formel 1 fahren kommt später. Erst mal brauchst du Grundkenntnisse in C. Ohne geht gar nichts, wenn du C machen willst. Und dein Projekt mit MP3 und dergleichen solltest du auch erst mal zur Seite legen. Los geht es mit ein paar LED an einem Port, die erst mal zum Leuchten gebracht werden wollen. AVR-GCC-Tutorial
Hallo, ich bin es wieder. Das mit dem Buch ist eine gute Idee, werde mir eins als Sommerlektüre besorgen, könnt ihr da was empfehlen? Im Moment geht es mir allerdings darum dieses Lauflicht zu verwirklichen. Ursprünglich hatte ich vor einen Dezimalzähler zu verwenden, doch hier muss man sich von vorne herein auf ein Lauflichtmuster festlegen, welches so ohne weiteres nicht verändert werden kann. Der Code von "Peda" erfüllt zu > 90% genau meine Anforderungen, gerne würde ich damit etwas herum experimentieren. Wie kriege ich es in AVR-Studio 5.1 so zum laufen, das ich die Funktionen simulieren kann? Wenn ich die Dateien lade steht mir kein Simulationsbutton zur Verfügung, erst wenn ich ein Projekt erstelle sind die Schaltflächen vorhanden, aber irgendwie krieg ich das nicht richtig zum laufen. Könnt ihr mir etwas "Starthilfe" geben? Liebe Grüße yo_ga
> ich mir wünsche. Ich würde gerne die Routine verstehen aber momentan > raucht mein Kopf, C-Code ist ganz neu für mich. lern Assembly XD
Also, wie gesagt musste ich in AVR-Studio ein Projekt anlegen um das ganze simulieren zu können, dadurch wurde eine zusätzliche yo_ga.c Datei generiert mit folgendem Inhalt:
1 | /*
|
2 | * yo_ga.c
|
3 | *
|
4 | * Created: 21.03.2012 21:56:59
|
5 | * Author: yo_ga
|
6 | */
|
7 | |
8 | #include <avr/io.h> |
9 | |
10 | int main(void) |
11 | {
|
12 | while(1) |
13 | {
|
14 | //TODO:: Please write your application code
|
15 | }
|
16 | }
|
Wenn ich die Simulation starte und mir die I/O Ports anschaue, dann sehe ich aber keine Änderungen, eigentlich hatte ich hier das Laufmuster erwartet, auch der „Cycle Counter“ des Prozessors zählt nicht hoch, wenn ich aber auf Pause drücke zeigt mir der „Cycle Counter“ einige Millionen Durchläufe an, ergo muss im Hintergrund irgendetwas gelaufen sein. Kann es sein, dass der Simulator des AVR-Studios während der Abarbeitung der Routine die Änderungen an den Ausgangsports nicht anzeigt? @ Peda Ich habe mich mit deinem Code etwas beschäftigt, wenn ich es richtig sehe werden die LEDs an PD0…7 und der Taster an PB0 angeschlossen, richtig? In deiner Beschreibung gibst du drei Modi an: Aktiv, Idle und Power-Down Aktiv und Power-Down sind klar aber wann tritt Idle ein? Ist es nicht so, dass nach dem Einschalten das ausgewählte Pattern bis zum ausschalten in eins durchläuft? Für meine Zwecke benötige ich folgende Modifizierungen: Ein-/Ausschalten und Wechsel des Musters wie bereits von dir vorgesehen über eine Taste, allerdings benötige ich solange der Mikroprozessor aktiv ist einen High-Pegel an irgend einen Port, beim Power-Down einen Low-Pegel. Des weiteren soll das Lauflicht nur dann arbeiten solange an einem (Input-) Port ein High-Pegel anliegt, wechselt das Signal auf Low, soll das Lauflicht für eine einstellbare Zeit noch weiterlaufen und dann anhalten (alle LEDs aus), was dann Idle wäre. Da meine C Kenntnisse noch recht bescheiden sind, wäre ich für jegliche Unterstützung sehr dankbar. Liebe Grüße yo_ga
...hab zwar gar keine Ahnung von AVR, aber als Entwickler der mit C und anderen Sprachen Erfahrung hat, würde ich mal vermuten, dass Du einfach auf "Run" geklickt hast und irgendwann auf Pause. In anderen IDE's/Sprachen/Debuggern ist es so, dass man, wenn man jeden einzelnen Schritt nachverfolgen will, einen Breakpoint setzen muss, wo er anhalten soll. Ansonsten führt er einfach die Loop aus und du siehst erst was wenn das Programm beendet ist.. (oder anhält: Pause) Außerdem ist das ne Endless Loop die deine CPU ohne sowas wie nen sleep() call (kA ob es das in AVR gibt) so dauer-auslasten sollte, das es auch sein kann dass du deswegen keine Laufzeit-Infos bekommst. Schreib mal ne primitive Rechenoperation rein. int i = 0; while (true) { i++; } Ganz easy. Was passiert dann? Such mal sowas wie nen sleep() wenn es das gibt, mach mel nen sleep() mit 20ms pro Loop-Interatiom. Außerdem: kA ob es bei AVR sowas wie "Debug Sessions" gibt. Aber vl. siehst Du einfach nix, weil Du das Programm nicht im Debug-Modus gestartet hast... Nur mal so, weil grad keiner Antwortet ;) Vl. hilfts ja..
Äh ja, wenn es sowas wie Breakpoints/Haltepunkte gibt, setrzt einen auf die Zeile wo i++; steht. Versuch das Programm im Debug-Modus zu starten. Dann sollte er dahin springen und anhalten. Dann einfach auf "Next Step" oder sowas klicen. Sollte es als Button geben... kA ob AVR sowas hat... ;)
Oh schau mal, ich glaube das trifft auch auf Deinen Fall zu: Beitrag "C-Code mit AVR-Studio-Simulator debuggen möglich?"
Und als Buchempfehlungen: - http://www.amazon.de/AVR-Mikrocontroller-programmieren-Selbstbauprojekte-ATtiny13-ATmega32/dp/3645650199/ref=sr_1_22?s=books&ie=UTF8&qid=1332378624&sr=1-22 - http://www.amazon.de/C-Programmieren-Anfang-Helmut-Erlenk%C3%B6tter/dp/3499600749/ref=pd_cp_b_1 Ich glaube Du brauchst beide. Ein reines C-Buch hilft Dir sicher nicht. Denn da steht nix über AVR. AVR ist sicher ein wenig anders, sonst gäb's auch keinen speziellen AVR GCC wie ich grade gelesen habe. Das C-Buch ist dann eher für die Hintergründe und das AVR-Buch für die Praxis. BTW: Schau mal beim lokalen CCC in Deiner Umgebung vorbei. Dort findest Du vl. ein paar Leute die mal was mit AVR gemacht haben und die Dir persönlich vl. Starthilfe geben können...
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.