mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega8 d0-7als Ausgang


Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo jungs,

habe ein kleines problem, der atmega8 will den ausgang d.7 nicht setzen, 
laut bascom program ok.

led bleibt immer aus.


mit besten dank im vorraus
dietmar

Autor: Daniel P. (daniel86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wäre es mal mit einpaar mehr INFOS?????

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok ich habe am port eine led angeschloßen und die moechte ich jetzt 
gerne blinken lassen, sowie am port b.0 zb, aber b.0 blinkt wie es soll 
aber d.7 nicht wie ich jetzt gemerkt habe d.0 d.1 auch nicht, laut 
datenblatt kann ich sie als ausgaenge benutzen, aber warum keine 
funktion.

zb:

Do

Portb.0 = 1 (funktion)
Portd.7 = 1 (nada)
Wait 1
Portb.0 = 0 (funktion)
Portd.7 = 0 (nada)
Wait 1
Loop
End

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dietmar schrieb:
> ok ich habe am port eine led angeschloßen und die moechte ich jetzt
> gerne blinken lassen, sowie am port b.0 zb, aber b.0 blinkt wie es soll
> aber d.7 nicht wie ich jetzt gemerkt habe d.0 d.1 auch nicht, laut
> datenblatt kann ich sie als ausgaenge benutzen, aber warum keine
> funktion.


Ich vermute mal, dass die Taktrate mit 1.0MHZ und internem Oszillator 
läuft. In diesem Fall sind nicht alle Ausgänge setztbar. Leider nur ein 
unvollständiger Quellcode angegeben.

D.o und D.1 sind die serielle Schnittstelle. Die ist vermutlich aktiv. 
Überprüfe $baud - kommt die Zeile vor, dann ist UART prior.

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups das stimmt genau, sorry fuer den code.
jetzt mal komplett.

$regfile = "M8def.dat"                                      'es handelt 
sich um einen ATmega8
$crystal = 8000000                                          'der 
eingebaute RC-Oszillator läuft mit 8 Mhz
$hwstack = 32                                               'im Speicher 
werden für den Hardware-Stack 32 Byte reserviert
$swstack = 100                                              'im Speicher 
werden für den Software-Stack 100 Byte reserviert
$framesize = 40                                             'im Speicher 
werden für den Frame 40 Byte reserviert




Config Portd.7 = Output
Config Portd.0 = Output

Ddrb = &B1
Ddrd = &B11111111
Do

Portb.0 = 1
Portd.0 = 1
Wait 1
Portb.0 = 0
Portd.0 = 0
Wait 1
Loop
End

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dietmar schrieb:
> ups das stimmt genau, sorry fuer den code.
> jetzt mal komplett.

Jetzt mal ehrlich - wie soll das gehen???

> Config Portd.7 = Output
> Config Portd.0 = Output

Es wird Portd.7 als Ausgang gesetzt, aber portb.0 getoggelt.

> Ddrb = &B1
> Ddrd = &B11111111

Diese Zeile ist für dieses einfache Programm völlig überflüssig,  vgl. 
dazu die Hilfe unter: AVR Internal Hardware Port B

Überprüfe, ob möglicherweise die serielle Schnittstelle aktiv ist. 
Einfach den Pegel messen. Müsste permanent auf 0V gezogen werden, da 
dies der Ruhezustand ist.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich vermute mal, dass die Taktrate mit 1.0MHZ und internem Oszillator
>läuft. In diesem Fall sind nicht alle Ausgänge setztbar.

Hast du diese Erkenntnis selber gewonnen, oder kann man das irgendwo 
nachlesen?

Oliver

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver schrieb:
>>Ich vermute mal, dass die Taktrate mit 1.0MHZ und internem Oszillator
>>läuft. In diesem Fall sind nicht alle Ausgänge setztbar.
>
> Hast du diese Erkenntnis selber gewonnen, oder kann man das irgendwo
> nachlesen?

Ich habe das mal vom Atmega32 abgeleitet. Wird dieser im 
Auslieferungszustand betrieben (1Mhz, int Osz.), so sind auf Grund der 
Sec und Fuse Bits einige Ports nicht als Aus oder Eingänge nutzbar. Dies 
sind beim 32-er: PC5, PC4, PC3, PC2

Dies kann aber hier nicht das Problem sein (vgl. neuer Quelltext)

Ich vermute zum Problem hier, dass die Fusebits falsch gesetzt wurden 
und daher der Chip entweder viel zu langsam, oder aber überhaupt nicht 
den extern angeschlossenen Oszillator verwendet. Es muss laut Quelltext 
ein externer Quarz angeschlossen sein. Möglicherweise sind auch nur die 
beiden Kondensatoren falsch dimensioniert.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Niels Keller schrieb:
> Oliver schrieb:
>>>Ich vermute mal, dass die Taktrate mit 1.0MHZ und internem Oszillator
>>>läuft. In diesem Fall sind nicht alle Ausgänge setztbar.
>>
>> Hast du diese Erkenntnis selber gewonnen, oder kann man das irgendwo
>> nachlesen?
>
> Ich habe das mal vom Atmega32 abgeleitet. Wird dieser im
> Auslieferungszustand betrieben (1Mhz, int Osz.), so sind auf Grund der
> Sec und Fuse Bits einige Ports nicht als Aus oder Eingänge nutzbar. Dies
> sind beim 32-er: PC5, PC4, PC3, PC2
>

Man sollte besser keine halben Erkenntnisse verbreiten ohne sich davon 
im Datenblatt zu überzeugen...

Der Mega32 hat auf diesen Pins das JTAG-Interface und das ist im 
Lieferzustand aktiv und nuß per Fusebit ausgeschaltet werden, wenn man 
die Pins nicht als JTAG sondern als normale I/O benutzen will.

Mit der Art der Taktversorgung hat es genau garnichts zu tun.

Config Portd.7 = Output
Config Portd.0 = Output

>Es wird Portd.7 als Ausgang gesetzt, aber portb.0 getoggelt.

Wo wird hier auf Port B zugegriffen und warum sollte was toggeln?

Gruß aus Berlin
Michael




Gruß aus Berlin
Michael

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael U. schrieb:

> Man sollte besser keine halben Erkenntnisse verbreiten ohne sich davon
> im Datenblatt zu überzeugen...
>
> Der Mega32 hat auf diesen Pins das JTAG-Interface und das ist im
> Lieferzustand aktiv und nuß per Fusebit ausgeschaltet werden, wenn man
> die Pins nicht als JTAG sondern als normale I/O benutzen will.
>

Habe ich etwa behauptet, dass die Ports nicht verwendet werden??? Wohl 
kaum. Ich habe lediglich mitgeteilt, dass diese in einem StandartBascom 
Programm, wie es hier vorliegt - nicht setzbar sein könnten. Schauen wir 
also - wie bereits von mir erwähnt - ins Datenblatt des ATMEGA8 - oder 
besser lassen wir uns die SEC/FUSE Bits posten und schauen dann rein.

>Wo wird hier auf Port B zugegriffen und warum sollte was toggeln?

Etwas höher steht geschrieben.

>Portb.0 = 1
>Portd.0 = 1
>Wait 1
>Portb.0 = 0

Was wird hier getoggelt? ;-) Bitte vorher auch mal richtig den Text 
lesen.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich habe lediglich mitgeteilt, dass diese in einem StandartBascom
>Programm, wie es hier vorliegt - nicht setzbar sein könnten. Schauen wir
>also - wie bereits von mir erwähnt - ins Datenblatt des ATMEGA8

Wenn du das vorher getan hättest, hättest du festgestellt, daß der Mega8 
kein JTAG hat. Per Fuse beeinflussbar sind Reset/PC6 sowie PB6/PB7 als 
XTAL1/2. Das dürfte aber als Ursache beides auszuschließen sein.
Uart wird im Programm nicht verwendet, der ADC auch nicht.

Die ganze Diskussion ist also hinfällig.

@Dietmar:
Hast du AVCC auch angeschlossen?

Oliver

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähh, warum sollte PD7 toggeln, wenn in deinem Code steht:

Do
 Portb.0 = 1
 Portd.0 = 1
 Wait 1
 Portb.0 = 0
 Portd.0 = 0
 Wait 1
Loop

Wo ist da PD7?

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.