-
Thread
Bedeutung der Warnung "suggest parentheses around assignment used as truth value [-Wparentheses]"
mode==HIGH){PORTB |= (1<<port_pin[1]);} if (mode=LOW){PORTB &= ~(1<<port_pin[1]);} break; case portc: if (mode==HIGH){PORTC |= (1<<port_pin[1]);} if (mode=LOW){PORTC &= ~(1<<port_pin[1]);} break; case portd: if (mode==HIGH){PORTD |= (1<<port_pin[1]);} if (mode=LOW){PORTD &= ~(1<<port_pin[1]);
Warum diese Umstände? Es geht viel einfacher und lesbarer mit meiner sbit.h: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=835728#835728 Peter
-
Thread
Problem mit Bascom
Portx ist das Gleiche. Wenn du einzelne Pins von einem Port auf Input und Output stellen willst, das geht dann mit ddrx.. So müsste es gehen: Config Porta = Input Config Portc = Output Config Portd = Output Set Porta.0 'internen Pullup einschalten Do If Pina.0 = 1 Then Portd.0 = 1 Portc.0 = 1 Else Portc.0 = 0 Portd.0 = 0 End If Loop Gruß Klaus
-
Thread
avr128 komparator
die LEDs sind am PORTC des avrs angeschlossen, die togglen öfters als sich das ADO Signal ändert. Das AVRStudio hat ein Debuger Modul, wo ich der Zustand aller REgister sehen kann, daher weiß ich wann ADO sein Zustand ändert
also ich habe so in main gemacht: while(1){ if(ACSR & (1<<ACO)) PORTC = 7; else PORTC = 0; } und jetzt aber nur ACI0 angeschlossen, dass ACI1 is gar nicht an. ( Ich vermute, dass an den negativen Eingang 0V liegt). Und jetzt sehe ich, dass ACO ist bei ab 70mV
-
Thread
PIC18, bekomm I2C nicht ordentlich ans laufen
Sprich die Hardware ist ok. Wenn ich dann aber den PIC resette und mein Programm drin ist, dann gehts nicht. Nochmal genauer: 1. Fremdes Programm rein: funktioniert 2. Mein Prog rein: funktioniert auch 3. Strom aus oder Erase 4. Strom an: Geht nicht 5. Mein Prog nochmal rein: Geht nicht
Programm ist für CCS geschrieben, kenn ich nicht, hab ich allerdings nach Recherche alles so gut es geht übernommen. D/A Wandler ist MAX5812L Im obigen Beispiel sollten eigentlich 5V rauskommen. Das Einzige was ich im anderen Programm nicht versteh ist: #byte portc = 0xF82 Was bedeutet das? Aus
-
Thread
Vorstellung und erstes Projekt
drin, die ich weder im Sinne von Kombinatorik noch im Sinne von sequentiell einordnen kann. Konkret geht es darum, dass zwei Signale sich gegenseitig blockieren, je nachdem welches zuerst anliegt. Also das bloße Anliegen von Signal A geht weiter in die Schaltung, während ein anschließend auftretendes Signal
set_Pin(unsigned char port, unsigned char pin, bool state) { ... } Der Aufruf wäre dann z.B für PORTC, Pin 7 eine 1 schreiben: set_Pin(PORTC, 7, 1); Gruß
-
Thread
Lauflicht mit 28! Led´s
TIMER0_OVF_vect) { unsigned char i; unsigned char Mask; unsigned char PortA = 0, PortB = 0, PortC = 0, PortD = 0; PWMCounter++; if( PWMCounter == 101 ) PWMCounter = 1; // die ersten 8 PWM Kanäle sind auf Port A Mask = 0x01; for( i = 0; i < 8; ++i ) { if( PWMCounter
sind auf Port C Mask = 0x01; for( ; i < 24; ++i ) { if( PWMCounter < Channel[i] ) PORTC |= Mask; Mask = Mask << 1; } PORTC = PortC; // und schlussendlich: die PWM Kanäle 24 bis 27 sind auf Port D Mask = 0x01; for( ; i < 28; ++i ) { if( PWMCounter < Channel[i
-
Thread
JTAG lässt sich nicht deaktivieren (ATMega32)
16MHz Quarz. Geflasht wird mit ISP VCC = 5V Ich beobachte folgendes Problem: Ich möchte den PORTC vom ATMega32 als I/O verwenden. Alternativ liegt ja darüber das JTAG Interface. Im Code ist der PORTC als Ausgang deklariert, an diesem Port hängen jeweils 8 LEDs gegen Masse. D.h. JTAG Fuse Bit
µC nicht mehr über mein mySmartUSBlight dongle programmierbar, oder? Oder geht dieses Interface immer, da ja beim Flashen der Reset Pin auf low gezogen wird und dadurch der µC immer über die ISP Schnittstelle programmierbar ist? Ich habe das zwar noch nciht probiert, aber würde
-
Thread
Gleichzeitige Ein und Auslesung mit UART
jetzt so umstrukturiert: while((PINC&ANF)==0) // Wenn Taster (ANF) gedrückt... { PORTC = ROT; // Rote LED an ... } @Wofram: Gibt es den einen bestimmten Code um diese Echo auszuführen? Und das geht wirklich ohne das zurücksenden des ATmega128
Wenn ich mich recht entsinne, geht es auch nur um ein Echo. MW
-
Thread
LED's Blinken anstatt zu leuchten
Leider leuchten die LED's nicht sondern sie blinken nur. Ich habe mir mal einen einzigen Pink an PORTC am Oszilloskop angesehn. Es sieht aus wie ein Rechtecksignal. Ich verwende einen ATmega162. [c] int main( void ) { DDRC = 0xFF; while ( 1 ) { PORTC = 0x00; } return 0;
da ich da selbst keine Antwort drauf weiß ^^ Ich würde aber trotzdem mal versuchen ob es besser geht wenn du die Sache so schreibst: [c] int main( void ) { DDRC = 0xFF; PORTC = 0x00; while (1); } [/c] Und noch eine Frage was passiert wenn der Controler das return = 0; erreicht?
-
Thread
LM75 mit Mega88PA auslesen
Hi nochmal, hab grad gesehen du benutzt die lib von Peter Fleury, da gehts dann etwas anders: [c] #define LM75 0x90 // Device Adresse i2c_init(); // init I2C interface ret = i2c_start(LM75+I2C_WRITE);
. Das dürfte > eigentlich nicht sein, oder? Willst du da was anderes sehen? Mit nem Messgerät geht vieles, aber die Bits siehst du nicht ;)
-
Thread
DCF 77 Uhr mit CodeVision
Eeine andere PORT benutzen ist hier nicht im frage, weil das problem lag ja darin das ich das LCD PORTC NICHT mehr benötigde. Das programm lief ja WEIL da ein LCD display an PORTC an lag. Der LCD ansluss WAHR der absluss wiederstand den ich rauszog. War doch net wen du das mahl versugen kontest. Auw
Ich habe auch den Code hier runtergeladen doch der geht nicht und ich habe auch keinen blassen schimmer wie man ihm anpassen kann. thx
-
Thread
Atmega88 reagiert nicht auf seriellen Eingang
Daher ist es wichtig, dass du erst mal feststellst, ob die USART grundsätzlich funktioniert. Und das geht am einfachsten, wenn der µC sendet und der PC empfängt. Immer so wenig Unbekannte wie möglich und ungetestete Systeme die Fehler enthalten können im System haben!
damit ging es nicht. In dieser Version wird das UCSR0A Register in Ruhe gelassen so wie es ist, damit geht es. Muss wohl mal genauer nachlesen. Das Datenblatt das ich mir von Reichelt geladen hatte geht nur bis Seite 35, muss wohl mal ein komplettes Datenblatt suchen... [c] /* * DruckerSteuerung.c
-
Thread
Pinabfrage ATMEGA
{ PORTD ^= (1<<PD6); //Toggel Augang PD6 if (!(PORTC & (PINC0))) //Pinabfrage PC0 = 0 { PORTD &= ~(1<<PD7); //LED einschalten } if (PORTC & (PINC0)) //Pinabfrage PC0 = 1 { PORTD |= (1<<PD7); //LED ausschalten
> if (!(PORTC & (PINC0))) //Pinabfrage PC0 = 0 > if (PORTC & (PINC0)) //Pinabfrage PC0 = 1 PIN - Abfrage!
-
Thread
Stoppuhr-Anfängerprojekt
Malerlehrling. Schon gar nicht ohne, wie du jetzt schon mit Pointern um dich wirfst ;-) : : [c] PORTC = anzwert[zeiger[a]]; // Daten an PORTC [/c] : : weiter so.
ich von zeiger[0-5] nurnoch nen String oder so machen. also so war meine grobe Überlegung. wie das geht weiß ich aber noch nicht... ;)
-
Thread
ATMega anfänger Probleme
allen AVRs ein Pull-up Widerstand eingebaut, den man bei Bedarf zuschalten kann. (Pin als Eingang mit PORTC.X = 1). Zum Problem : bei Megas muss man das JTAG abschalten, um den kompletten PORTC verwenden zu können. (war auch mein erstes AVR-Problem ;)
hilfreich Foren sind! ich hatte genau das selbe problem. hab dann das fuse bit gelöscht und nu geht es.. da soll soll erstmal einer draufkommen... im datenblatt steht zwar dass des net geht wenn JATG enabled ist, aber man geht ja nicht davon aus, dass diesen bit dafaultmäßig gesetzt ist und sucht
-
Thread
Taster und LED
{ i = 0; PORTC &= ~(1 << PC5); _delay_ms(250); } } } return 0; } Gruß, Tobi
Danke für die super schnellen Antworten! >>> PORTC &= ~(1 << PC5); >>Vermutlich liegt die mit einem Vorwiderstand gegen +5V? >>Dann schaltet eine '0' am Port die LED ein. Nun geht es... Danke, hätte ich auch selber drauf kommen können. Verwende
-
Thread
LCD Initialisierungsproblem
Hallo nochmal! Also es geht immer noch nicht, hab gedacht ich hätt den fehler gefunden weil der Analogcomperator an war, hab auch vorsichtshalber mal RW auf GND gelegt und E und RS an PortC angeschlossen. An Dennis: Also den
PortB hängen, siehe erstes Post und dann hab ich RW auf Grund + großzügige Zeiten und RS und E an PortC gepackt, weil PortB z.T. für den AnalogComperator benötigt wurde.
-
Thread
Problem mit Standard-LCD an AVR
Standard-LCDs. Ich habe den Assembler-Code aus dem Tutorial für WinAVR umgeschrieben. Seinerzeit auf PortC hat das auch wunderbar funktioniert. Jetzt wollte ich auf PortD umstellen, da ich PortC anderweitig benötige (A/D-Wandlung) und in PortD die beiden Nibble vertauscht und E an Pin 3 und RS an Pin 2
Initialisieren des 4-Bit Modus auch. Du musst die RS und E Bits in den Binaerzahlen richtig setzen dann gehts bestimmt. cu Tommi
-
Thread
uart-atmega8-falsche zeichen
leider geht immer nicht. Und egal ob die Verbindung zwischen den µC und den Quarzanschlüssen steht oder nicht kommt immer die gleiche Zeichen raus.
Anleitung zu deinem STK500. Und dann solltest du falls du etwas umbaust nicht einfach "leider geht immer nicht" schreiben. Was geht nicht? Bei welcher Konfiguration geht es nicht? Was hast du versucht um es zu beheben? ...
-
Thread
Reaktives Blinklicht mit AT Mega8 und IR-Empfänger
Delay_ms (1000) ; //pause PORTB.B5 := 0x01 ; //rot aus {while PORTC.B3 <> 0x00 do // unendlich schleife start begin // if PORTC.B3 <> 0x01 then Ausgabe //else
while i <> 0 do begin i := PORTC.B3 ; i := sbit at PORTC.B3; end; Ausgabe; end; begin DDRC := 0x00 ; //port auf eingang
-
Thread
Gerade Parität berechnen
=0)||(bitcount==2)||(bitcount==4)||(bitcount==6)||(bitcount==8)){ cbi(UCSR0B,TXB8); sbi(PORTC,PC0);//switch LED off }else{ sbi(UCSR0B,TXB8); cbi(PORTC,PC0); //switch LED on } Findet jemand den Fehler? Ich sehe ihn nämlich leider nicht! Tobi
if((bitcount==0)||(bitcount==2)||(bitcount==4)||(bitcount==6)||(bitcount==8)){ diese if-Abfrage geht ein wenig kürzer: if (!(bitcount & 1)) /* bitcount gerade? */ cbi(UCSR0B,TXB8); sbi(PORTC,PC0);//switch LED off }else{ sbi(UCSR0B,TXB8); cbi(PORTC,PC0); //switch LED on } mfg
-
Thread
Atmega162 (MLF) timer interrupt will nicht, AVRstudio debugger mit mega16 funktioniert (AVR-GCC)
delay.h> #include <avr/interrupt.h> ISR(TIMER1_COMPA_vect) { //1 sec. timer cli(); PORTC = 1; sei(); } int main(void) { sei(); TIMSK = (1<<OCIE1A); //enable interrupts OCR1A=976; //1 sec. TCCR1B = (1<<CS12)|(1<<CS10)|(1<<WGM12); //CTC with prescaler 1024
obersten zeilen vergessen: Wenn kein Hardwarefehler vorliegt sollte es eigentlich funktionieren. Beim PortC solltest du aber beachten, das im Auslieferzustand des ATMega162 PC4..PC7 vom JTAG-Interface belegt sind. >DDRC=0b11111111; //sry für diese schreibweise veständlicher als >PORTC = 2; //zum
-
Thread
Led Cube Projekt
nichtmehr eingeschaltet. Hab sicherheitshalber auch den OE pin auf Masse gezogen. Aber der Spuk geht weiter. einige LED leuchten sogar dann noch wenn ich den betreffenden Transistor komplett entferne.
Config Portc = &B00000000 Config Portb = &B00000000 Config Portd = &B00000000 Dim Pause As Integer Pause = 500 Do Loop End Also laut Programm sollte alles dunkel sein. Aber der Cube sieht aus
-
Thread
Hilfe für Anfänger
ATmega32 auf einem > Board(RN-Control v1.4) des Roboternetzwerks. ... > #define LCD_PORT PORTC /**< port for the LCD lines */ ... Da drängt sich sofort die Frage auf: Hast du das JTAG Interface abgeschaltet?
JTAG per Software abschalten geht so: [c] unsigned char tmp; tmp = MCSUCSR; tmp |= (1<<JTD); MCUCSR = tmp; MCUCSR = tmp; /*MUSS 2x geschrieben werden!!*/ /* oder, falls das nicht klappt (das schreiben muss innerhalb von 4 Takten
-
Thread
Bascom Softwareinterrupts
Programm das gut Funktioniert: [code] $regfile = "m8def.dat" $crystal = 8000000 Led1 Alias Portc.4 Config Led1 = Output Led2 Alias Portd.2 Config Led2 = Output Led3 Alias Portc.5 Config Led3 = Output Led4 Alias Portd.3 Config Led4 = Output Led5 Alias Portd.0 Config Led5 = Output
So in etwa. [pre] $regfile = "m8def.dat" $crystal = 8000000 Led1 Alias Portc.4 Config Led1 = Output Led2 Alias Portd.2 Config Led2 = Output Led3 Alias Portc.5 Config Led3 = Output Led4 Alias Portd.3 Config Led4 = Output Led5 Alias Portd.0 Config Led5 = Output
-
Thread
TFT_ILI9163C mit Arduino richtig verbinden
und DDD2 identisch ist. Es fehlt dann noch PORTD |= (1<<DDD2); damit der PIN auf high geht.
);// SPSR = (1 << SPI2X); // maximale Geschwindigkeit: F_CPU / 2 _delay_ms(50); } [/c] geht es.
-
Thread
_delay_ms() Atmega8 C
1000000 #include <avr/io.h> #include <util/delay.h> void Initialisieren() { DDRC = 0xff; PORTC = 0xff; } void Status (unsigned char state) { switch (state) { case 1: PORTC = 0xff; PORTC = ~(1<<PC3); break; case 2: PORTC &= ~(1<<PC2); break; case 3: PORTC = ~(1<<PC1); break; case 4: PORTC = ~(1<<PC2); break; } } int main() { Initialisieren(); while(1) { Status(1); _delay_ms(10000);
-
Thread
befehl nach jedem 25ten Element der If Schleife
ich, ich mache es einfach mit delay, aber dadurch wird die ganze schleife verzögert. [c] PORTC |= (1 << PC5); _delay_ms(250); PORTC &= ~(1 << PC5); _delay_ms(100);[/c] also dachte ich mir, ich mache es so, dass bei jedem 25ten Element die LED angeht und nach 50 Elementen ausgeht. Aber ich weiss leider nicht, wie ich das realisieren kann. Bisher geht sie nach dem 25ten Element an, aber bleibt danach an. [c]ICR1 = 0x4E20; // Periodendauer OCR1A = 100; // High-Pegel dauer PORTC |= (1 << PC5); // LED AUS for (i = 0; i <
-
Thread
PIC18F66 Konflikt zwischen RA0 und Init CAN-Modul
TRISC = 0x08; // RC3(SCK) & RC4(SDI) as input, others as output PORTC = 0x00; // clear PORTC TRISD = 0x00; // set PORTD as output TRISE = 16; // RE4(CAN RX) as input, others as output (CAN TX
configureCAN(); // Configure CAN module Lcd_Init(); while(1) { PORTC = 0x1; Delay_ms(500); PORTC = 0x0; Delay_ms (500); for(k=0;k<4;k++) { PORTB = pin_mux[k]; // set MUX/I0 Delay_ms(1); adc_rd = ADC_Read(0); // get ADC value from
-
Thread
(Löt)jumper machen ATMega verrückt
Funktion. Also, als erstes bitte einmal im Datenblatt nachlesen wie das mit der ADC Versorgung geht. Lg.
dazwischen an Vcc, also auf jeden Fall niederohmig. Der versorgt auch > nicht nur den AD-Wandler. So geht das auf gar keinen Fall.
-
Thread
ATmega328P; Bit setzen/löschen eines Integers klappt nicht.
geht.
noch keinem die eigene Leistung erspart. Also nicht meckern... Sondern: Zeige uns, wie es besser geht!
-
Thread
Assemler PIN-Nummer an Subroutine übergeben
... toggle: ld r17,Z eor r17,r16 st Z,r17 ret [/avrasm] Geht auch mit X und Y. MfG Spess
toggle_end toggle_6: cpi r18, PORTB brne toggle_7 out PORTB, r17 rjmp toggle_end toggle_7: cpi r18, PORTC brne toggle_8 out PORTC, r17 rjmp toggle_end toggle_8: cpi r18, PORTD brne toggle_error out PORTD, r17 rjmp toggle_end toggle_error: toggle_end: ret [/avrasm]
-
Thread
8-Bittimer und Interrupts :(
1MHZ laufen lasse... die leds hängen an PORTC 0-3 das original beispiel kommt aus dem gcc tutorial. allerdings funktionierte das nicht da einige bezeichnungen und register scheinbar falsch waren. erste frage: wenn der zähler 255 erreicht
delay.h> volatile int zahler, sek; main() { //Timer 0 konfigurieren DDRC = 0x0F; //definiert portC ping 0-3 als ausgang PORTC = 0x0F; //setzt die ausgänge 0-3 vom port C auf logisch 0 TCCR0 = (1<<CS00) | (1<<CS02); //1024er prescaler TIMSK|=(1<<TOIE0); //timer overflow interrupt
-
Thread
Frage zu dieser SPI Kommunikation mit einen ALTIMETER Sensor
mit einer Clock Frequenz von 500KHZ. So sieht meine SPI INIT aus. #define alt_disable() PORTC &= ~(1<<1); #define alt_enable() PORTC |= (1<<1); void SPI_alt_on() { DDRB &=~(1<<SPI_DI); DDRB |= (1<<SPI_Clock); DDRB |= (1<<SPI_DO); DDRC |= (1<<altcs
Levelshifter zu benutzen der die CS Leitung an den OE Pin verbindet und am Ausgang des LEVELSHIFTERS geht es zu MISO des AVR und am EINGANG geht es zum Sensor. Wenn der PIN CS des AVR auf Height geht geht der OE pin auf Masse und der LEVELSHIFTER ist an diesen Port aktiv.Wenn der CS Pin auf Low geht
-
Thread
ADC 10bit auslesen
die Frage: Wie krieg ich den inhalt von ADCL auf die zwei PINS? Bis jetzt habe ich einfach (ADCH = PORTC) benutzt. Schon mal danke für die Antworten die hoffentlich kommen. mfg peter
und PIN7 zum DA-Wandler dazu >schalten. Zum Glück willst du die unteren Bits damit umschalten. PORTC und PORTD können nicht gleichzeitig gesetzt werden. Es geht zwar relativ schnell, aber beim umschalten der unteren Bits wird es zu so was wie Umschaltrauschen kommen. Ein kleiner Kondensator um
-
Thread
Problem mit einfachem Taster
simulieren, indem ich vorerst den PIN mit Masse verbinde. Schalter sollen an die Pins 0, 1 und 2 von PORTC kommen. Ich verwende folgende selbstgeschrieben Routinen: void initPortCin() { DDRC &= ~(_BV(0)|_BV(1)|_BV(2)); //PortC als Eingang PORTC |= _BV(0)|_BV(1)|_BV(2); //PullUp Widerstände
Sorry, Nachtrag: Ich erwarte, dass alle High sind weil ich jetzt setze: DDRC=0x00; PORTC=0xFF;
-
Thread
Große 7-Segment Anzeige
@ Falk, wieso der Himweis auf die Formate, gehts um den Webspace oder worum ?
rumm und teile die Steuerbits auf mehrere Ports auf. Z.B. kannst du PD0/1 durch PB0/1 ersetzen. Da geht ratz fatz. MfG Falk
-
Thread
UART empfangen funktioniert nicht
1<<UCSZ00) ; } int main(void){ DDRD &= ~(1<<0); DDRC = (1<<3)|(1<<4); PORTC = (1<<3)|(1<<4); PORTD &= ~(1<<0); char led_on=0; inti_uart(); while (!(UCSR0A & (1<<RXC0))) // wartet bis Zeichen verfügbar ist ; PORTC ^= (1<<3); led_on = UDR0; if (led_on
Danke aber bis dahin kommt das Programm garnicht, denn die Prüfled nach der Abfrage geht nicht an. Woran kann es liegen?
-
Thread
ATMega16 und 4Servos
angefangen und nach vielem Probieren und Ueberlegen nicht herausgefunden, warum mein Timer nicht geht?! warscheinlich ists ein Trivialikus den ich ueberseh. Die LEDs an PortC tun gar nix; eigentlich sollten eines 1s an, und danach 1s aus sein. Hier der Code: #include <avr/io.h> #include <inttypes.h
SETBIT(TIMSK, OCIE1A); //other initialization stuff counter = 0; DDRC = 0XFF; PORTC = 0x00; sei(); timer16_load(32000); //load 32ms in den Timer for(;;) { if (counter>=31) //31*32ms = 992ms ~= 1s SETBIT(PORTC,PC3); else CLEARBIT(PORTC,PC2); if (counter
-
Thread
Timer_Anfängerproblem
hab ich im Forum entdeckt.... ************************************************************** PORTC ^= 0xff; Da schalte ich einfach den Ausgang vom PORTC um. Wenn an einem Pin bisher eine 0 war, dann wird eine 1 daraus und umgekehrt. Eine angeschlossene LED wird also entweder ein oder aus geschaltet
So jetzt gehts in den Osterurlaub, vorher noch einkaufen.(seufts) Tschüs und schöne Ostern.
-
Thread
16x2 LCD Langsamer Displayaufbau
Perfekt, das funktioniert sogar mit führenden Nullen: >sprintf(buffer, "%02d", ADCvalue); Das geht auch mit führenden Leerzeichen sprintf(buffer, "% 2d", ADCvalue);
nimmt mir die Rechung incl der NOP-Schleife ab und macht, was es verspricht, wenn man weiß, wie es geht. Siehe oben.
-
Thread
Software-PWM stockt bei unpassender Updatefrequenz
COMPB-ISR etwas verkürze indem ich z.b. die Negationen bei PORTB &= ~ptr_PORTB_isr[pwm_cycle]; PORTC &= ~ptr_PORTC_isr[pwm_cycle]; PORTD &= ~ptr_PORTD_isr[pwm_cycle]; in die pwm_update Funktion auslagere. Erkennt da jemand einen Zusammenhang? lg PoWl
_COMPB_vect) { pwm_cycle++; PORTB &= ~ptr_PORTB_isr[pwm_cycle]; PORTC &= ~ptr_PORTC_isr[pwm_cycle]; PORTD &= ~ptr_PORTD_isr[pwm_cycle]; if(ptr_timing_isr[pwm_cycle] != 0) { OCR1B = ptr_timing_isr[pwm_cycle]; } else if(pwm_change) // <-- Syncronisation
-
Thread
DS1820, DS18B20 in C
XTAL 3686400 Habe Pin1 (GND) und Pin3 ( Vdd ) gebrückt und zusammen an GND angeschlossen. Pin2 geht an PC6 und via 4,7kOhm an VTG (+5V) Code hab ich natürlich entsprechend angepasst: #ifndef W1_PIN #define W1_PIN PC6 #define W1_IN PINC #define W1_OUT PORTC #define W1_DDR DDRC #endif
den angeschlossen hast. Und wie die entsprechenden Anpassungen im Code bei dir aussehen. Ganz ohne geht's ja nicht.
-
Thread
DAC LTC1257 / Probleme mit der Ansteuerung
---------------------------------- // Digital Analog Wandler Initialisieren #define DACOUT PORTC #define DACIN PORTC #define DACLOAD(LEVEL) DACOUT = (LEVEL) ? (DACIN & ~_BV(PC0)):(DACIN | _BV(PC0)) #define DACCLK(LEVEL) DACOUT = (LEVEL) ? (DACIN & ~_BV(PC1)):(DACIN | _BV(PC1)) #define
Benutzt du den internen ADC? Dann musst du die Werte 0-1023 auf 0-4095 abbilden (geht wohl am besten mit "ADC * 4" (oder ADC<<2 falls der Compiler das nicht rafft))...
-
Thread
Timer1 Overflow interrupt löst nicht aus (AtMega32)
/interrupt.h> #include <avr/signal.h> #include <util/delay.h> ISR (TIMER1_OVF_vect) { PORTC ^= 1 << PC4; } ISR (__vector_default) { PORTC &= ~(1 << PC0); } void delay_ms(uint16_t delay) { uint16_t i; for (i = 0; i < delay; i++) { _delay_ms(1); } } void delay_sec
) { delay_ms(1000); } } int main (void) { DDRC = 0xFF; // Port Ausgang PORTC = 0xFF; // Port Pullups PORTC &= ~(1 << 7); delay_sec(2); PORTC ^= 1 << PC7; // timer stuff TCCR1B |= (1<<CS12)|(1<<CS10); // TCCR1B |= (1<<CTC1)|(1<<CS12)|
-
Thread
For schleife verhält sich seltsam
DDRD, &PORTD, 1<<PD5, 0, 1, 0}, // 8 {&DDRD, &PORTD, 1<<PD4, 0, 1, 0}, // 9 {&DDRC, &PORTC, 1<<PC0, 1, 1, 3}, // a --4 {&DDRC, &PORTC, 1<<PC1, 1, 1, 7}, // b --8 {&DDRC, &PORTC, 1<<PC2, 1, 1, 5}, // c --6 {&DDRC, &PORTC, 1<<PC3, 0, 1, 0}, // d {&DDRC, &
>uint8_t pwmtable_8D[32] PROGMEM = Das musst du mit pgm_read_byte() auslesen. So geht es nicht DimValue = pwmtable_8D[j];
-
Thread
AVR Stürzt ab --> interner Reset Hilfe
//Port A und D Ausgang DDRA = 0xFF; DDRD = 0x1F; // PortC als eingang alle Pull up Widerstände acktiviert DDRC = 0x00; PORTC = 0xFF; PORTD = 0xE0; Könnte es an der Init der Ausgänge liegen. PortD 7 soll der Eingang sein ???
//globale Ints aktivieren Wenn ich denn Vergleichswert erhöhe geht es ab ca. 400. Warum?
-
Thread
Bascom: Ports in einer Schleife ansprechen?!
(10) as bit i=0 Do i = i+1 Leds(i) = 1 gosub Set_Port loop until i<10 Set_Port: portc.1=leds(1) portd.5=leds(2) ...usw. return
zb. 01011101 011 ) an die Ports legen nur das ich eben leider nich nur einen Port benutze sondern portc und ein paar Ausgänge von portD. Das bit schieben von mir war nur ein Beispiel für mein Problem... Sowas würde mein Problem lösen: funktioniert nur nicht.. Schwachsinn: An.1 alias Portc.1 An.2
-
Thread
8 Pin mit einer Variable schalten
Wenn du PORTC beschreiben willst sollte auch PORTC dran stehen und nicht PORTB, ansonsten wo liegt das Problem? http://www.mikrocontroller.net/articles/Bitmanipulation
_vielleicht_ gehts so. Bin mir gerade selbst nicht mehr sicher :) "PINB0 bis PINB3 und PINC2,PINC3,PINC6 und PINC7" PORTB &= 0xF0 PORTB |= (data & 0x0F) PORTC &= 0x33 PORTC |= (data & 0xCC)
-
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