mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik hilfe zur pc programmierung


Autor: tommi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi, also wir haben in der schule eine Platine zum programmieren eines 
µProzessoren gemacht, via serieller schnittstelle rs232, nachdem wir nun 
nicht mehr zum programmieren gekommen sind, und mich dies sehr 
interessiert hab ich mir mal das tutorial hier angesehn, zum avr 
programmieren mit c...

nun ich benutze einen atmel tiny13....
nun sind einige fragen aufgetreten....

also...
beim Tutorial z.b. bei diesen 2 Zeilen, was bedeuten sie in einfach 
ausgedrückten worten, also was wird dabei gemacht. und was bedeuten bzw. 
was kann ich mit den werten rechts vom = ändern, also eigentlich wie....
wie muss ich nun die werte ändern...

also z.b. was müsste ich machen um auf PB0 "1" auf PB1 "0" auf PB2 "1" 
und immer weiter bis zu PB5 zulegen....

   DDRB  = 0xff;             // (3)
   PORTB = 0x03;             // (4)

eine weitere frage hätte ich noch....
wie kann ich mir einen wert in der for schleife errechnen, dass diese 
schleife genau z.b. 10sec durchläuft....



also ich hoffe dass ich meine probleme halbwegs  verständlich 
beschrieben habe....und hoffe auf ne schnelle antwort :)


mfg

Autor: Bascomfehler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PORTB = 0x15;             // (4)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tommi wrote:
> hi, also wir haben in der schule eine Platine zum programmieren eines
> µProzessoren gemacht, via serieller schnittstelle rs232, nachdem wir nun
> nicht mehr zum programmieren gekommen sind, und mich dies sehr
> interessiert hab ich mir mal das tutorial hier angesehn, zum avr
> programmieren mit c...
>
> nun ich benutze einen atmel tiny13....
> nun sind einige fragen aufgetreten....
>
> also...
> beim Tutorial z.b. bei diesen 2 Zeilen, was bedeuten sie in einfach
> ausgedrückten worten, also was wird dabei gemacht. und was bedeuten bzw.
> was kann ich mit den werten rechts vom = ändern, also eigentlich wie....
> wie muss ich nun die werte ändern...
>
> also z.b. was müsste ich machen um auf PB0 "1" auf PB1 "0" auf PB2 "1"
> und immer weiter bis zu PB5 zulegen....
>
>    DDRB  = 0xff;             // (3)
>    PORTB = 0x03;             // (4)


Pfriemel das mal in Bits auf

     PORTB wird zugewiesen  00000011

ganz rechts ist PB0, eine Stelle weiter links PB1 usw.

wie konnteich so schnell die Bitrepräsentierung angeben. Nun, ich kann 
die Bitdarstellung für Hexadizmale Ziffern auswendig (und du in 2 Tagen 
auch)

   0000    0             1000     8
   0001    1             1001     9
   0010    2             1010     A
   0011    3             1011     B
   0100    4             1100     C
   0101    5             1101     D
   0110    6             1110     E
   0111    7             1111     F


Du willst PB0 auf 1, PB2 auf 0, PB3 auf 1, PB4 auf 0, PB5 auf 1
also das Muster

    00010101

teile das in 2 4-Bit Blöcke auf

    0001 0101

und hol dir aus der obigen Tabelle die korrespondierenden Hex-Ziffern

      1   5


  PORTB = 0x15;

macht also das Gewünschte.
In ein paar Tagen hast du den Bogen raus und du 'siehst vor deinem 
geistigen Auge' welche Bits bei 0x15 auf 1 sind und welche auf 0

> eine weitere frage hätte ich noch....
> wie kann ich mir einen wert in der for schleife errechnen, dass diese
> schleife genau z.b. 10sec durchläuft....

Sowas macht man nicht mehr mit einer Schleife.

Aber seis drum. Um zu warten gibt es die _delay_ms Funktion (siehe AVR 
gcc Tutorial). Die wartet x Millisekunden lang.
1 Sekunde hat 1000 Millisekunden, 10 Sekunden sind daher 10000 
Millisekunden.

   _delay_ms( 10000 );

Autor: tommi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, nochmal zu den stellen in binär mit rechts pb0 usw.

hab ich immer nur so viele stellen wie Ausgangsports....
also im fall des atmel tiny13 pb0- pb4
also hab ich dann 5 binär stellen oder gibts da ne genormte anzahl z.b. 
2er potenzen oder sowas...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tommi wrote:
> ok, nochmal zu den stellen in binär mit rechts pb0 usw.
>
> hab ich immer nur so viele stellen wie Ausgangsports....
> also im fall des atmel tiny13 pb0- pb4
> also hab ich dann 5 binär stellen oder gibts da ne genormte anzahl z.b.
> 2er potenzen oder sowas...

Es sind immer 8
Ein Byte besteht aus 8 Bit

Allerdings kanns natürlich sein, dass nicht alle Bits auf einen 
Anschluss herausgeführt werden.

Autor: tommi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich hab jetzt nur mal zum testen die 2 befehle kombiniert... und 
das sieht so aus...

#include <avr/io.h>
#include <avr/delay.h>

void main(void)
{

  DDRB=0xff;

    while(1)
    {
      PORTB = 0x02;
      _delay_ms(150);
      PORTB = 0x10;
      _delay_ms(150);
    }


}

jedoch wenn ich es teste passiert rein gar nichts....
habe ich irgendwo einen fehler? oder gibt es einen grund warum es nicht 
funktioniert?

eine frage hätte ich noch zum thema delay
wenn ich den delay wie man oben sieht setze stoppt wird der zustand der 
in der zeile darüber ist genau z.b. 150ms durchgeführt..?

also ich hoffe ihr könnt mir helfen mal meinen test zum laufen zu 
bringen :)


mfg

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da das hier absolut nichts mit PC-Programmierung zu tun hat, verschiebe 
ich’s mal.

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.