Forum: Compiler & IDEs Taster & LED am selben Port schon wieder.


von Pascal (Gast)


Lesenswert?

Ich wünsche euch einen guten Abend!
Ich brauche mal eure Hilfe.
Wie das so ist sitzt man an den blödesten Dingen länger als an den 
großen komplizierten.
Ich versuche jetzt seit sage und schreibe 8 Uhr heute morgen, einen 
Taster abzufragen der dann z.B. eine LED ans leuchten bringt.

Zum testen habe ich mir einfach ein kleines blödes Programm geschrieben.

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


int main(void)
{
  DDRC = 0b00011111; (PC5-7 als Eingang, Rest als Ausgang)
  PORTC = 0b11100000; (Interner PullUp für PC5-7)

  if ( !(PINC & (1<<PINC7)) ) { (Wenn Bit 0 dann . . .)
    PORTC |= (1<<PC0);    (. . .mach die LED an)
  }

return 0;
}
--------------------------------------

Wie man sieht, nichts aufregendes. Die Taster sind vom PIN weg auf Masse 
geschaltet. Die LED´s sind von PIN über Widerstand an Masse geschaltet.
Zum testen habe ich mir eine Demo ASM Datei geschrieben, mit der das 
irgendwie geht. ber in C will es einfach nicht. Ich habe sicher schon 4 
Programme geschrieben, aber alle Sachen die ich da verwendet habe, gehen 
nicht. Weiß der Geier warum nicht. Dieses Beispiel da oben ist übrigens 
nur eines meiner Versuche, welches auch nicht geht. Eine Beispielausgabe 
auf ein Display geht übrigens auch nicht. Display und LED´s funzen aber 
alle! Taster habe ich auch durch gemessen, tun auch alle das was sie 
sollen.
uC ist ein Meg8515 auf 8 Mhz.

Ich hoffe ihr könnt mir bei so einer komischen Frage helfen, ich denke 
ich sehe den Wald vor lauter Bäumen nicht. Ach ja, Tutorial bin ich 
heute sicher 10 mal durch gegangen. :-(

von Helmi (Gast)


Lesenswert?

1. Solltes du das in einer Forever Schleife machen sonst läuft es nur 
einmal.

2. Wer macht die LED wieder aus ? der else fall fehlt

Gruss Helmi

von Pascal (Gast)


Lesenswert?

Das ging schnell!
Das Ausgehen der LED interessiert mich gerade nur sekundär, weil es um 
die Sache an sich geht. Es soll ja eigentlich was ganz anderes gemacht 
werden. Nur nachdem es da Probleme mit den Tastern und LED´s gab, habe 
ich dafür etwas neues angefangen, damit ich nicht an meinem schon 
bestehendem Code herum basteln muss und mir evnetuell mehr fehler rein 
hole.
Danke für den Tipp mit der While Schleife, habe ich noch eingebaut:

while(1){
  if ( !(PINC & (1<<PINC7)) ) {
    PORTC |= (1<<PC0);
  }
}

Läuft leider trotzdem nicht.

von Helmi (Gast)


Lesenswert?

Noch immer wer macht die LED aus.

while(1){
  if ( !(PINC & (1<<PINC7)) ) {
    PORTC |= (1<<PC0);
  } else
  {
    PORTC &= ~(1<<PC0);
  }
}

von Pascal (Gast)


Lesenswert?

Hab deine Else-Anweisung noch mit eingebunden, keine Besserung :-(

Wie gesagt, für die eigentliche Sache soll die LED ruhig anbleiben, 
hauptsache ich finde den Fehler, wieso meine Taster nicht reagieren... 
Unter C

von Magnus Müller (Gast)


Lesenswert?

Pascal wrote:
> Wie gesagt, für die eigentliche Sache soll die LED ruhig anbleiben,
> hauptsache ich finde den Fehler, wieso meine Taster nicht reagieren...
> Unter C

Helmi wrote:
> while(1){
>   if ( !(PINC & (1<<PINC7)) ) {
>     PORTC |= (1<<PC0);
>   } else
>   {
>     PORTC &= ~(1<<PC0);
>   }
> }

So... nun ersetze mal diese Schleife mit allem darin durch

   PORTC |= (1<<PC0);

Wenn die LED dann nicht leuchtet, liegt es wohl eher an deiner 
Beschaltung.

Bitte um Test und Rückmeldung.

Gruß,
Magnetus

von Pascal M. (cyrax)


Lesenswert?

Na das hab ich doch schon getestet bevor ich überhaupt gepostet habe :-) 
Das funzt. Auch mit allen LED´s

von Magnus Müller (Gast)


Lesenswert?

Hast du ein Messgerät zur Hand? Dann miss mal die Spannung an PC7 bei 
gedrücktem und nicht gedrücktem Schalter.

von Karsten B. (k-duke)


Lesenswert?

>Die Taster sind vom PIN weg auf Masse
>geschaltet.

Haste vielleicht einfach vergessen noch Vcc mit einem Widerstand an den 
Pin zu legen?

von Magnus Müller (Gast)


Lesenswert?

Karsten B. wrote:
>>Die Taster sind vom PIN weg auf Masse
>>geschaltet.
>
> Haste vielleicht einfach vergessen noch Vcc mit einem Widerstand an den
> Pin zu legen?

Er hat die internen PullUps aktiviert. Hm... gibts beim Mega8515 evtl. 
auch so ein Pullup-Disable-Bit? (Datenblattwälz)

von Magnus Müller (Gast)


Lesenswert?

Alternate Function of PORTC: Ext. Mem. Interface Bits 8...15

Externes Speicherinterface ist aber schon deaktiviert, oder?

von Karsten B. (k-duke)


Lesenswert?

ups hab ich gar nicht drauf geachtet X-D
Dann würde ich so auch mal sagen erst mal messen.
Und vielleicht noch die Beschaltung posten.

von Pascal M. (cyrax)


Lesenswert?

Ich bin noch am messen und prüfen! Dauert noch einen Moment!

von Magnus Müller (Gast)


Lesenswert?

Pascal Mielke wrote:
> Ich bin noch am messen und prüfen! Dauert noch einen Moment!

...schon 10 Minuten vorbei... (Weinschlürf)  ;o)

