-
Thread
ATMEGA16 Timer
code mache: [c] if((count >= adc_wert) && (start == 0x01)) { count = 0; PORTC = 0x00; // PORTC auf 0 (Debugg) start = 0x00; // Hilfsvariable auch auf 0 //OCR0 = 255; // Wenn der count = dem ADC Wert entspricht // sollte der PWM Ausgang
ca 3 sec. schaltet sie auf ganze Helligkeit und dann wird si richtig ruckartig heller und dünkler, geht aber nie ganz aus. an was kann es liegen, bin voll ratlos?! Grüße Lukas
-
Thread
Funktioniert diese Schleife?
jeden Ratschlag :) int main() { int ergebnis; while((PINB == 0x01) || (PINB == 0x02)) { PORTc = 0x01; _delay_ms(2); PORTC = 0x02; _delay_ms(2); } if ((PINB == 0x01) && (PORTC == 0x01)) { ergebnis+= 1; main(); } if ((PINB == 0x01) && (PORTC == 0x02)) { ergebnis+= 10; main();
Hi Wenn deine Tastatur wirklich so angeschlossen ist, dann geht das > DDRC = 0x40; // x1 auf ausgang > PORTC = 0x40; //x1 auf High ins nirgendwo ->PC6. Und die Ansteuerung für PC2 fehlt. MfG Spess
-
Thread
Atmega8 Board
einem 8Mhz Quarz per Jumper gewählt werden. Per Dip-Schalter kann auch kein Quarz gewählt werden. Geht das überhaupt so wie ichs mir gedacht habe? Könnte es Probleme geben, weil der Jumper evtl. als Antenne wirken könnte? Könnte es auch Probleme mit den Leitungen zur 40pol. Leiste geben? Reset Taster
das Problem nicht. Für VCC und GND habe ich dasselbe geplant. SV3 hat einen Pin weniger, weil der PORTC des Atmega8 nur 7 Pins hat.
-
Thread
AVR AtMega8 Preemtive Scheduler
ein Timer2 Cmp Match Interrupt, an dessen Ende ich dann zu "function1" springen will, um die LED an PORTC 4 anzumachen. Erstmal geht es mir nur darum, dort anzukommen. Hier der einzige Code mit dem ich es bisher geschaft habe, dass ich wenigstens im Sumulator in function1 komme: [code]#include <
/timer2 match interrupt enable TIFR |= 0b10000000; DDRC = 0b00110000;// set PORTC PIN 5 and 6 to output pt_function1 = &function1;//assign function adress to pointer sei();// enable interrupts main2: PORTC = 0b00100000; asm volatile("nop"); asm volatile("nop"); asm volatile
-
Thread
Labornetzteil/Funktionsgenerator
40 $swstack = 16 $framesize = 32 $baud = 9600 Config Lcd = 20 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Pina.0 = Output Config Adc = Single , Prescaler = Auto , Reference = Aref 'Now give power to the chip ' externe
OK, dann gehts morgen ab zum großen C ;-)
-
Thread
Timer0/ PWM auf Atmega48/88
flüssigen aber gut ausreichenden Sprachkenntnissen auch nich unbedingt einfachst zu lesen). Aber ohne gehts nicht, das stimmt schon. >Zum Erzeugen von Frequenzen ist CTC besser als Fast PWM geeignet. Dann versuch ichs mal...
aber gut ausreichenden > Sprachkenntnissen auch nich unbedingt einfachst zu lesen). Aber ohne > gehts nicht, das stimmt schon. Das kann ich verstehen. Die Kapitel sind schon sehr umfangreich im Datenblatt. Wenn man aber erst einmal weiß, welcher Modus was macht, dann ist es eigentlich sehr einfach
-
Thread
Takte pro Befehl
Implementierung definiert, mithin auch die Semantik von (mit der üblichen Definition von POTRC): >> PORTC = 0; Zunächst wird 0 nach PORTC geschrieben. Weil "PORTC = 0" ein Ausdruck ist, der auszuwerten ist und PORTC volatile ist, wird PORTC wieder zurückgelesen, analog zu >> (void) PORTC; oder >> char a = PORTC = 0; Das alles wäre durch den Standard abgedeckt. Aber würde irgendjemand das wollen? Ich behaupte: Nein. Stell dir einfach vor, PORTC ist ein Latch. Ergo: Den Standard zu erfüllen ist nicht
-
Thread
Entwicklungsboard Easy PIC v7 (PIC18F45K22)
FALLING_EDGE_INT &PORTB_PULLUPS_OFF); WriteTimer0(0); while(1){ if(counter %2) PORTC= 0xF0; else{ PORTC= 0x0F; counter= 0; } Delay10KTCYx(255); counter++; } } [/c]
Geht der hier nicht in den DEBUG Modus ? #pragma config DEBUG = ON Nimm die ganzen #pragma raus und stell es im Compilerprogramm ein. PROJECT/EDIT PROJEKCT
-
Thread
Methode auf avr (7 segment)
methode? also als java syntag meine ich sowas: public void eins() { //mache 1 an } wie geht das in c?
} } [/c] Nur wie verwende ich die methode jetzt? so gehts offenbar nicht???
-
Thread
LED Multiplexing
(Geht das nachträgliche Einfügen von Bildern gar nicht?)
7,5mA und LED3 mit 1mA betrieben wird Wenn es sich bei den LEDs um gleichfarbige handelt: Nein, geht nicht, stand so auch nicht in der Aufgabenbeschreibung. Wenn es um verschiedenfarbige geht: Natürlich geht das, daher ja 3 getrennte Kreise und die Möglichkeit alle einer Farbe abzuschalten.
-
Thread
bascom spinnt
Hallo, Ich habe folgendes problem, wenn ich zb den portc.0 als ausgang konfiguriere und dann eine schleife mache die do aussieht: Do Portc.0=1 Loop Musste die led an portc.0 doch leuchten oder versteh ich das falsch? Die led leuchtet nicht, ich hab
Hast Du den Ausgang so konfiguriert: Config Portc.0 = Output Hast Du die LED richtig angeschlossen?
-
Thread
implizites modul init
[c] #include <avr/io.h> static void __attribute__((constructor,used)) init (void) { PORTC = 0; }[/c] Konstruktiren werden nach dem Initialisieren der globalen Variablen in (.data, .bss, .rodata) jedoch vor main aufgerufen. Eine witere Möglichkeit im avr-gcc sind naked-Funktionen,
Bibliothek, > Entwickler B setzt diese ein. Automatisch, ohne das Entwickler B da Hand anlegen muß, geht das in C nunmal nicht. Aber für solche Fälle hat man dann irgendwann mal C++ und andere objektorientierte Sprachen erfunden. Da gibt es deine nicht-vergessbaren Konstruktoren. Oliver
-
Thread
Drehimpulsgeber
- 62) an meinem xmega128A1 zu betreiben. Angeschlossen sind PinA und PinB des Impulsgebers an PORTC Pin0 und Bin1. Ich verwende hierfür die integrierten PullUps(PORT_OPC_WIREDANDPULL_gc). Folgender Code wird in einem Interrupt jede Millisekunde ausgeführt: cli(); newB = (PORTC.IN & 0x02
oldB xorA xorB 0 0 0 0 jetzt wechselt der Encoder zu 1 0 wie gehts weiter? Dann wechselt er zu 1 1 und weiter gehts zu 0 1 und 0 0 für diese Reihenfolge (ich hoffe ich hab mich da jetzt nicht vertan) spielst du die entsprechenden
-
Thread
Einlesen eines Bits am ATMEGA168
auslesen geht aber mit PINC und nicht mit PORTC
Peter II schrieb im Beitrag #2522232: > auslesen geht aber mit PINC und nicht mit PORTC Das erklärt so einiges. Danke euch beiden
-
Thread
TIMER in C, AVR, Hilfe! danke!
; } else { PORTB |= (1<<0); } if(bit_is_clear (PINB,2)) { PORTC &=~(1<<0); } } }
ISR wurde in der Zwischenzeit weit genug hochgezählt und du schaltest die LED ein. Gut. Aber wie gehts weiter? Nach Abarbeitung der ISR gehts an der Stelle im Hauptprogramm weiter, an der unterbrochen wurde. Und es kommt wie es kommen muss: die Hauptschleife kommt irgendwann zur bewussten Abfrage ob
-
Thread
pic16f887 I2C Slave
keine senden. Nun habe ich den i2c Bus so void vI2CInit (void) { // Pin RC3 und RC4 vom PORTC als Eingaenge konfigurieren TRISC=(TRISC|0b00011000); // Busgeschwindigkeit einstellen SSPADD=0x06; // Adresse 0x06 // Modus setzen SSPCON=0x3E; // Slave mode, Takt freigeben,
Hallo nochmals okey so wies aussieht muss ich das ACK selbst durchführen. Weis einer wie? oder gehts auch anders? stehe grad auf dem schlauch
-
Thread
Atmega8L: Warum geht Timer0 Interrupt nicht?
Hallo zusammen, ich habe 2 Testprogramme für euch. Das erste läuft wie erwartet. Hier wird TIMER0_OVF über TIFR abgefragt. Beim zweiten wird in der ISR toggle=1 gesetzt, als Indikator für eine ausgeführte ISR. Makefile ist in beiden Fällen gleich und setzt atmega8 als uC. Hardware Plattform STK500. Meine Rechereche hat einen sehr ähnlichen Fall herausgebracht. http://www.mikrocontroller.net/topic/174886 Leider wurde dem Fragesteller dort nicht geholfen. Alle Quellen nachfolgend gelistet. Zuerst Makefile (Cygwin Umgebung) [pre] gcc = avr-gcc objcopy = avr-objcopy inc =
-
Thread
Frage zur Siebensegmentanzeige
Hallo Leute, ich melde mich nochmal heute, bloß jetzt geht es um eine Siebensegmentanzeige, die ich in mein Projekt miteinbinden will. Kurze Erläuterung zur Arbeitsweise der Siebensegmentanzeige: Die Siebensegmentanzeige wird über ein Multiplexverfahren
// Speicher für aktuelle Ziffer PORTD = 0x0FF; // Segmente aus PORTC = (PORTC&0xF0)| (1<<digit); // nächste Ziffer aktivieren PORTD = segmenttab[ziffernspeicher[digit]]; // Segmente setzen digit++; // für nächste Stelle
-
Thread
Fehler in Schaltung
delay eingefügt, eventuel klappt es ja besser wenn die anderen Ports ausgeschaltet sind mein code geht jetzt jeden Port einmal seperat durch. #include <avr/io.h> #include <util/delay.h> int main() { DDRA = 0x1F; DDRB = 0x1F; DDRC = 0x1F; while(1) { PORTC = 0x00; PORTA = 0x1f; _delay_ms(100); PORTA = 0x00; PORTB = 0x1f; _delay_ms(100); PORTB = 0x00; PORTC = 0x1f; _delay_ms(100); } return 0; }
-
Thread
IIC-Kommunikation friert ein
funktionierte auch alles ganz gut, 1x kann ich die Temperatur korrekt einlesen, auch die Ausgabe am Display geht. Wiederholt sich nun aber die Schleife zum ersten Mal (nach ca. 5 Sekunden Pause) treten schier willkürlich folgende Ergebnisse auf: - der Wert wird weitere ein- oder zweimal eingelesen, danach
auch alles ganz gut, 1x kann ich die Temperatur > korrekt einlesen, auch die Ausgabe am Display geht. > > Wiederholt sich nun aber die Schleife zum ersten Mal (nach ca. 5 > Sekunden Pause) treten schier willkürlich folgende Ergebnisse auf: > - der Wert wird weitere ein- oder zweimal eingelesen
-
Thread
Probleme mit neuer USART-Konfiguration
Hallo, es scheint jetzt wirklich zu gehen.;-) Danke! Es geht sogar mit dem int.OSC und ohne das 'UL'(ich werd es aber stets verwenden^^). Lebenswichtig sind wohl nur SUT_CKSEL, CLKDIV8 und natürlich die richtige Verwendung von F_CPU^^. Habt DANK! Vielen DANK
Peter R. schrieb im Beitrag #2505884: > Es geht sogar mit dem int.OSC und ohne das 'UL'(ich werd es aber stets > verwenden^^). Lebenswichtig sind wohl nur SUT_CKSEL, CLKDIV8 und > natürlich die richtige Verwendung von F_CPU^^ Na bitte... Fast
-
Thread
LED zum Blinken bringen
Besten hinbekomme? Die Funktionen sehen wie folgt aus: void kurz() { // turn on LED PORTC |= (1<<PC4); delay_ms(35); // turn off LED PORTC &= ~(1<<PC4); delay_ms(400); } void lang() { // turn on LED PORTC |= (1<<PC4); delay_ms(700); // turn
umgestellt. Nun ist das Ergebnis besser. Jetzt kann ich zwischen lang und kurz unterscheiden. Jetzt gehts ans verfeinern. Danke für deine Hilfe.
-
Thread
Übersetzen von Basic zu C
bewerkstelligt. Dig_fs Alias Pina.6 Pwm_al Alias Ocr1al Pwm_bl Alias Ocr1bl Cw_ccw_a Alias Portc.5 Cw_ccw_b Alias Portc.4 Was ja eigentlich nichts anderes ist wie einen Pointer auf dieses Register/Pin zu legen. Ich frag mich jetzt wie ich in C das am geschicktesten umsetzten kann? Im Programmcode
gestalten und zu schauen wa sich in C tun muss um den gewünschten Effekt zu erhalten. 1:1 kopieren geht nicht, da noch ne Menge Bascom kram mit drin rum hängt, was ich eh selber implementieren muss ^^
-
Thread
TIMER bei avr Atmega8+MKII in C
rote led) dauerhaft ausschalten, bis die lichtschranke wieder zu lange unterbrochen wird. derzeit geht sie nur aus, wenn der taster betätigt ist. hier mal mein kleines programm, dass ich bis jetzt zusammen habe: #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 1000000UL ISR( TIMER0
; } else { PORTB |= (1<<0); } if(bit_is_clear (PINB,2)) { PORTC &=~(1<<0); } } }
-
Thread
Drehrichtungsumkehr.Microcontroller Programm funzt nicht richtig.
einen Schritt vorwärts tun soll // na dann machen wir den mal if( StepDir == TO_RIGHT ) PORTC |= ( 1 << PC2 ); else PORTC |= ( 1 << PC3 ); _delay_ms( 8 ); PORTC &= ~( (1 << PC3) | (1 << PC2) ); } int main( void ) { DDRC = 0xFF; // PORTC als Ausgang for
_______________ void MakeStep( uint8_t MotorDir ) { if( MotorDir == TO_RIGHT ) { PORTC |= ( 1 << PC1 ); _delay_ms(60); PORTC &=~ (1 << PC1); _delay_ms(60); } else { PORTC |= ( 1 << PC2 ); _delay_ms(60); PORTC &=~ (1<<PC2); _delay_ms
-
Thread
JTAG ICE 3 an Atmega 32
Das JTAGICE muss natürlich an die JTAG-Anschlüsse. Und die befinden sich an PORTC (PC2 bis PC5). Außerdem muss der Reset noch verdrahtet werden. Gruß Marius
Bei ISP geht dann auch das debugen ?
-
Thread
DDS normal ?
Ulrich wird es haben, der hat den MEGA Jesper schon fertig :O)) da geht noch was ...
ich lese noch... :0) STOP das von Datum: 20.01.2012 22:31 geht nicht wirklich ... und suche noch.
-
Thread
timer problem atmega8
OVF_vect) { timer++; if(state==1) { if(timer<<insp) { PORTC |= (1<<0); } if((timer<<exsp) && (timer>=insp)) { PORTC &= ~(1<<0); } if(timer==exsp) { act++; timer=0; if(act==max)
OVF_vect) { timer++; if(state==1) { if(timer<<insp) { PORTC |= (1<<0); } if((timer<<exsp) && (timer>=insp)) { PORTC &= ~(1<<0); } if(timer==exsp) { act++; timer=0; if(act==max)
-
Thread
Eingänge auf LCD anzeigen
6,1); lcd_string(" "); PCB1_M = 0; goto PCB1_fix; mit dem Bit 0 geht das, nur mit dem bit 1 nicht mehr. kann es sein das ich mit der ersten Maske mir mein D_PC (Daten_PortC, wird später über TWI gesendet) versaue und das deshalb nicht mehr mit dem Bit 1 geht? weiter
über Bord werfen und anfangen in Schleifen zu denken, anstelle von "mach das und wenn du fertig bist gehts dort und dort weiter".
-
Thread
ADC Messwert springt
unter Sado/Maso. Naja es gibt auch Leute die von Hamburg nach München zu Fuß gehen, nur weil es geht statt zu fahren......
Eingangspin abgenommen wird und die andere Seite wahrscheinlich direkt auf den Input MUX des ADCs geht ( Bild 90 ). Somit erklärt sich ja auch sein Problem, da er ja den kompletten PortC als Ausgang konfiguriert hat und diesen auch noch regelmäßig invertiert, liest er natürlich das PINC0 immer mit
-
Thread
Problem mit Interruptvektoren ATmega2560
while(1) { /*Endlosschleife, die sonstigen Code enthält */ sei(); PORTC = LEDCounter/2; } } [/c] Verwende ich nur PCINT0, funktioniert alles wie gehabt, möchte ich PCINT1 hinzufügen, so gibt's Probleme. Es wird auch auf PIN B1 ein Interrupt ausgelöst, jedoch
zugeordneten Pin ausgeführt werden. Scheint ja nicht so die Hammer-Idee > gewesen zu sein :) Geht schon, aber du darfst die beiden Pins nicht an ein und demselben Port sitzen haben, damit sie eben /nicht/ den gleichen Interrupt triggern. Oder aber, du benutzt "richtige" Externinterrupts statt
-
Thread
Taktfrequenz im AVR Studio5 angeben
DDB6); //Port Pin DC6 zum Ausgang machen int n =0; while(1) { SETBIT(PORTC, PORTC6); for (n=0; n<10; n++) _delay_ms(100); CLEARBIT(PORTC, PORTC6); for (n=0; n<10; n++) _delay_ms(100); } return(0); } [/c] Die LED am Ausgang sollte
mal mit dem AVRISP MKII nachgeschaut. Es war so. Zurücksetzten konnte ich sie aber nicht. Das geht wohl nur, wenn man gleichzeitig auf den Bootloader verzichtet. Na, ja. Wieder etwas dazugelernt und einen regnerischen Nachmittag erfolgreich verbracht.
-
Thread
7 Segment Anzeige lässt sich nicht steuern
ausführe, bleiben die PINs trotzdem an: DDRB = 0; DDRC = 0; DDRD = 0; PORTB = 0xff; PORTC = 0xff; PORTD = 0xff; Jetzt dürfte ja eigentlich kein Strom fließen. Einen Widerstand habe ich vor VCC geklemmt, weil ich vorhabe immer nur ein Segment gleichzeitig leuchten zu lassen.
war wohl der Programmer irgendwie falsch eingestellt (habe alles noch einmal resettet und jetzt geht es! Danke für eure Hilfe!
-
Thread
Problem mit Tasterentprellung
Peter übernommen, aber die Funktion 'Short+Repeat' funktioniert einfach NICHT wirklich. Manchmal geht's, aber meistens eher NICHT. Mit 'Short+Repeat' bekomm ich nach jedem 'Repeat' auch ein 'Short'-Signal und mit 'Short+LongR+RepeatL'(s. vorheriger Beitrag) kommt das 'Short'-Signal nur ab und an
// Konfiguration der I/Os // Taster an Pin23: DDRC &= ~(1<<PC0); // Pin PC0 als Eingang PORTC |= (1<<PC0); // Aktivierung des internen Pull-Up an PC0 DDRB = 0xFF; DDRD = 0xFF; /***************************************************************************************************/
-
Thread
ADconversion
ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // Eingangspin aus PortC waehlen // pin ist der Index von PC0 (ADC0) bis PC7 (ADC7) ADMUX |= (1<<MUX2); //MUX0..2 =100->ADC4 //(1<<MUX0) | (1<<MUX1) | // externe Referenzspannung nutzen (an Pin 'Aref
Nee so geht es nicht. Das ist ein komplettes main programm mit initialisierung des Analogeingangs. Schau mal hier, da gibt es in Beispiel: http://www.mikrocontroller.net/articles/Absolute_Beginner-AVR_Steckbrettprojekte
-
Thread
Messschieber mit µc auslesen
Scientific , Digits = 3 'Einstellen der Variable für den seriellen Messwert Config Portc.0 = Input 'Takt-Eingang X-Achse Config Portc.1 = Input 'Daten-Eingang X-Achse Config Portc.2 = Input 'Takt-Eingang Y-Achse Config Portc.3 = Input 'Daten-Eingang Y-Achse Config Portc.4 = Input 'Takt-Eingang Z-Achse Config Portc.5 = Input
-
Thread
DS18S20 - Bascom - Kommstelle auslesen
dass ich die Nachkommastelle bekomme? Diese hätte ich jedoch in einer zusätlichen Variable, wenn das geht. Danke schonmal für eure Hilfe.
genau ist. Das eine ist die Auflösung, das andere die Genauigkeit. Eine uhr die 8 Minuten falsch geht, geht 8 Minuten falsch. Egal ob sie diese Uhrzeit dann auch noch auf die Hunderstelsekunde anzeigt oder nicht. Aber leider leben wir in einer Zeit, in der man gerne durch möglichst viele Kommastellen
-
Thread
Syntax Frage in C
dann ein Array anlegen. struct leds{ bool kathode1; bool kathode2; bool anode4; int portc; } struct leds x[5]; Und dann die jeweiligen x Einträge einmalig initialisieren. (das kann auch in einer extra Init Funktion geschehen. x[0].kathode1 = 0; ... x[0].portc = 0x00; ... x[5].kathode1 = 1; ... x[5].portc = 0x00; Anschließend einfach eine Funktion setLed(leds x) aufrufen, die das jeweilige Struct als Parameter aufnimmt. Aufgruf geht dann mit setLed(*x[4]); Siehe auch: http://en.wikipedia.org
-
Thread
Servo-Signal auslesen mit Atmega 8 - wo liegt der Fehler?
doch mein Problem ist, dass dieser Wert sowohl bei minimaler als auch bei maximaler Knüppelstellung PORTC.5 einschaltet, bei einem um 1 höheren Rc_value geht bei keiner Knüppelstellung mehr der Port an. Meines Wissens hat ein Servosignal in den zwei Endstellungen einen Unterschied von ~1 Mhz, deswegen
mein Problem ist, dass dieser Wert sowohl bei minimaler als auch > bei maximaler Knüppelstellung PORTC.5 einschaltet, bei einem um 1 > höheren Rc_value geht bei keiner Knüppelstellung mehr der Port an. Kann nicht sein, denn grösser als 32767 kann ein Integer nicht werden. Das If Then kann nie eintreffen
-
Thread
µC-PCC, PC-Programm zum steuern von Mikrocontroller
Registrierung Herunterladen. > www.valentin-diring.de/uC-PCC/uC-PCC.zip Über den Facebook-Button geht es noch schneller. ------------------- > Autor: Klaus Wachtler (mfgkw) > Datum: 01.01.2012 23:51 > Es wäre auch nett, wenn dabei stehen würde, was in etwa dabei abläuft. Bitte das YouTube-Video
Wenn es im Prinzip nur um Register/Ports lesen/schreiben geht, vor Jahren hab ich mir das mal aufgebaut: http://www.recursion.jp/avrcdc/cdc-io.html Über USB-CDC werden einfach Textbefehle wie: [c]FF PORTC =[/c] (setze PORTC mit FF) bzw. [c]PINB ?[/
-
Thread
Protierung von mega auf xmega
C Programm von einen Mega32 auf einen XMega Bisher wurden die Ausgänge so #define ad7795_cs PORTC.4 definiert. Beim XMega geht es so ja nicht. Gibt es eine Lösung ohne das ich den Kompletten Code überarbeiten muss? Grüße Jörg
Jörg B. schrieb im Beitrag #2478725: > #define ad7795_cs PORTC.4 Welcher Compiler isn das? Der GCC unterstützt diese Schreibweise meines Wissens nicht (gehört nicht zum Standard), es gibt aber ein "magisches" struct was diese Schreibweise doch möglich macht.
-
Thread
Atmega16 UART empfängt nicht - senden klappt
Wie kann ich denn am besten testen, ob sich was am Eingang tut? Ich habe leider kein Oszilloskop. Geht das mit einem Digitalmultimeter? Marco
wie hier: http://www.mikrocontroller.net/topic/167829#1604209 ziemlich ärgerlich, aber jetzt gehts ja :)
-
Thread
Verständnisprobleme Datenblatt BMA020 und SPI
interrupt.h> #include <avr/delay.h> int main(void) { while(1) { DDRC = 0xFF; // PORTC als Ausgang DDRB = 0xEF; // PORTB alle Ausgang, außer MISO PORTB = 0xFF; // PORTB high SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<CPOL)|(1<<CPHA); PORTB &= ~(1<<PB2); // Wähle
befehl Sende dummy Byte while(!(SPSR & (1<<SPIF))); SPSR = 0x00; _delay_ms(20); PORTC = SPDR; } }
-
Thread
Leidiges Thema: LCD - Problem am Port C
allzuviel erkennen weil keine Labels gesetzt sind. Das Problem erscheint mir zu sein, dass Du PORTC und PORTD gemischt hast. Also E von PORTC kommt, RS aber von PORTD. Der Code benutzt aber nur einen Port. #define LCD_PORT PORTC #define LCD_DDR DDRC #define LCD_RS PD4 #define
umverdrahten die beste Lösung. Jedoch ist das umschreiben der Software etwas leichter :-) und geht auch schneller. Viel Spaß und Glück noch. Lass uns doch wissen ob dann alles geklappt hat.
-
Thread
font16x16 mit Locate?
einen 240x128 mit einen T6963 Chip die Schrift größer dar zu stellen mit font16x16, weil wie ich sehe geht das bei der Locate Anweisung wohl nicht, nur mit Lcdat, oder sehe ich das falsch ? Gruß Thomas $regfile = "m16def.dat" $crystal = 8000000 $framesize = 128 $swstack = 128 $hwstack = 128
include "font16x16.font" Dim X As Byte Dim Y As Byte Config Graphlcd = 240 * 128 , Dataport = Portc , Controlport = Portd , Ce = 3 , Cd = 0 , Wr = 2 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6 Cls Cursor Off Do Locate 2 , 1 Setfont Font16x16 Lcd "Test" Locate 2 , 1 : Lcd "0123456789"
-
Thread
Anfängerprobleme C Programm
sauber wäre es, wenn der Leser sieht was Du machst: [c] <avr/io.h> int main(void) { PORTC |= _BV(PC0); //der leser sieht sofort: pullup-on an PC0 'on' DDRC &= ~_BV(PC0); //der leser sieht sofort: PC0 ist Eingabe DDRD = 0xff; while ( ((~PINC) & _BV(PC0)) == _BV(PC0) ) // Taster
Martin B. schrieb im Beitrag #2473441: > [c]#include <avr/io.h> > #include <avr/iom8.h> [/c] Das geht aber auch nur gut weil es include-guards gibt! 2. Zeile ersatzlos streichen bitte.
-
Thread
Mehrere PWM-Kanäle mit ATXmega
in die Register geschrieben. Folgende Initialisierung habe ich: /* Initialize PWM outputs on PORTC and PORTD. PWM frequency = 730Hz resolution = 8bit */ TCC0.CTRLA = TC_CLKSEL_DIV64_gc; TCC0.CTRLB = TC_WGMODE_SS_gc | TC0_CCAEN_bm | TC0_CCBEN_bm; TCC0.CTRLC = 0; TCC0.CTRLD
Resultat. Sonst noch jemand eine Idee? Schreibe ich nur ein Register in der gleichen Routine, geht es merkwürdigerweise. Grüße Christop
-
Thread
ATmga 16. LED Qube. Zu wenig spannung
to two rows of leds. // The upper 4 bits is one row, the lower 4 bits are one row. #define GRID1 PORTC #define GRID2 PORTA void ioinit (void); // initiate IO on the AVR void bootmsg (void); // blink some leds to indicate boot or reboot void delay_ms (uint16_t x); // delay function used throughout
So. Schaltplan. Und hier formatiert :-). Sorry, hatte nicht gesehen dass das geht. [c] // ############################################ // // 4x4x4 LED Cube project // By Christian Moen 2008 // chr@syntaks.org // Lisence: GPL // // ###################################
-
Thread
AM oder FM Fernbedinung Rohrmotor -> bild
CALL LADR_0x0029 CALL LADR_0x0029 DECFSZ LRAM_0x36,F GOTO LADR_0x0108 BCF PORTC,5 ; $ PORTC - TRISC BSF PORTC,0 ; $ PORTC - TRISC RETURN LADR_0x0108 MOVF LRAM_0x27,W MOVWF LRAM_0x35 MOVLW 0x00 MOVWF LRAM_0x28 CALL LADR_0x0370
BCF PORTC,5 ; $ PORTC - TRISC CALL LADR_0x003E GOTO LADR_0x011E LADR_0x012D CALL LADR_0x0043 BCF PORTC,5 ; $ PORTC - TRISC CALL LADR_0x0032 GOTO LADR_0x011E