mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Was bedeutet "uint8_t data;" ?


Autor: hORST (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folgende Funktion zum Auslesen eines CAN-Transceivers soll in ASM
geschrieben werden: Mir ist nur die erste Zeile unklar:
"uint8_t data;"

Was bedeutet das?
Unten ist mein ASM-Coder, der alles beinhaltet nur diese erste Zeile
nicht.

----------------------------------------------------------------
uint8_t mcp2515_read_register(uint8_t adress)
{
  uint8_t data;

  /* CS low */
  PORTB &= ~(1<<SPI_CS);

  spi_putc(SPI_READ);

  spi_putc(adress);

  data = spi_putc(0xff);  // Dummy Byte

  /* CS high */
  PORTB |= (1<<SPI_CS);

  return data;
}
-----------------------------------------------------------------
uint8_t spi_putc( uint8_t data )
{
  /* Sendet ein Byte */
  SPDR = data;

  /* Wartet bis Byte gesendet wurde */
  while( !( SPSR & (1<<SPIF) ) )
    ;

  return SPDR;            // release SPIF
}
-----------------------------------------------------------------


ASSEMBLER:

getbyte:
  ; /SS low
  cbi   PortB,   4
  ; READ COMMAND
  ldi   temp,   READ
  out   SPDR,   temp
wait_spi_g1:
  sbis   SPSR,  SPIF          ; Transmission complete?
        rjmp   wait_spi_g1
  in   temp,   SPDR        ; release SPIF here
  ;ADDRESS
  out   SPDR,   address
wait_spi_g2:
  sbis   SPSR,  SPIF          ; Transmission complete?
        rjmp   wait_spi_g2
  in   temp,   SPDR        ; release SPIF here
  ; DUMMY BYTE
  ldi     temp,   0b10101010
  out     SPDR,   temp
wait_spi_g3:
  sbis    SPSR,  SPIF          ; Transmission complete?
        rjmp wait_spi_g3
  ; RESULT:
  in   temp,   SPDR
  ; /SS high
  sbi   PortB,   4
  ret

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uint8_t data;

"uint8_t" beschreibt den Datentyp der Variablen "data".
Es ist also ein Variablendeklaration.

Autor: Tommy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-> uint8_t data;

Damit werden in C Variablen definiert. Bei WinAVR wird mit dem
Variablentyp "uint8_t" eine vorzeichenlose 8-Bit-Variable
festgelegt.

uint8_t data; = unsigned char data;

Mfg
Tommy

Autor: Wegstabenverbuchsler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uint8_t    Datentypendeklaration (Unsigned integer 8 bit)
data       Name der deklarierten Variable vom Datentyp uint8_t


Das gilt sowohl für den Prozedur/Funktionskopf wie auch für lokale
Variablen innerhalb der Prozedur.

Autor: hORST (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aha, na gut ich denke mal das ist dann in ASM egal und braucht nicht
beachtet zu werden.
irgendwo ist aber was falsch im ASM Code? Gibts jemanden der den Fehler
sieht?

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey, das erinnert mich an diese Rätsel:

"In dem rechten Bild sind zehn Fehler versteckt, wer findet sie?"


Ne hORST, so wird das nix!
Wenn Du hier im Forum Hilfe erwartest, mußt Du Dich schon zu einer
etwas genaueren Fehlerbeschreibung herablassen, als "Da ist irgendwo
irgendein Fehler im Programm"

Markus_8051

Autor: hORST (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na ich hatte es schonmal hier:
http://www.mikrocontroller.net/forum/read-1-327304.html#new

nur war dort niemand und hat sich das angesehen. Dachte es läge an der
Masse des CODES.

Ich sag mal so: wer den Fehler findet (Fehlerbeschreibung im o.g.
Link)
darf sich über ein 2x16 LCD (grün/gelb) DIP-Modul freuen. Ist immerhin
besser als garnix, denn so einen Code zu durchforsten ist nicht in 5
min gemacht.

Autor: The Engineer (the_engineer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das Forum jetzt hier zum Rätseln mit Gewinnen "verkommen" ? Kann
ich auch anstatt das Modul lieber den Wert in Bar haben !? Oder sind
Warenpreise vom Umtausch ausgeschlossen *lol

Also wirklich !?

Thorsten

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bei WinAVR wird mit dem Variablentyp "uint8_t" eine vorzeichenlose
> 8-Bit-Variable festgelegt.

Das wird auch bei jedem anderen ISO-konformen C-Compiler gemacht,
sofern es dort einen vorzeichenlosen 8-Bit-Typ gibt und man stdint.h
einbindet.

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.