mikrocontroller.net

Forum: Compiler & IDEs myAVR - Portbelegung & avr-gcc - Verhalten


Autor: omgwtfbbq (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aufgrund des 4-Bit-Modus eines LCD an einem myAVR-Board bin ich 
scheinbar gezwungen, nur 6 Bit eines Ports tatsächlich zu benutzen. Die 
"technische Beschreibung" von myAVR ist nicht wirklich von Nutzen, 
ebenso wie der vor Fehler strotzende ASM-Code. Ich hätte nun2 Fragen:

1) Vor mir liegt das Datenblatt des Samsung KS0070B µC - Ist das auch 
der, der auf den LCD-Modulen verbaut wird?

2) mein Versuch:
struct port
{
  unsigned data : 4;
  unsigned rs : 1;
  unsigned e : 1;
  unsigned complete : 6;
} port;

port.complete = 0xC;

PORTD |= port.complete;
--> Welche Bits von PORTD werden nun überschrieben? (das Feld hat ja nur 
6 Bits)

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> PORTD |= port.complete;
>
> --> Welche Bits von PORTD werden nun überschrieben?
> (das Feld hat ja nur 6 Bits)

Dass das Feld nur 6 Bits hat, ist in der Zeile unwichtig, weil die 
rechte Seite sowieso in den Typ von PORTD konvertiert wird, etwas 
uint8_t-mäßiges.
Die Zeile entspricht also PORTD |= 0xC.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>2) mein Versuch:
>struct port

Was soll der Schrott mit dem struct?
Das macht eventuell Sinn wenn du zwei
oder mehr Displays anschliessen möchtest.
Für ein Display ist das Murks.

Autor: omgwtfbbq (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann bitte mal jemand antworten, der auch was zum Thema zu sagen hat, 
vozugsweise keine Forentrolle und Klugscheisser?
Ich hab wirklich keine Lust, jetzt mit dem Multimeter das Ergebnis zu 
messen o.0. Die Erste Frage ist auch relativ wichtig ...

Autor: omgwtfbbq (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[trollfeed][pleasignore]Wenn du jemals einen Blick auf die Umsetzung der 
gegebenen Konstanten und Makros im avr-gcc-Paket geworfen hättest 
wüsstest du auch dass ein sehr grosser Teil exakt so realisiert wird, 
tatsächlich ist ein LCD in C ohne solche Hilfen nur sehr schwer zu 
steuern, schliesslich muss man in vielen Routinen dieselben Bits kippen 
oder auslesen, eine für Menschen lesbare Form wie 'n Bitfield kommt da 
sehr gelegen - zudem dürfte der gesamte Algorithmus extrem ineffizient 
werden wenn keine flüchtigen Speicher oder ähnliches benutzt werden, 
gell Bubbele ;-).[/pleasignore][/trollfeed]

Kann mir jemand helfen? Das wäre nett, danke.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielleicht solltest Du Deine Erkenntnisse mal den Schreibern des 
AVR-GCC-Tutorials mitteilen, die scheinen das noch nicht zu wissen...
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Gruß aus Berlin
Michael

Autor: omgwtfbbq (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schön zu sehen, dass hier nur getrollt statt geholfen wird ...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>schön zu sehen, dass hier nur getrollt statt geholfen wird ...

Dein struct hat 12 Bits.
Könnte man mit einem union evtl. verbessern.
Wird aber auch nichts bringen.
Und ich glaube das geht weit über deinen Horizont :(

Autor: omgwtfbbq (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wow! Das war ne Hilfe, danke!
Fehlen eigentlich nur noch Sätze wie "C ist eine Programmiersprache", 
"Computer arbeiten prinzipiell binär" und "der Himmel ist meisstens 
blau".

Du musst sehr einsam sein ... mein Beileid --> soviel Hass und 
Klugscheisserei implizieren das normalerweise. Ich habs übrigens 
mittlerweile selbst hingekriegt, das struct funktioniert super; 
seltsamerweise schiebt avr-gcc um die Anzahl der Bits der Differenz 
zwischen den Datentypen nach rechts.

Viel Spass noch beim troll0rn, nicht-lesen-koenn0rn und 1337-h4xx0rn 
oder wie ihr Kinder das heutzutage nennt.

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.