Taster & LED am selben Port schon wieder.

Gast #847248
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. :-(
Gast #847254
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.
Gast #847258
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
Gast #847261
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
Gast #847274
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)
#847286
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
Gast #847293
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren