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


von hORST (Gast)


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

von Rahul (Gast)


Lesenswert?

uint8_t data;

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

von Tommy (Gast)


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

von Wegstabenverbuchsler (Gast)


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.

von hORST (Gast)


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?

von Markus_8051 (Gast)


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

von hORST (Gast)


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.

von The E. (the_engineer)


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

von Rolf Magnus (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.