von Pascal M. (cyrax)


Lesenswert?

Also mal eine Zwischenmeldung . . .

BOA WAS BIN ICH BLÖD!!!!
Hatte in der Nacht wo ich die Controllunit gelötet habe die zweite Ebene 
vergessen mit Masse zu versorgen lol
Also das Thema schieben wir am besten unter den Tisch . . . Das darf man 
ja keinem erzählen . . . rotwerdundzurweinflaschevonmagnusgreif

Ich danke euch allen herzlichst für eure Mühen!!!!!

Wie sagt man so schön, die schönsten Fehler sind die Hausgemachten g

von Magnus Müller (Gast)


Lesenswert?

Jau jau... manchmal sieht man halt den Wald vor lauter Bäumen nicht ;)

Zum Wohl,
Magnetus

von Helmi (Gast)


Lesenswert?

Noch nüchtern ?

Gruss Helmi

von Magnus Müller (Gast)


Lesenswert?

Helmi wrote:
> Noch nüchtern ?

Ich denke, dass man sich schon nach einem Glas Wein nicht mehr als 
nüchtern bezeichnen kann (selbst wenn man womöglich noch keine 
bemerkensweren Auswirkungen spürt) ;)

Ich würde meinen momentanen Zustand als entspannt und leicht angeheitert 
beschreiben... (nipp)

Gruß,
Magnetus

von Pascal M. (cyrax)


Lesenswert?

Ich als AntiAlki bin auf jeden Fall von Magnus seinem Wein besoffen 
lol

von Magnus Müller (Gast)


Lesenswert?

Hauptsache, deine Schaltung funktioniert jetzt (nochmalnipp)

von Pascal M. (cyrax)


Lesenswert?

Ich glaub schon lol
Jetzt geht es an den Encoder .  . . Und ich sehe, dass das wohl noch 
richtig spannend wird . . . Aber man wächst ja mit seinen Aufgaben :-D

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.