Forum: Mikrocontroller und Digitale Elektronik RS-Fliplop virtuell im Mega8


von dominik (Gast)


Lesenswert?

Hallo,
ich habe gerade mit euerem AVR-GCC-Tutorial begonnen. Als erstes eigenes 
Programm will ich ein RS-Flipflop "simulieren"
1
#include <stdint.h>
2
#include <avr/io.h>          
3
4
int main (void) {           
5
6
DDRD = (1 << DDD5) | (1 << DDD6) ; //Leds als Ausgang
7
      
8
 
9
while (1) {   
10
11
12
if ( PINC & (1<<PINC2) ) {         //set abfragen
13
 PORTD = (1 << DDD6);              //  Q setzen
14
}
15
16
17
if ( PINC & (1<<PINC3) ) {        //reset abfragen
18
 PORTD &= ~(1<<DDD6);             // Q löschen
19
}
20
21
}             
22
23
   return 0;                 
24
}

leider funktioniert das nicht ganz so wie ich will: Die Led ist immer an 
(zumindest für das menschliche Auge) Oszilloskop habe ich (noch) nicht.
Zum testen benutze ich das ATMEL Evaluations-Board Version 2.0.1 von 
Pollin.
Was mach ich den da falsch?
Währe wirklich nett wenn ihr mir helfen könntet.


Gruß Dominik

von Marcus Woletz (Gast)


Lesenswert?

Hallo Dominik,

nach einem kurzen Blick scheint das Programm in Ordnung zu sein.
Wie hast Du das Programm übersetzt? Wie sind die LEDs angeschlossen? 
(Ich kenne das Testboard nicht)

ciao

Marcus

von FlipFlop (Gast)


Lesenswert?

Hallo,
ich weiß nicht, wie die LED's geschaltet sind, vielleicht sind sie 
extern mit Spannung versorgt und eine "0" am µC lässt die LED leuchten. 
Aber davon mal abgesehen stellen die Abfragen in dem Programm nicht die 
Funktion eines RS-FF dar.

von dominik (Gast)


Angehängte Dateien:

Lesenswert?

vielen Dank für die schnellen Antworten!

@ Marcus Woletz:  das Programm wurde mit "make" übersetzt das makefile 
ist im Anhang und dann mit avrdude -p m8 -b 1200 -P/dev/ttyS0 -c ponyser 
-U flash:w:main.hex übertragen. (OS:Ubuntu 9.04) Die LEDs 
funktionieren,habe ich mit dem Testtool überprüft. Wenn die Leds mit 0V 
eingeschaltet würden hätte ich einfach einen negierten Ausgang oder irre 
ich mich da komplett?
Das komische ist ja das die Led nie auf irgend eine Tastenbetätigung 
reagiert.

@ FlipFlop
auf einen Negierten Ausgang habe ich verzichtet. Mir würde es sehr 
helfen wenn du mir sagen würdest welche Funktion eines RS - Flipflops 
nicht erfüllt wird bzw wo ich ansetzen könnte um den Code -wenn er 
funktioniert- zu verbessern.

Gruß Dominik

von Marcus Woletz (Gast)


Lesenswert?

Hallo FlipFlop,

"Aber davon mal abgesehen stellen die Abfragen in dem Programm nicht die
Funktion eines RS-FF dar."

Aber das Programm erfüllt IMO vermutlich die Funktion, die der OP 
erwartet:
Set-Eingang auf Spannung gelegt: LED wird eingeschaltet. Spannung auf 
Reset-Eingang: LED wird ausgeschaltet.

ciao

Marcus

von Marcus Woletz (Gast)


Lesenswert?

Hallo Dominik,

ich frage aus folgendem Grund nach der Toolchain:

ich hatte mal ein Problem, dass ein Programm sich völlig unsinnig 
verhielt. Irgendwann stellte sich dank eines freundlichen Helfers hier 
heraus, dass ich in meiner Toolchain nirgends den Startupcode 
eingebunden hatte. Das hatte zu Folge, dass verschiedene Dinge, die der 
Compiler als gegeben voraussetzt, zur Laufzeit dann nicht zutreffen 
(nicht belegte Register etc.)
Aus dem Makefile sehe ich jetzt nicht direkt, ob bei Dir der Startupcode 
eingebunden wird.

ciao

Marcus

von dominik (Gast)


Lesenswert?

@ Marcus Woletz
das makefile habe vom Tutorial übernommen und eigentlich nicht großartig 
verändert. ich vermute einmal der Startupcode hat etwas mit dem Linker 
zu tun. Könntest du mir den Link zum Beitrag dazu schicken ich finde den 
nicht mit der Suche.

Gruß Dominik

von H.j.Seifert (Gast)


Lesenswert?

Zufällig einen Mega-AVR mit JTAG benutzt? Dann liegt es daran, PIN C2 
und C3 sind für JTAG konfiguriert, Fuse ausschalten.

von dominik (Gast)


Lesenswert?

@H.j.Seifert: ich verwende einen Mega 8 der meines Wissens kein JTAG 
unterstützt

von Entwickler (Gast)


Lesenswert?

Für Dein Programm ist es notwendig, dass die Taster gegen High schalten 
und die Eingänge Pull Downs besitzen. Ist das der Fall ?

von Jan D. (keyman)


Lesenswert?

hallo.
hatte das board grade rumliegen und hab es mal eben geflashed.
also bei mir geht das
=> liegt wohl an deiner tasterbeschaltung oder so.

aber: wenn du sowieso das testboard hast wieso nutzt du zum anfang nicht 
die taster auf dem board?
habe das im testaufbau grade mal gemacht.
die taster 1 und 2 liegen auf PD2 und PD3 (also einfach D statt C!).
wäre mal so als einstieg vll ned verkehrt, und dann guck einfach mal wie 
pollin die taster beschaltet hat, so musst dus auch machen: also eben an 
5V und über R und C an GND.
viel spaß
jan

/edit: dann aber aufpassen mit den portdefinitionen mit ein- und 
ausgang!

von Horst (Gast)


Lesenswert?

Ich hätte jetzt auch den Verdacht von Entwickler.
Alternativ: Verwendest du den richtigen Pin für den Ausgang?
Kannst du mit dem Controller einfach die LED zum blinken bringen?
Danach kannst du versuchen, beim starten des Controllers die LED 
leuchten zu lassen und mit einem Tastendruck dann einfach die LED 
permanent abschalten.
Dann genau umgekehrt, erst mit der Taste einschalten.
Dann mit der anderen Taste.

von Horst (Gast)


Lesenswert?

Blinklicht als erstes Programm hat schon einen Sinn: du hast eine 
funktionierende Ausgabe. Mit der kannst du dann anzeigen, was z.B. an 
Eingängen gelesen wird.

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.