Forum: Mikrocontroller und Digitale Elektronik Anfängerin -> Erster Programmversuch funktioniert nicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Lisa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Experten!

Habe gerade mein erstes Programm mit einem MEGA32L zu Testzwecken 
geschrieben. Leider funktioniert es nicht! An Port A.0 liegt an 
PWM-Signal an. Dieses soll zu Port A.7 "Durchgeschliffen" werden.
Hier der Programmausschnitt(COdeVisionAVR):
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=0 State6=T State5=T State4=T State3=T State2=T State1=T State0=P 
PORTA=0x01;
DDRA=0x80;

...

while (1)
      {
      // Place your code here  
      if(PORTA.0==0){ 
        PORTA.7=1; }
      else {
        PORTA.7=1;
        }  
...

Port A.7 gibt aber hat aber dauerhaft das den Zustand high. An A.0 liegt 
ein PWM-Signal mit 200Hz.

Jemand eine Idee warum das nicht funktioniert?

Grüßle

von Lisa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Soll natürlich
while (1)
      {
      // Place your code here  
      if(PORTA.0==0){ 
        PORTA.7=1; }
      else {
        PORTA.7=0;
        }  

heißen

von Gast (Gast)


Bewertung
0 lesenswert
nicht lesenswert
if(PORTA.0==0){
        PORTA.7=0; }

?

von Sven P. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
PORTA --> PINA !

von Helmut L. (helmi1)


Bewertung
0 lesenswert
nicht lesenswert
>      if(PORTA.0==0){

ersetze das mal durch PIN

Port dient nur zur Ausgabe , zur Eingabe musst du Pin brauchen

Gruss Helmi

von Gast (Gast)


Bewertung
0 lesenswert
nicht lesenswert
while (1)
      {
      // Place your code here
      if(PINA.0==0){
        PORTA.7=0; }
 else {
        PORTA.7=1;
        }

?

von Wolfgang M. (womai)


Bewertung
0 lesenswert
nicht lesenswert
Koennte es sein, dass die Schleife einfach zu langsam ist? Ich hab' 
keinen AVR-Compiler (arbeite immer mit Microchip-uCs), aber ich denke 
die Schleife sind so ca. 20 Assemblerbefehle. Bei 4 MHz Taktrate 
(welcher Taktrate verwendest Du wirklich?) und 1 Befehl pro Takt ist die 
Schleifenfrequenz so 200 kHz. Kann also sein, dass der uC immer gerade 
dann den Zustand des Eingangspins ueberprueft, wenn er "high" ist.

Zum Testen am besten einfach einmal ein statisches Signal von einem 
Schalter an den Eingang anlegen (1 bzw. 0), oder mit einem an den 
Eingang angschlossenen Draht abwechselnd GND und VCC beruehren und 
sschauen, ob der Ausgang folgt. Wenn das geht, dann mal ein langsameres 
PWM-Signal einschleifen (z.B. 1 kHz).

Wolfgang

von Lisa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Oh Mann!Natürlich, Pin muss das heißen. Da hatte habe ich vor lauter 
Baumen den Wald nicht gesehen!
Dank an alle für die Hilfe!

von Helmut L. (helmi1)


Bewertung
0 lesenswert
nicht lesenswert
Das PWM Signal beträgt 200Hz  das sollte er schon schaffen.

von Wolfgang M. (womai)


Bewertung
0 lesenswert
nicht lesenswert
Ooops, ich habe kHz statt Hz gelesen! Ja, 200 Hz ist nicht besonders 
schnell.

Wolfgang

von Wegstaben V. (wegstabenverbuchsler)


Bewertung
0 lesenswert
nicht lesenswert
warum überhaupt diese 1:1 "Umcodierung" mit dem if .. (then) .. else ?

Warum nicht PORTA.7=PINA.0   ??

von Michael H* (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Anfängerin -> _*Erster*_ Programmversuch funktioniert nicht
deswegen...

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.