-
Thread
DMX Board geht nicht :/
dmx_buffer[24]=255; dmx_buffer[25]=255; dmx_buffer[26]=255; dmx_buffer[27]=255; PORTC |=(1<<PC5); _delay_ms(1000); dmx_buffer[24]=0; dmx_buffer[25]=0; dmx_buffer[26]=0; dmx_buffer[27]=0; PORTC &=~(1<<PC5); _delay_ms(1000); } } [/avrasm
dmx_buffer[24]=255; dmx_buffer[25]=255; dmx_buffer[26]=255; dmx_buffer[27]=255; PORTC |=(1<<PC5); _delay_ms(1000); dmx_buffer[24]=0; dmx_buffer[25]=0; dmx_buffer[26]=0; dmx_buffer[27]=0; PORTC &=~(1<<PC5); _delay_ms(1000); } } [/avrasm
-
Thread
MPLAB IDE 8.00 mit PICC LITE v9.60PL1 Problem
die LED an RC0 soll aufleuchten) #include <16F690.h> void main(void) { TRISC = 0c.0000.0000; PORTC = 0c.0000.0001; } Vielen Dank
Dachte ihr wollt die Projekt-Datei #include <p16f690.h> void main(void) { TRISC = 0b0000.0000; PORTC = 0b0000.0001; } Die .zip Datei wird grösser. Ist das normal?
-
Thread
RS232 Befehl
"m8def.dat" $crystal = 8000000 $baud = 9600 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Cls Config Pind.2 = Input Config Pind.3 = Input Config Pind.4 = Input Config Pind.5 = Input Do Debounce Pind
-
Thread
Zähler gibt falschen wert aus
CS01); sei(); while(1) { switch (time_sec_zehn) { case 1: PORTC |= (1<<PC4);break; case 2: PORTC |= (1<<PC6);break; case 3: PORTC |= (1<<PC4)|(1<<PC6);break; case 4: PORTC |= (1<<PC7);break; case 5: PORTC |= (1<<PC7)|(1<<
switch (time_sec_ein) { case 1: PORTC |= (1<<PC3);break; case 2: PORTC |= (1<<PC1);break; case 3: PORTC |= (1<<PC3)|(1<<PC1);break; case 4: PORTC |= (1<<PC0);break; case 5: PORTC |= (1<<PC0)|(1<<
-
Thread
LED-Matrix: Phantomleuchten
LED 2 PORTC = ~ADRESSES[ActiveLEDs.MIDDLE_LED][0]; PORTD = ADRESSES[ActiveLEDs.MIDDLE_LED][1]; for (uint16_t i = 0; i < (LEDBuffer[3] / 1000); i++) { _delay_us(10); }
in der Abarbeitung ein bischen Zeit dauert. Durch die sequentielle Anordnung der Befehle [C] PORTC = ~ADRESSES[ActiveLEDs.LOWER_LED][0]; PORTD = ADRESSES[ActiveLEDs.LOWER_LED][1]; ... PORTC = ~ADRESSES[ActiveLEDs.MIDDLE_LED][0]; PORTD = ADRESSES[ActiveLEDs.MIDDLE_LED]
-
Thread
Berechnungsfehler?
wirklich schlau, was das werden soll. Aber am Anfang der Schleife ist zb der Teil hier [C] PORTC |= S0|S1|S2; // H | H | H = Y7 _delay_ms(50); if (!(PINB & (1<<D_IN1))) ERR=+1; PORTC = 0x00; //reset MUX _delay_ms(50); [/C] immer gleich. Nur die Zahlenwerte
ändern sich. -> Kandidat füe eine Funktion [C] void Pulse( uint8_t Pins, uint8_t InputMask ) { PORTC |= Pins; _delay_ms(50); if (! (PINB & IputMask) ) ERR = +1; PORTC = 0x00; //reset MUX _delay_ms(50); } [/C] weil ich es gerade sehe: Ist es Absicht, dass du da
-
Thread
AVR-AtMega8 Bascom Probleme
regfile = "M8def.dat" $crystal = 1000000 $hwstack = 100 $swstack = 100 $framesize = 100 Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Output Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 End [/code] Grundschaltung: http://www.kreatives-chaos.com
-
Thread
HI-Tech Compiler
unsigned)&PORTA*8)+4; volatile bit RA5 @ ((unsigned)&PORTA*8)+5; /* Definitions for PORTC register */ volatile bit RC0 @ ((unsigned)&PORTC*8)+0; volatile bit RC1 @ ((unsigned)&PORTC*8)+1; volatile bit RC2 @ ((unsigned)&PORTC*8)+2; volatile bit RC3 @ ((unsigned)&PORTC*8)+3; volatile bit RC4 @ ((unsigned)&PORTC*8)+4; volatile bit RC5 @ ((unsigned)&PORTC*8)+5; /* Definitions for INTCON register */ volatile bit RAIF @ ((unsigned)
-
Thread
Pollin LCD bleibt schwarz!
daran nicht geändert außerder die Pinbelegung. Ich benutzte PORTD (für die Datenübertragung) und PORTC (für Enable, RS, Rest usw.). Taktgeber ist ein externer 8 MHz Quartz. Das Display macht nichts. Es bleibt nur schwarz (fehlerhafte Init?). Oder liegt es an der Verkabelung? Wie teste ich diese
benutzte, auf irgendeine Start up Time achten? Das ist meine Portbelegung: [c]#define RS PORTC_0 #define RW PORTC_1 #define Enable PORTC_2 #define CS PORTC_3 #define RES PORTC_4 #define LCD_DDR DDRD #define LCD_PORT PORTD #define LCD_PIN PIND [/c]
-
Thread
AVR Atmega 16 Inputs reagieren nicht
regfile= "m16def.dat" --------------------- Config PortA = Output Config PortB = Output Config PortC = Output Config PortD = Output --------------------- Do PortA = &B11111111 PortB = &B11111111 PortC = &B11111111 PortD = &B11111111 Loop end Leuchten alle Leds wie es sein soll.
Also im Simulator funktioniert das Programm: Config Portc = Input Config Portd = Output '--------------------------------- 'Hauptprogramm: '--------------------------------- Do If Portc.0 = 1 Then Set Portd.0 If Portc.1 = 1 Then Reset
-
Thread
Atmega8 / STK500 und PORTC
, das die RS232 bedient wird und 2 Taster eingelesen werden können ? oder Wie bekomme ich PORTC frei ? Vielen Dank im voraus
Ruhe, schliess an diesen beiden Pins nichts an (ausser der RS232 natürlich) > Wie bekomme ich PORTC frei ? Dazu müsste man erst mal wissen, worans krankt. Verkabelt ist alles richtig?
-
Thread
ATmega16 PortC - kein JTAG
Daten und PortC2-5 sind die Steuerleitungen. Auf dem DSO kann ich sehen, daß alle 4 Ausgänge von PortC um auf 5V zu steigen ca. 7µs brauchen, während alle Ausgänge der anderen Ports sofort auf 5V sind. Hat einer dafür eine Erklärung? Danke, Willi
Hallo Markus, danke. Ich hatte wirklich die Initialisierung von PortC als Ausgang gelöscht! Tschüß, Willi
-
Thread
PortC als Eingang beim Atmega8
eingelegten Gang ab. Hierbei treten aber Propleme auf, gibt es was Besonderes zu beachten wenn ich PortC als Eingang verwenden will ??? ldi r16,0 out DDRC,r16 ;damit müsste PortC doch konfiguriert sein oder muss ich noch irgendwo ein Register setzten ??? ...noch eine Fehlerquelle ? : die
. clr r17 out DDRC, r17 ldi r17,0b00111111 out PORTC,r17 ldi r17,0b00000000 out SFIOR,r17 wäre schön wenn mir jemand sagen könnte ob das soweit ok ist
-
Thread
Pin Change Interrupt PCINT0
Status-LEDs PC0, PC1, PC2, PC3 DDRC |= ((1<<DDC0)|(1<<DDC1)|(1<<DDC2)|(1<<DDC3)|(1<<DDC4)); PORTC &= ~((1<<PORTC0)|(1<<PORTC1)|(1<<PORTC2)|(1<<PORTC3)|(1<<PORTC4)); // -- Konfiguration PCINT0 Interrupt an Pin PB0, PB1 & PB2 -- DDRB &= ~((1<<DDB0)|(1<<DDB2)|(1<<DDB2)); PORTB |=
15; i++) { PORTC = i; _delay_ms(200); } sei(); //LED Sequenz beendet? Interrupts aktivieren. } [/c]
-
Thread
Aufschlagwechsel
Bit-Swapping? in C: if (PORTC & (1<<PC6) { PORTC &= ~(1<<PC6); // Pin PC6 löschen } else { PORTC |= (1<<PC6); // Pin PC6 setzen } dito für PC7... in ASM vielleicht so: SBIS PORTC,6 rjmp PC6setzen CBI PORTC,6 rjmp weiter PC6setzen: SBI PORTC,6 weiter: ... Bin in ASM nicht wirklich bewandert... Gruß Rahul
-
Thread
Zeitscheibensysteme
LED_DDR | LED_Bit; // Set PC2 as Output //LED_PORT = LED_PORT | LED_Bit;// LED aus blink = 0; PORTC = PORTC & ~LED; // LED on LED_PORT = LED_PORT & ~LED_Bit; Timer0_init (); // Timer initialisieren (ist in einem anderen Source File) sei (); // Enable global Interrupt } //---------
void Application_1s (void) { blink = ~blink; //-------------- LED blinken -- if (blink) {PORTC = PORTC | LED; } else {PORTC = PORTC & ~LED; } } Ich will das die LED (LED_Bit) 400 ms an und 900 ms aus ist. Das ganze soll aber in der 100 ms Zeitscheibe ablaufen
-
Thread
-
Thread
I2CEprom 24LC512 Page Write Bascom - TWI Experten gesucht
Serialout = Buffered , Size = 254 '**************************** Hardware-Definitionen Config Sda = Portc.1 'I2C-Pins definieren, bei Atmega 8: PortC.4 Config Scl = Portc.0 'PortC.5 bei Atmega 8 Const Eprom_write = 160 Const
Serialout = Buffered , Size = 254 '**************************** Hardware-Definitionen Config Sda = Portc.1 'I2C-Pins definieren, bei Atmega 8: PortC.4 Config Scl = Portc.0 'PortC.5 bei Atmega 8 Const Eprom_write = 160 Const
-
Thread
LCD 4x16 Problem
include <avr/interrupt.h> #include <util/delay.h> #include "defs.h" #define LCD_D4 SBIT( PORTC, 4 ) #define LCD_DDR_D4 SBIT( DDRC, 4 ) #define LCD_D5 SBIT( PORTC, 5 ) #define LCD_DDR_D5 SBIT( DDRC, 5 ) #define LCD_D6 SBIT( PORTC, 6 ) #define LCD_DDR_D6 SBIT( DDRC, 6 )
PORTD ^= ( 1 << LED4 ); _delay_ms(100); } } ISR (TIMER1_COMPA_vect) { PORTC ^= ( 1 << TRIGGER ); } [/c] Hat jemand nen Tipp für mich? VG Willy
-
Thread
Atmega Dynamische Portzuweisung in Schleife
gern in einer for-Schleife die Ports beschreiben. Also mit [c] i=0 PORTA |= (....); i=1 PORTC |= (....); i=2 PORTD |= (....); ... [/c] Der Übersichtlichkeit halber habe ich die entsprechenden Ports definiert als [c] #define CC0 PORTA #define CC1 PORTC #define CC2 PORTD ...
ich bastle gerade etwas [...] in c++ herum. [c] volatile uint8_t *portList[] = { PORTA, PORTB, PORTC, ... }; int i = 0; for(const uint8_t * &port: portList) { port = prop.getRow(i++); } [/c]
-
Thread
MOS6581/Commodore SID Timing?
dabei mit einem Atmel AVR ATMega gesteuert. Adressleitungen sind an PORTA angeschlossen, Daten an PORTC und PORTD5 ist CLK und PORTD7 ist /CS. Reset ist an VCC angeschlossen und R/W an GND. Trotzdem kommt mit dem Testprogramm kein Ton raus. Der C-Source (nur provisorisch zum testen) sieht folgendermaßen
DDRC = 0xFF; // DATA DDRD |= (1 << PIND7); // CS PORTA = 0x00; PORTC = 0x00; PORTD |= (1 << PIND7); // Initialize with /CS on. } void writeMos(uint8_t addr, uint8_t data) { PORTA = addr; PORTC = data;
-
Thread
Aus Schleife entfliehen
einen PIC 16F73 programmiert. Es funktioniert auch alles soweit das ich den Counter mit einem Taster (PORTC, 2) starten kann. Doch irgendwie schaffe ich es nicht das der Counter entweder durch einen weiteres drücken des Tasters bzw. bei erreichen der Zahlen 0000 stoppt. Der Counter wird gestartet sobald
achter" und dann wirre LED-kominationen. Danke im Vorraus Klaus M. MAIN ZEAHLEN btfss PORTC, 2 goto ZAEHLEN call Wait comf STARTEN, F ZAEHLER2 incf ziffer1, W movwf ZZZZ decfsz ZZZZ, F goto ZAEHLER2 incf ziffer2, W movwf ZZZZ decfsz ZZZZ, F
-
Thread
PIC Port I/O mit HiTech C
PIC 16F1825 mit Hi-Tech C und bin auf diesem uC blutiger Anfänger. Ich möchte eine rote LED an PORTC und eine grüne LED an PORTA kurz aufblinken lassen, der Code ist unten angehängt. Wenn ich das nur mit PORTC mache, blinkt die LED einmal kurz auf, dann Pause, alles gut. Auch alles gut, wenn ich nur
Ports des PIC. THX 4 help Cheers Detlef int k ; TRISA = 0; TRISC = 0; PORTA=0x0; PORTC=0x0; for(;;) { for(k=0;k<1000;k++) _nop(); PORTC=0xff; for(k=0;k<1000;k++) _nop(); PORTC=0x0; for(k=0;k<1000;k++) _nop(); PORTA=0xff; for(k=0;k<1000;k++) _nop(); PORTA=0x0; for
-
Thread
Servo-Signal auslesen mit Atmega 8 - wo liegt der Fehler?
If Portb.0 = 0 Then Rc_value = 1timer 1timer = 0 End If If Rc_value > 32767 Then Portc.5 = 1 Else Portc.5 = 0 End If Loop End Return [/code] Fragt bitte nicht, wieso ich den Timer nachgebaut habe, ich habe ursprünglich den Systemeigenen verwendet, doch beim Durchprobieren
Do Loop Until Portb.0 = 0 Stop Timer1 End If If Timer 1 > 1500 Then Portc.5 = 1 Else Port C.5 = 0 Loop [/code] Das ist extrem quick'n'dirty aber soll Dir nur das Prinzip aufzeigen. Gruß, Norbert
-
Thread
Probleme mit LCDUhr
#include <90s8515.h> #include <stdio.h> #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> volatile char timer; char seconds=-1; char minutes=0; char hours=0; char szTemp[16+1]; void watch(); // Timer 0 overflow interrupt service routine interrupt [TIM0
#include <90s8515.h> #include <stdio.h> #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> volatile char timer; char seconds=-1; char minutes=0; char hours=0; char szTemp[16+1]; void watch(); // Timer 0 overflow interrupt service routine interrupt [TIM0
-
Thread
A/D-Wandler ATMega8 funktioniert nicht
// Auswertung der Meßdaten if (value==0) // falls 0 -> PORTC=0b00001000; // schalte rote LED (C3) ein if (value>0 && value<1024)// falls zwischen 0 und 1024 -> PORTC=0b00010000; // schalte gelbe LED (C4) ein if (value>=1024) // falls 1024 -> PORTC=0b00100000; // schaltet grüne LED (C5) ein wartekurz(); PORTC=0x00; // schaltet LED aus wartekurz(); } }
-
Thread
ATMEGA mit externem RAM
umgehen, musst du nur die einzelnen Arbeitsschritte 'von Hand' durchgehen (nur Prinzip): PORTA, PORTC, ALE, RD, WR als Ausgang; ALE, RD, WR high [avrasm]READ: out PORTA, AddLow out PORTC, AddHigh cbi PORTE, ALE out DDRA, 0b00000000 cbi PORTD, RD nop in data, PINA sbi PORTD, RD sbi PORTE, ALE WRITE: out PORTA, AddLow out PORTC, AddHigh cbi PORTE, ALE out PORTA, data cbi PORTD, WR sbi PORTD, WR sbi PORTE, ALE[/avrasm] Mark
-
Thread
Frequenz AVR: wie testen
Hallo, gehe ich richtig in der Annahme, dass folgendes Bascom-Listing: Do Portc.0 = 0 Portc.0 = 0 Portc.0 = 1 Portc.0 = 0 Portc.0 = 0 Loop End Portc.0 für exakt einen Tak einschalten müsste? Der AVR läuft mit 16 MHz, aber die Eins im obigen Beispiel dauert komischerweise
-
Thread
LCD <----> µC | Cursor vom Display mit dem µC abfragen
;kleine Zeitschleife call portb_in ;PortB auf Input, PullUP aus bsf portc,0 ;RS auf High legen bsf portc,1 ;RW auf High legen call Pulse_E ;E-Leitung vom LCD auf 1 -> 0 movfw portb ;Portb nach Reg. Cursor movwf cursor ;sichern bcf portc,0 ;RS auf Low legen bcf portc,1 ;RW auf Low legen decf cursor,1 ;Cursor Wert minus 1 movfw cursor ;Cursor Wert ins Work bcf portc,0
-
Thread
Displaytech 161A schwarze kästchen
rcall delay5ms ldi temp1, 0b00010100 ; 4Bit / 2 Zeilen / 5x8 out PORTC, temp1 rcall lcd_enable rcall delay50us ldi temp1, 0b00010000 ; Display off out PORTC, temp1 rcall lcd_enable rcall delay50us ldi temp1, 0b10000000 ; Display Clear out PORTC, temp1 rcall lcd_enable rcall delay50us ldi temp1, 0b01100000 ; entry mode, no shift, increase out PORTC, temp1 rcall lcd_enable
-
Thread
Pin geht nicht auf 5V
Probier mal statt Ddrc = &B00000001 Config Portc.0 = output Mfg Pascal
Nimm anstatt Portc.0 = 1 mal PINC.0 = 1. Gruß avrGerd
-
Thread
Taktfrequenz des Mikrocontrollers
define F_CPU 8000000UL #endif int main() { DDRC = 0xFF; while (1) { PORTC = 0b01000000; PORTC = 0b00000000; } } -------------------------- Danke und einen schönen Tag noch
include <avr/io.h> #include <utils/delay.h> int main() { DDRC = 0xFF; while (1) { PORTC = 0b01000000; _delay_ms( 1000 ); PORTC = 0b00000000; _delay_ms( 1000 ); } } [/C] häng eine LED an Pin 6 an. Wenn die 1 Sekunde an ist und dann 1 Sekunde aus, dann läuft dein
-
Thread
Seltsames Problem mit PIC
.... Falsch abgetippt: TRISA=TRISB=TRISC=TRISD=TRISE=0; wait_zyklus(4); PORTA=PORTB=PORTC=PORTD=PORTE=0; wait_zyklus(4); TRISA=TRISB=TRISC=TRISD=TRISE=255;
: 0+1: 100k an Masse, oder 5V 2: offen P.S.: Ich habe gerade gesehen, dass zwar die LEDs an PORTC (4-6) ausgehen, aber die LED an PORTB (7) nicht !!!
-
Thread
C Befehle für schieben und rollen
ja und wie schaut das dann aus wenn ich an PortC an Pin0 0b00010000 hinausschieben möchte? thx
for(loop=0, mask=0x80; loop<8; loop++, mask=mask>>1) { if(data & mask) { PORTC |= (1<<PC0); } else { PORTC &= ~(1<<PC0); } } } [/C]
-
Thread
3,2 Zoll TFT und XMEGA32A4
// Chip Select #define LCD_RES PIN2 // RESET // macros for control lines #define CLR_RS PORTC.OUT &= ~(1<<LCD_RS); #define SET_RS PORTC.OUT |= (1<<LCD_RS); #define CLR_CS PORTC.OUT &= ~(1<<LCD_CS); #define SET_CS PORTC.OUT |= (1<<LCD_CS); #define CLR_RESET PORTC.OUT &= ~(1<<LCD_RES); #define SET_RESET PORTC.OUT |= (1<<LCD_RES); #define CLR_WR PORTC.OUT &= ~(1 << LCD_WR); #define SET_WR PORTC.OUT |= (1 << LCD_WR); #define CLR_RD PORTC.OUT &= ~(1 << LCD_RD); #define SET_RD PORTC.OUT |= (1 << LCD_RD
-
Thread
Encoder Tutorial
PIND & 1<<PD2) #define PHASE_B (PIND & 1<<PD3) #define LEDS_DDR DDRC #define LEDS PORTC // LEDs against VCC volatile int8_t enc_delta; // -128 ... 127 static int8_t last; void encode_init( void ) { int8_t new; new = 0; if( PHASE_A ) new = 3;
zur Funktion und Verdrahtung. also, wenn das ganze funktioniert wird der der Zählwert Binär an PORTC ausgegeben. dh. je nach Wert müssten die LEDS von PC0-PC7 leuchten ? ich habe an PORTC Die ANODE (+) und an GND eine gemeinsame Kathode angeschlossen. // LEDs against VCC richtig von dem Encoder
-
Thread
Sleep Mode beim ATMega16
system_state with dual led between PB2 and PB3 #define Show_Status (IO == System_State) ? (Set_Bit(PORTC, PC0)) : (Set_Bit(PORTC, PC1)) //check if trafo works. If voltage comes back to PIN1 everything is OK #define Check_Output (bit_is_set(PINC,PIN5)) ? (System_State = IO) : (System_State = NIO)
PORTB, PB0); // Ausgang wieder aus Clr_Bit(PORTC, PC0); Clr_Bit(PORTC, PC1); OCR2A = time_off; // Wecker stellen } } void init_io(void){ // init Outputs Set2Output(DDRB
-
Thread
Zeitvergleich zweier "Uhrzeiten"
0b00000001) == 0 ) { // PORTA0: Fenster geschlossen? if ( ow_array[0] < TWert ) { PORTC |= (1 << PC0); // ein } else { PORTC &= ~(1 << PC0); // aus } } else { PORTC &= ~(1 << PC0); // aus } } else { // Minuten- Check PORTC &= ~(1 << PC0); // aus } } else { // Stunden - Check PORTC &= ~(1 << PC0); // aus } // Zurücksetzen der Stunde der Endzeit if ( var_array[20] >= 24 ) { var_array[20] -= 24; } Andy
-
Thread
Mit dem ATMega32 zwei Displays betreiben?
Ich kann in der Routine aber keine zwei Enables eintragen. #ifndef LCD_PORT #define LCD_PORT PORTC #endif #define LCD_DATA0_PORT PORTC /**< port for 4bit data bit 0 */ #define LCD_DATA1_PORT PORTC /**< port for 4bit data bit 1 */ #define LCD_DATA2_PORT PORTC /**< port for 4bit data bit 2 */ #define LCD_DATA3_PORT PORTC /**< port for 4bit data bit 3 */ #define LCD_DATA0_PIN 4 /**< pin for 4bit data bit 0 */ #define LCD_DATA1_PIN 5 /**< pin for 4bit data bit 1 */ #define LCD_DATA2_PIN
-
Thread
2 Stepper merkwürdiges Verhalten
ausgebaut und versuche damit 2 Srittmotoren anzusteuen. 1. Minebea 17PKM-K320 6 Pol Anschluss (CN2) an PortC 2. J60B13AT(k.a. von wem) 6 Pol. Anschlusss (CN3) an PortD Wenn ich jetzt beide Motoren dran habe funktioniert der an PortC einwandfrei, der an PortD bewegt sich nur hin und her. Wenn ich den
interrupt.h> int main(void) { DDRD=0b00011111; DDRC=0b00011111; while (1) { int MS; MS=400; PORTC=0b00000101; PORTD=0b00000001; _delay_ms(MS); PORTC=0b00000110; PORTD=0b00000010; _delay_ms(MS); PORTC=0b00001010; PORTD=0b00000100; _delay_ms(MS); PORTC=0b00001001; PORTD=0b00001000; _delay_ms
-
Thread
Pollin Display Fragen (bezug auf "Tetris auf AtMega8")
herausgefunden: [code] inline void LCD_Write(char isData,char data) { PORTB=data; if (isData) PORTC|=(1<<LCD_A0); else PORTC&=~(1<<LCD_A0); // set bit 'LCD_E' -> write PORTC|=(1<<LCD_E); // asm volatile("nop"::); // unset bit 'LCD_E' -> stop write PORTC&=~(1<<LCD_E); }; inline char LCD_Read() { PORTC|=(1<<LCD_A0); PORTC|=(1<<LCD_RW); // perform read PORTC&=~(1<<LCD_RW);// stop read return PORTB; } [/code] Wofür machst Du manchmal diesen asm volatile("nop"::); (das wartet genau einen
-
Thread
Timer0 Assembler PIC 18 Problem
CLRF PORTA ; PortA delete CLRF TRISA ; All output CLRF ANSELA; All digital output CLRF PORTC ; PortA delete CLRF TRISC ; All output CLRF ANSELC; All digital output MOVLW B'00000111' MOVWF T0CON MOVLW B'11000010' MOVWF TMR0H MOVLW B'11110110' MOVWF TMR0L
w_copy, w [/avrasm] Ich benutze Portc als meinen "Debug- Port", um mir Sachen ausgeben zu lassen. An RC0 hängt eine LED dran. Diese leuchtet aber nicht, womit ich befürchte, dass er nicht einmal in die Interruptroutine reinspringt. Ich
-
Thread
Problem bei Stoppuhr
zehntelsekunden: push r17 push r18 push r16 add r20,r22 ;Anzeige um eins erhöhen out portc,r20 ;ausgeben pop r16 pop r18 pop r17 reti null: inc count_sekunden mov r23, count_sekunden ldi r20, 0b00000000 ; Zahl 0 ausgeben out portc,r20 ldi r16,0x00
von links an out portb,r19 add r26,r22 ;Anzeige um eins erhöhen out portc,r26 ;ausgeben reti null_sekunden2: ldi r19,0b00001011 ;4.Segment von links an out portb,r19 ldi r26, 0b00000000 ; Zahl 0 ausgeben out portc,r26 ldi r25,0x00 ;counter
-
Thread
ATXmega32A4 & MCP4018 I²C dig. Poti Problem
if(TWIC_MASTER_STATUS & (1<<TWI_MASTER_ARBLOST_bp)) { twiname->MASTER.CTRLA = 0; PORTC.DIRSET = PIN1_bm; for(uint8_t i=0;i<9;i++) { PORTC.OUTSET = PIN1_bm; _delay_us(20); PORTC.OUTCLR = PIN1_bm; _delay_us(20); } PORTC.DIRCLR = PIN1_bm;
ich verstehe es einfach nicht, dass kann doch nicht sein. Atmel Lib: Ich initialisiere: PORTC = Ausgang PORTC SDA/SCL = WiredANdPullUp (ext. Pullup ist auch vorhanden) TWI_MasterInit(&twiMaster, &TWIC, TWI_MASTER_INTLVL_HI_gc, TWI_BAUD(F_CPU, 100000)); sei(); TWI_MasterWrite(&twiMaster
-
Thread
C Verständnisfrage
Led Toggle */ void LedSet(unsigned char state) { switch (state) { case 0: PORTC = 0xff; break; case 1: PORTC = 0x00; break; default: if (PORTC = 0xff) PORTC = 0x00; else PORTC = 0xff; } } int main(void
Led Toggle */ void LedSet(unsigned char state) { switch (state) { case 0: PORTC = 0xff; break; case 1: PORTC = 0x00; break; default: if (PORTC = 0xff) PORTC = 0x00; else PORTC = 0xff; } } int main(void
-
Thread
XMEM - Mega1281 - Ganzen exterenen 64kB SRAm nutzen
hallo, bin zufällig beim can128 drüber gestolpert, aber bei deiner mcu ist es nicht anders. PORTC wird benutzt, um das höherwertige adress-byte für den externen sram zu definieren. mittels der xmm-bits kannst du nun definieren, welche bits davon verwendet werden. wenn du (wie default vermutlich
ignoriert werden (bei 0x1FFF sind diese ja unbenutzt). ergo gibt die doku an, lediglich 5 bits des PORTC zu benutzen. für den 1281: der hat wohl 8k sram == 0x0000 bis 0x2FFF. dafür müssen nur die obersten beiden bits von PORTC ignoriert werden. entsprechend 6 nutz-bits dieses ports (XMM1 gesetzt, der
-
Thread
AVR: was mit nicht benutzten Anschlüssen machen?
weglassen entstehen. Und wenn man das verstanden hat, dann weiß man dass ohne AVCC kein ADC und kein PORTC funktionieren. Wobei sich hier das verstehen auf einfaches nachlesen beschränkt. Also einfach an die RFCs halten dann klappts ;-)
maximal 0,3V von Vcc abweichen darf. Wenn man nun AVcc unbeschaltet lässt, weil man weder den ADC noch PORTC(3..0) verwenden will, ist dies nicht mehr gegeben. Was passiert dann? Gleicht der AVR selbst den Pegel aus?
-
Thread
Portbezeichnung umdefinieren in C
error: 'PortC' undeclared (first use in this function) In der avr/io.h müsste doch drinstehen was PortC ist? Zumal er ja PortC kennt. [c] #define F_CPU 8000000 #include <avr/io.h> #include <util/delay.h> //------------------------------------------------------ // Definition der Steuerleitungen
error: 'PortC' undeclared (first use in this function) > In der avr/io.h müsste doch drinstehen was PortC ist? Zumal er ja PortC > kennt. Der Compiler achtet auch auf Groß-/Kleinschreibung. Verwende PORTC usw.!
-
Thread
AVR : atmega8 akzeptiert PORT-Einstellung nicht (Bascom)
kleines, wenig komplexes Stück Code: [pre]$regfile = "m8def.dat" $crystal = 8000000 Config Portc = Output Do Portc = &B11111111 Loop End [/pre] Das Programm soll nichts anderes machen, als den kompletten Portc auf Hi zu schalten und die daran angeschlossenen LEDs zum leuchten zu bringen
hi, möglicherweise hängt es damit zusammen, dass der Portc.7 beim Mega8 nicht zur Verfügung steht und der Portc.6 dem Reset-Anschluss dient. Müsstest du vllt. dn Reset per Fuse disablen, bevor du ihm den Status Output zuweisen kannst? Versuche doch einmal
-
Thread
LCD an ATmega128 anschließen...
LCD_FUNCTION_SET 0x38 #define LCD_MODE_SET 0x06 //LCD enable/disable high/low #define LCD_ENABLE PORTC |= BIT7 //LCD enable #define LCD_DISABLE PORTC &= ~BIT7 //LCD disable //RegisterSelect (RS) #define LCD_READ_DATA PORTC |= BIT6 //Daten lesen #define LCD_READ_CMD PORTC &= ~BIT6 //Befehle
for(temp3=0;temp3<20;temp3++) { } } } } void main(void) { PORTA=0xFF; PORTC=0xFF; LCD_READ_CMD; wait();// warten bis komplette Spannung anliegt // 3 mal schalten LCD_ENABLE; wait(); LCD_DISABLE; wait(); LCD_ENABLE; wait(); LCD_DISABLE;