mikrocontroller.net

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


Autor: Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. :-(

Autor: Helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch immer wer macht die LED aus.

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

Autor: Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pascal Mielke (cyrax)
Datum:

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

Autor: Magnus Müller (Gast)
Datum:

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

Autor: Karsten B. (k-duke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die Taster sind vom PIN weg auf Masse
>geschaltet.

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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alternate Function of PORTC: Ext. Mem. Interface Bits 8...15

Externes Speicherinterface ist aber schon deaktiviert, oder?

Autor: Karsten B. (k-duke)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Pascal Mielke (cyrax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin noch am messen und prüfen! Dauert noch einen Moment!

Autor: Magnus Müller (Gast)
Datum:

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

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

Autor: Pascal Mielke (cyrax)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Magnus Müller (Gast)
Datum:

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

Zum Wohl,
Magnetus

Autor: Helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch nüchtern ?

Gruss Helmi

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pascal Mielke (cyrax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich als AntiAlki bin auf jeden Fall von Magnus seinem Wein besoffen 
lol

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hauptsache, deine Schaltung funktioniert jetzt (nochmalnipp)

Autor: Pascal Mielke (cyrax)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.