www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Anfängerproblem


Autor: Sippo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe ein kleines Problem, mit der Programmierung des ATMega8 und 
zwar geht es darum 2 Eingangssignale an PD7 und PD6 zu invertieren in 
jeweils 2 Signale aufzuteilen, jeweils ein Signal ein weiteres mal 
Invertieren und das Ergebnis dann an PB1, PB2, PB3, PB4 auszugeben. ich 
habe das ganze schon mit swap, xor, com usw. probiert, bekomme die 
Signale aber einfach nicht an die richtige Stelle. Es geht leider auch 
nicht mehr Die ein bzw. Ausgänge zu Ändern, da die Schaltung schon 
aufgebaut ist.

In der Logikvariante sähe die Schaltung in etwa so aus wie in der Datei 
im Anhang.

Den einen Inverter könnte man zwar weglassen aber ich glaub der hatte 
auch noch einen Nutzen aber zurück zum µC. Habt ihr mir da eine Lösung?

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast leider nicht geschrieben, in welcher Sprache du programmierst. 
C? Assembler? BASCOM.

Du könntest die Eingänge ja einfach mit "if" abfragen und die 
Ausgangspins entsprechend setzen. Das ist auf jeden Fall sehr flexibel.
uint8_t temp = PORTB & 0xe1;

if(bit_is_set(PIND, PD7)) temp |= _BV(PB2);
                     else temp |= _BV(PB1);
 

if(bit_is_set(PIND, PD6)) temp |= _BV(PB3);
                     else temp |= _BV(PB4);

PORTB = temp;

Autor: Sippo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh mist stimmt Entschuldigung. Also zz programmiere ich µC in Assembler. 
Und da ist mir dummerweise noch kein if über den Weg gekommen :(. 
Normalerweise progge ich in Basic aber da kostet der Compiler ja was.

Mfg Sippo

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Die einfachst Methode wäre über das T-Flag:

              in r16,PinD
              bst r16,7           ; Bit 7 nach T
              bld r16,0           ; T-Flag nach bit 0
              bld r16,1           ; TLag nach Bit 1
              bst r16,6           ; usw.
              bld r16,2
              bld r16,3
              andi r16,0b00001111 ; restliche Bits löschen
              ldi r17,0b00000101
              eor r16,r17         ; Bits invertieren
              out PortB,r16       ; ausgeben

MfG Spess

Autor: Sippo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir noch einer sagen in welchem Teildes Tuts das behandelt wird?

Mfg Sippo

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Kann mir noch einer sagen in welchem Teildes Tuts das behandelt wird?

Ich kenne das Tutorial nicht, aber könnte mir aber vorstellen, das der 
Fall etwas zu speziell ist. Etwas Platz für Eigeninitiative muss ja auch 
noch sein.

MfG Spess

Autor: Sippo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon aber ich meine es muss doch ein Tutorial geben in dem die Befehle 
beschrieben sind oder zumindest eine Befehlsreferenz. Wäre dankbar wenn 
da jemand was wüsste. Bzw. wo habt ihr das gelernt, wenn ihr es nicht 
aus der Ausbildung oder der Schule habt.

Mfg Sippo

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>oder zumindest eine Befehlsreferenz. Wäre dankbar wenn...

Die gibt es zum Beispiel in der Hilfe zum AVR-Studio und als PDF bei 
Atmel. Ausserdem in jedem Datenblatt als Kurzübersicht.

MfG Spess

Autor: verwirrter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wäre dankbar wenn
> da jemand was wüsste. Bzw. wo habt ihr das gelernt, wenn ihr es nicht
> aus der Ausbildung oder der Schule habt.

z.B. aus 'nem Datenblatt.

Datenblatt ATMEGA8, S.289, Instruction Set Summary

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.