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
uint8_t data; "uint8_t" beschreibt den Datentyp der Variablen "data". Es ist also ein Variablendeklaration.
-> 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
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.
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?
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
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.
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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.