PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rc5-empfang-atmega32



exzoys
01.02.2011, 07:13
Hallo,
ich habe mich zwar schon in das Thema RC5-Empfang eingelesen nur leider bin ich nicht so gut in GCC.
Ich möchte 4 verschiedene Codes empfangen können und daraufhin eben 4 Befehle ausführen.
Könnte mir jmd. bitte einen fertigen Beispielcode schicken der z.b. eine led bei Codeempfang zum leuchten bringt.
Anhand eines solchen Codes könnte ich dann die Funktionsweise verstehen.
Ich habe einen Atmega32u2 und benutze das AVR Studio.
ich wäre sehr dankbar.

grüße

oberallgeier
01.02.2011, 08:13
... leider bin ich nicht so gut in GCC ... bitte einen fertigen Beispielcode ... led bei Codeempfang zum leuchten ...Es klingt vielleicht dämlich. In C bin ich auch nicht gut, lerne es erst seit einer Weile. Aber wenn ich mir alles schreiben lassen würde, würde ich fast nix lernen. Der Empfang der Signale ist ja erstmal easy, dann musst Du nur 14 mal im Zeitraster des RC-5 die Pegel diagnostizieren auf "erste Hälfte" und "letzte Hälfte", entsprechend dem Bit 0 und 1. Meine Routine hatte ich dazu selbst geschrieben. Selbst schreiben ist der einzige Weg, dass Du danach nicht mehr genauso schlecht in C bist wie vorher.

Du hast Dich eingelesen? Hmmm, wieso bist Du dann nicht über die verschiedenen Codebeispiele gestolpert wie z.B. dieses (klick) (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=177432#177432) Codebeispiel, oder dieses (klick) hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=55581) oder das sehr gut funktionierende C-Beispiel von P.Dannegger? (http://www.mikrocontroller.net/topic/12216#new)

. . . Anhand eines solchen Codes könnte ich dann die Funktionsweise verstehen . . .Eins ist klar: wer sowieso schon bei C schwächelt, hat bei so komplexen Programmen wie RC-5-Dekodern ziemlich geringe Chancen, die Funktionsweise zu verstehen.

exzoys
01.02.2011, 08:20
guten morgen,
ich bin schon über diese Codes gestoßen jedoch sind diese fehlerhaft.
Das Code-Beispiel von p.dannegger habe ich ebenfalls schon gesehen und das auf dem RN-Wissen auch.
Jedoch verstehe ich nicht warum da eine main.c und eine rc5.c ist
ich kann doch auf meinen Chip nur eine einzige .hex Datei übertragen, die dann das ganze Programm enthällt.

exzoys
01.02.2011, 08:31
Guten Morgen nochmals,
wenn ich das Testprogramm von Dannegger compilern will kommen ebenfalls ein hauen fehler.

Build started 1.2.2011 at 09:28:43
avr-gcc -mmcu=atmega32u2 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT infrarot2.o -MF dep/infrarot2.o.d -c ../infrarot2.c
In file included from c:\winavr-20100110\bin\../lib/gcc/avr/4.3.3/include/main.h:11,
from ../infrarot2.c:1:
c:\winavr-20100110\bin\../lib/gcc/avr/4.3.3/include/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
../infrarot2.c:4: warning: conflicting types for built-in function 'putchar'
../infrarot2.c: In function 'putchar':
../infrarot2.c:6: error: 'UCSRA' undeclared (first use in this function)
../infrarot2.c:6: error: (Each undeclared identifier is reported only once
../infrarot2.c:6: error: for each function it appears in.)
../infrarot2.c:6: error: 'UDRE' undeclared (first use in this function)
../infrarot2.c:7: error: 'UDR' undeclared (first use in this function)
../infrarot2.c: At top level:
../infrarot2.c:11: warning: conflicting types for built-in function 'puts'
../infrarot2.c: In function 'main':
../infrarot2.c:23: error: 'TCCR0' undeclared (first use in this function)
../infrarot2.c:24: error: 'TIMSK' undeclared (first use in this function)
../infrarot2.c:26: error: 'UBRRL' undeclared (first use in this function)
../infrarot2.c:27: error: 'UBRRH' undeclared (first use in this function)
../infrarot2.c:28: error: 'UCSRA' undeclared (first use in this function)
../infrarot2.c:29: error: 'UCSRC' undeclared (first use in this function)
../infrarot2.c:29: error: 'URSEL' undeclared (first use in this function)
../infrarot2.c:29: error: 'UCSZ1' undeclared (first use in this function)
../infrarot2.c:29: error: 'UCSZ0' undeclared (first use in this function)
../infrarot2.c:30: error: 'UCSRB' undeclared (first use in this function)
../infrarot2.c:30: error: 'RXEN' undeclared (first use in this function)
../infrarot2.c:30: error: 'TXEN' undeclared (first use in this function)
make: *** [infrarot2.o] Error 1
Build failed with 17 errors and 3 warnings...
.

Wenn ich einen funktionierenden Code hätte würde ich auch lernen wie er funktioniert, so mache ich das in der Schule ja auch.
Ich würde mir den Code ja da so zurechtschreiben wie ich ihn dann benötige.
grüße

Hubert.G
01.02.2011, 10:15
Die meisten Error ergeben sich dadurch das die Register andere Namen haben. Wenn mich nichts täuscht ist der Code für den Mega8 geschrieben. Da wäre ein Blick ins Datenblatt sehr hilfreich.
Mein Tip wäre Timer/Counter0 und USART
Die neue ISR-Bezeichnung einfügen ist ja auch kein Problem
AVR-Studio/ help/ avr-libc-Referenz-manual/ Library Reference/ <avr/interrupt.h>: Interrupts
Hier findest du die neuen Bezeichnungen.

exzoys
01.02.2011, 10:20
danke;) somit hat sich das problem