outp() gibt es wie sbi()/cbi() nicht mehr. Benutz einfach
MfG KjionPORTB = 0x00;
x = PINB;
usw.
Hallo zusammen,
Nachdem ich nun erfolgreich Bascom zum laufen gebracht und dort ein wenig rum experimentiert habe, möchte ich nun auf die C-Programmierung übergehen.
Bin dort zwar auch kein großer Experte, aber auch im Studium muss ich teilweise mit C programmieren... von daher passt das ganz gut.
Ich habe mir WinAVR installiert und alles wie in folgendem Tutorial eingerichtet: http://www.dirkbaumann.de/html/software.html
Das Beispiel-Programm habe ich auch runtergeladen, aber ich bekomme es einfach nicht kompiliert.
Kann es eventuell sein, dass die io.h nicht eingebunden wird?8bitzähler.c: (.text+0x34): undefined reference to 'outp'
8bitzähler.c: (.text+0x42): undefined reference to 'outp'
8bitzähler.c: (.text+0x50): undefined reference to 'outp'
8bitzähler.c: (.text+0x5e): undefined reference to 'outp'
8bitzähler.c: (.text+0x72): undefined reference to 'outp'
>Process Exit Code: 1
Als Controller habe ich meinen AT90S2313 und meinen ATMega8 eingerichtet. Mit keinem funktioniert's.
Ausserdem habe ich noch eine Frage zu dem PonyProg:
Welche Einstellungen muss ich dort vornehmen? Meinen Controller erkennt er nämlich nicht.
Als Schnittstelle habe ich mir folgendes nachgebaut:
https://www.roboternetz.de/wissen/in...ogrammierkabel
Schonmal vielen Dank für Euer Bemühen
Gruß
Julian
EDIT:
Frage zu PonyProg hat sich erledigt![]()
outp() gibt es wie sbi()/cbi() nicht mehr. Benutz einfach
MfG KjionPORTB = 0x00;
x = PINB;
usw.
Ahso, ok. Das erklärt dann einiges
Mit Ein- und Ausgabe am Controller habe ich mich gerade beschäftigt. Das dürfte kein Problem sein![]()
ähm, ja. Nachdem die erste Hürde genommen ist, kann ich die Ports nach belieben ansteuern.
Jetzt habe ich versucht auf mein LCD zu schreiben, aber das funktioniert bisher noch nicht.
angeschlossen ist es wie hier:
https://www.roboternetz.de/wissen/in...om_und_LCD%27s
techn. Infos:
ATMega8 16PU @ 4Mhz
2*16 LCD HD44780
Ich habe hier im Forum ein bisschen rumgesucht und bin auf folgende Seite gestoßen: http://homepage.hispeed.ch/peterfleu...-lcd44780.html
Die Library habe ich mir bereits runtergeladen und auch schon angepasst.
Mein Programm:
Kompilieren usw. und auch das Übertragen ist kein Problem.Code:#include <stdlib.h> #include <avr/io.h> #include <avr/pgmspace.h> #include <lcd.h> #include <lcd.c> void main (void) { lcd_clrscr(); lcd_puts("Hallo\n"); }
Er zeigt halt nix an :/
Gibt es vielleicht ein Tutorial oder soetwas zu diesem Thema?
Wie würde es prinzipiell funktionieren, wenn ich einen Zustand auf meinem PC an dem Display anzeigen möchte? Also z.B. CPU-Auslastung, Song in Winamp o.ä.
Hi!
Ich fange gerade erst an mit der C-Programmierung und den µControllern aber ich glaube da muss ich widersprechen
outp() gibt es wie sbi()/cbi() nicht mehr. Benutz einfach
PORTB = 0x00;
x = PINB;
usw.
Das ist ein kleines Programm mit dem ich noch vor zwei Tagen gespielt habe... funktioniert wunderbar. Mit PonyProg und einem Mega8.Code:#include <avr/io.h> typedef int BYTE; BYTE RECHTS; BYTE LINKS; int main (void) { outp (0xff,DDRC); outp (0x00,DDRD); outp (0x07,PORTD); RECHTS = 0; LINKS = 0; for (;;) { if (bit_is_clear (PIND, PIND0) & LINKS == 0){ RECHTS = 1;} if (bit_is_clear (PIND, PIND1) & RECHTS == 0) { LINKS = 1;} if bit_is_clear (PIND, PIND2) { LINKS = 0; RECHTS = 0;} if (RECHTS == 1 ) { sbi (PORTC, 1);} if (RECHTS == 0 ) { cbi (PORTC, 1);} if (LINKS == 1 ) { sbi (PORTC, 0);} if (LINKS == 0 ) { cbi (PORTC, 0);} }
Macht auch wenig Sinn wenn man eine Bitausgabe hat immer den ganzen Port beschreiben zu müssen.
Gruß Olli
.... und ich lächelte und es kam Schlimmer!
-= Rechtschreibfehler werden mit 0,50 Cent/Stk. berechnet. Bitte nach günstigen Großabnehmertarifen fragen! =-
Hi,
das geht sicher nur, da du eine alte AVR-GCC version installiert hast. das neue GCC kann das normalerweiße nicht mehr.
Und wie ist da die Bitmanipulation geregelt? Ganz ohne kann doch nicht sein oder?
Gruß Olli
.... und ich lächelte und es kam Schlimmer!
-= Rechtschreibfehler werden mit 0,50 Cent/Stk. berechnet. Bitte nach günstigen Großabnehmertarifen fragen! =-
Man schreibt Bitmanipulationen in Standard-C
Bit setzen : PORTB |= (1<<2); // setzt PortB.2
Bit Löschen: PORTB &= ~(1<<4); // löscht PortB.4
Wenn einem das zu viel getippsel ist, kann man sich ja Makros nach eigenem Gusto bauen.
Disclaimer: none. Sue me.
Das ist zwar alles sehr informativ, aber was ist mit meinen Fragen? =)
Nö, zumindest nich nach der Fehlermeldung. Wenn er die avr/io.h nicht fände, gäbe es eine entsprechende Fehlermeldung. Oder welche Frage ist noch offen?Zitat von Jul-ian
Disclaimer: none. Sue me.
Lesezeichen